From 9c57f1bdb3059deebee242a2301fb6bb554ceb83 Mon Sep 17 00:00:00 2001 From: Paul Black ASUS win7 Date: Sun, 8 Jul 2018 20:23:44 -0500 Subject: [PATCH] Massively overdue commit of several months worth of random work. Mostly adding support for mappers as I needed it for my own hardware builds: -MMC1 -mapper 30 -easy NSF (still need to update for mapper verilog fix) -action53 (still need to update for mapper verilog fix) -dual port board flashing -colordreams, not sure if I actually got this working -color ninja, just a special CPLD version of colordreams for ninja boards Just started working on SNES code. slowly getting things up and working outside of main inlretro.lua script similar to how NES has been handling everything with it's own script. Able to flash v3 boards fine. v1 boards flash without errors, but still having some mapping problems where it verifies but won't boot. v2 prototype flashes most bytes but not all, seems v2 boards are much slower to output valid data.. But that may just be the manufacturer ID codes..? TODO next: -bootloader dictionary that jumps to bootloader so don't have to manually close jumper on the board. -turn on the watchdog timer for stm32 -create some sort of host timeout so reset button on programmer isn't as useful -allow firmware programing algos to be uploaded and executed from SRAM for faster code that also doesn't require specific firmware builds to support new mapers. -Finish JTAG to simplify programing NES & SNES CPLDs -Sort out swim issue with stm8s001 CICs -add SWIM support for avr --- firmware/build_avr/avr_kazzo.elf | Bin 23012 -> 27124 bytes firmware/build_avr/avr_kazzo.hex | 1098 ++++++++------ firmware/build_stm/inlretro_stm.bin | Bin 16732 -> 19292 bytes firmware/build_stm/inlretro_stm.elf | Bin 187056 -> 196888 bytes firmware/build_stm/inlretro_stm.hex | 2160 ++++++++++++++------------- firmware/build_stm/inlretro_stm.map | 602 ++++---- firmware/source/dump.c | 99 +- firmware/source/flash.c | 445 +++++- firmware/source/io.c | 6 +- firmware/source/main.c | 19 + firmware/source/nes.c | 339 ++++- firmware/source/nes.h | 6 +- firmware/source/pinport.h | 14 +- firmware/source/pinport_al.h | 219 ++- firmware/source/snes.c | 427 +----- firmware/source_stm_only/stm_init.c | 64 +- host/Makefile | 2 +- host/inlretro.exe | Bin 334793 -> 356995 bytes host/scripts/app/flash.lua | 3 +- host/scripts/app/nes.lua | 8 +- host/scripts/inlretro.lua | 323 ++-- host/scripts/nes/action53_tsop.lua | 138 +- host/scripts/nes/blank.lua | 26 + host/scripts/nes/bnrom.lua | 4 +- host/scripts/nes/cdream.lua | 236 +++ host/scripts/nes/cninja.lua | 265 ++++ host/scripts/nes/dualport.lua | 293 ++++ host/scripts/nes/easyNSF.lua | 188 +++ host/scripts/nes/mapper30.lua | 163 ++ host/scripts/nes/mmc1.lua | 281 ++++ host/scripts/nes/unrom.lua | 55 +- host/scripts/snes/v3.lua | 261 ++++ shared/shared_dict_buffer.h | 4 +- shared/shared_dict_nes.h | 5 + shared/shared_dict_pinport.h | 8 +- 35 files changed, 5314 insertions(+), 2447 deletions(-) create mode 100644 host/scripts/nes/blank.lua create mode 100644 host/scripts/nes/cdream.lua create mode 100644 host/scripts/nes/cninja.lua create mode 100644 host/scripts/nes/dualport.lua create mode 100644 host/scripts/nes/easyNSF.lua create mode 100644 host/scripts/nes/mapper30.lua create mode 100644 host/scripts/nes/mmc1.lua create mode 100644 host/scripts/snes/v3.lua diff --git a/firmware/build_avr/avr_kazzo.elf b/firmware/build_avr/avr_kazzo.elf index 63fcb88c136e2a4139156c74af8c56f2b3d179ff..fe29be5ee189636485d1c111aa0cff7c90c48dda 100644 GIT binary patch delta 9457 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 delta 5822 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 S$=z}vz(!zsp%TmkLHHkG4)W^& diff --git a/firmware/build_avr/avr_kazzo.hex b/firmware/build_avr/avr_kazzo.hex index 51257c9..3efb968 100644 --- a/firmware/build_avr/avr_kazzo.hex +++ b/firmware/build_avr/avr_kazzo.hex @@ -1,4 +1,4 @@ -:100000000C9476000C94030F0C9493000C949300C2 +:100000000C9476000C9448160C9493000C94930076 :100010000C9493000C9493000C9493000C94930014 :100020000C9493000C9493000C9493000C94930004 :100030000C9493000C9493000C9493000C949300F4 @@ -13,10 +13,10 @@ :1000C00049006E00660069006E00690074006500FA :1000D0004E00650073004C006900760065007300F7 :1000E0002E0063006F006D000403090411241FBE7D -:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0E4E996 -:10010000F0E202C005900D92A630B107D9F723E0C6 +:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0EEE194 +:10010000FFE202C005900D92A630B107D9F723E0B7 :10011000A6E0B1E001C01D92AD3DB207E1F70E943B -:1001200017100C9448100C9400000F931F93CF935A +:100120005C170C948D170C9400000F931F93CF93C2 :10013000DF93EC01FB01D9010091490110914A01C3 :10014000888187FF09C08E818C93442399F00481B4 :10015000158180E883831DC08FEF8C938E818093FF @@ -29,13 +29,13 @@ :1001C0006503F09166030480F581E02D8D818183C4 :1001D000E0916503F091660387818E5F8783C80194 :1001E000DF91CF911F910F910895803D11F41C92E2 -:1001F000CCCF8FEF8C9380E10E942D09C6CFE09188 +:1001F000CCCF8FEF8C9380E10E946C10C6CFE09142 :100200002101F09122018381811106C0F0936603E0 :10021000E093650380E9B8CF883969F7E8CFE5E571 :10022000F1E08FEF819391E0E536F907D9F78093FC :100230004801809327018093470180932601809392 :10024000380180931401809337018093130181E07A -:100250000C942D09CF93DF93FC0150E0CA01820F6B +:100250000C946C10CF93DF93FC0150E0CA01820F25 :10026000911D4197E4F52223E1F183818F3FD9F578 :1002700082818F3FD1F5DA01AB5ABE4FED0180E0AC :1002800099919F3FA1F58F5F2813FACF6283138264 @@ -83,442 +83,674 @@ :10052000920769F021E08432920761F021E085337F :10053000920759F021E08131920769F7DBCF84E21D :1005400091E0089585E391E0089581E191E00895B7 -:100550001F93CF93DF930E943309823D09F071C04E +:100550001F93CF93DF930E947210823D09F071C008 :100560000E9459028093060185E491E09093220154 -:10057000809321010E943309823DA1F4D0910601AC +:10057000809321010E947210823DA1F4D091060166 :100580008091210190912201C1E0CD1708F45FC054 :10059000909322018093210120E8FC01238380EDC8 -:1005A0000E942D090E943309823F41F480EF0E948E -:1005B0002D09E0912101F091220113820E9433095B +:1005A0000E946C100E947210823F41F480EF0E9402 +:1005B0006C10E0912101F091220113820E947210CF :1005C000C82F803DE1F48091210190912201FC012E :1005D00023812038A1F4609106010E94700290935B :1005E000220180932101FC011782C3830E943F03F3 :1005F000E0912101F0912201882371F183830E940F -:100600003309182F803FC9F4C0912101D0912201F4 +:100600007210182F803FC9F4C0912101D0912201AE :100610008B81883991F460910601CE010E947002AD :100620009093220180932101FC0113821B83CE0150 -:100630000E941D058823C9F08B83DF91CF911F9104 -:1006400008950E943309823F09F094CF89CF6D2F1E +:100630000E94300A8823C9F08B83DF91CF911F91EC +:1006400008950E947210823F09F094CF89CF6D2FD8 :100650000E947002CF5F99CF208580819181820FA7 :10066000911D9183808388EDC9CF84EF8B8328858A -:1006700088819981820F911D99838883DECF0F93A2 -:10068000CF93DF93EC01688179818985823111F103 -:1006900030F4803169F08131A1F083EC05C0833101 -:1006A000D9F08431D1F780E0DF91CF910F91089597 -:1006B00060680FEF2E814A818C819D810E949C0889 -:1006C00007C00FEF2E814A818C819D810E94D30843 -:1006D0008F83E9CF6066EDCF8FEF84B9CB01880FB0 -:1006E000892F881F990B919585B95F9A5F9814B8E7 -:1006F00060680FEF2E814A818C819D810E94600C81 -:10070000E7CF7F928F929F92AF92BF92CF92DF926C -:10071000EF92FF920F931F93CF93DF936A015901DA -:10072000DA011796CC91D0E0E62EF12CFE2CEE24C7 -:10073000D60116968C91169790E08C179D0788F439 -:100740001796CC9380E0DF91CF911F910F91FF908E -:10075000EF90DF90CF90BF90AF909F908F907F9061 -:1007600008956AEA85E595E5F501099565E58AEA62 -:100770009AE2F501099560EA85E595E5F5010995A7 -:10078000CE0199274C018E289F28D6011496ED9111 -:10079000FC911597E80FF91F6081C401F5010995D7 -:1007A0000E94E40DC401F8010995782EC401F801F6 -:1007B00009957812F5CF2196BBCF7F928F929F92A9 -:1007C000AF92BF92CF92DF92EF92FF920F931F935F -:1007D000CF93DF936A015901DA011796CC91D0E0EB -:1007E000E62EF12CFE2CEE24D60116968C9116974F -:1007F00090E08C179D0788F41796CC9380E0DF91EA -:10080000CF911F910F91FF90EF90DF90CF90BF900D -:10081000AF909F908F907F9008956AEA85E595E16B -:10082000F501099565E58AEA9AE0F501099560EA1E -:1008300085E595E1F5010995CE0199274C018E28B2 -:100840009F28D6011496ED91FC911597E80FF91F9A -:100850006081C401F50109950E94E40DC401F8010D -:100860000995782EC401F80109957812F5CF2196E3 -:10087000BBCF4F925F926F927F928F929F92AF9277 -:10088000BF92CF92DF92EF92FF920F931F93CF937D -:10089000DF93662E7A01E901DA0117965C90852CC8 -:1008A000912CA8955898000000000000000000005E -:1008B0000000000000006AEA8AEA9AE0F90109955E -:1008C00065E585E595E0FE01099560E28AEA9AE032 -:1008D000FE010995712C762C6624D70116968C9111 -:1008E000169790E08815990520F517965C9260E9B7 -:1008F00080E090E0FE01099560E080E090E0FE017C -:10090000099560EF80E090E0FE010995589A80E03B -:10091000DF91CF911F910F91FF90EF90DF90CF90DB -:10092000BF90AF909F908F907F906F905F904F900F -:10093000089580EA0E94530CC52CD12C5601A6289C -:10094000B728D7011496ED91FC911597EC0DFD1D7C -:100950006081C501FE010995589A00000000000061 -:1009600000000000000000000000A8950E94E40DB7 -:10097000C501F8010995589800000000000000002A -:100980000000000000000000D7011496ED91FC91DA -:100990001597EC0DFD1D40808415C1F0589A00009C -:1009A0000000000000000000000000000000482ED1 -:1009B000C501F8010995589848121BC000000000B5 -:1009C000000000000000000000000000D7011496A5 -:1009D0008D919C911597C80ED91EF6018081481201 -:1009E00029C05394FFEF8F1A9F0A5198599A59982A -:1009F00074CF0000000000000000000000000000B4 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000589A00000000E4 -:100A2000000000000000000000000000C501F80107 -:100A30000995BDCF519A599A50CF0F931F93AC018E -:100A4000FC01608171819185923159F030F49031CF -:100A500061F0913199F083EC05C09331B9F0943194 -:100A6000D1F780E01F910F910895606807ED17E0BE -:100A700028EC37E080E00E948103F3CF0FEF17E00E -:100A800023E138E080E00E94DD03EBCF8FEF84B9F3 -:100A9000CB01880F892F881F990B919585B95F9A93 -:100AA0005F9814B8606800E11CE021E23CE080E05F -:100AB0000E943904D6CF14B88FEF85B93F9A479872 -:100AC00081B911B882B914B885B914B885B9389804 -:100AD000409A3998419A3A98429A3C98449A3D985B -:100AE000459A3E98469A53985B9A55985D9A3B98DA -:100AF000439A3F98479A57985F9A509858985198B8 -:100B0000599A08950E945B05399A419A389A4098FB -:100B10003A9A429A3C9A449A3D9A459A14B88FEF71 -:100B200085B914B885B914B885B93F9A479881B981 -:100B300012B884B915B8479A479814B808950E9416 -:100B40005B05399A419A3C9A449A3D9A459A589A3B -:100B5000509A14B88FEF85B914B885B914B885B90F -:100B60003F9A479881B912B884B915B8479A4798FF -:100B700014B814B885B9579A5F9884B915B85F9AB4 -:100B80005F9814B80895823081F0833061F081302D -:100B9000A1F40898109A1092B20380E290E090932A -:100BA000B1038093B00380E008955098589A88E08C -:100BB0008093B20389E290E0F2CF87E90895813013 -:100BC00049F414B88FEF85B9579A5F980E94580678 -:100BD00080E0089588E908955898509A000089B1F6 -:100BE0005098589880FD22C05098589A59B149B1F0 -:100BF000000039B10000000029B100000000000031 -:100C000099B1000000000000000089B15098589888 -:100C100050FD0EC040FD0EC030FD0EC020FD0EC0C8 -:100C200090FD0EC080FD0EC080EE089580EF089507 -:100C300080E0089581E0089583E0089586E00895B6 -:100C40008AE008958FE008950F931F93CF93C82FE4 -:100C5000842F8901C230F9F030F4CC2389F0C130FF -:100C6000B1F0C6E90FC0C430F1F0C0F0C038C9F728 -:100C700081E0F90180830E94EC05F801818309C0BD -:100C80000E945B058C2FCF911F910F9108950E94B8 -:100C90008205C0E0F7CF0E949F05FBCFCF911F9147 -:100CA0000F910C94C305CF911F910F910C94DF0508 -:100CB000109210018FEF84B915B85F9A5F9814B83D -:100CC0005098589A80E88093680310927603E7E77B -:100CD000F3E0119283E0E739F807D9F708956091BE -:100CE0007603813109F441C0109210019FEF94B94D -:100CF0009091100195B95F9A5F9814B820E070E068 -:100D00003FEF8032C9F4E72FF0E0E958FC4F408113 -:100D100050E0022E02C0559547950A94E2F740FF35 -:100D200028C092E034B995B95F9A5F9814B82F5FE4 -:100D3000283011F47F5F20E0492F446034B945B971 -:100D40005F9A5F9814B8615034B995B95F9A5F980B -:100D500014B86111D6CF909310014093230134B998 -:100D600015B85F9A5F9814B8089592E090931001B7 -:100D7000BDCF90E0D7CF0F931F93CF93DF934091D8 -:100D8000760310917703813109F461C0109210014C -:100D90009FEF94B99091100195B95F9A5F9814B83C -:100DA00020E030E05FEFA1E0B0E0803281F4E12F9D -:100DB000F0E0022E02C0F595E7950A94E2F7E0FF15 -:100DC0004AC0916054B995B95F9A5F9814B860327F -:100DD000B1F4211105C0E32FF0E0E958FC4F108277 -:100DE000489B0DC0E32FF0E0E958FC4F7081ED0106 -:100DF000022E01C0CC0F0A94EAF77C2B7083792F66 -:100E0000746054B975B95F9A5F9814B8415054B979 -:100E100095B95F9A5F9814B82F5F283039F43F5F17 -:100E2000E32FF0E0E958FC4F108120E04111BDCFE5 -:100E300090931001709323018FEF84B915B85F9AD6 -:100E40005F9814B8DF91CF911F910F91089591E0B1 -:100E5000909310019DCF9E7FB5CF8091680383381A -:100E600001F5809169038630A9F188F4823019F187 -:100E700020F48130C9F08EEE12C0833011F184303D -:100E8000D1F781E88093680360E281E11FC0883078 -:100E900059F128F1803831F08F3F69F780EF809366 -:100EA000680308950C94580681E88093680380E2F3 -:100EB0000E946F060DC081E88093680360E080E2C5 -:100EC00005C081E88093680360E280E10E94BB0670 -:100ED00082E8E5CF81E88093680360E2F0CF81E8A3 -:100EE0008093680380E1E4CF81E88093680381E127 -:100EF000DFCFCF93DF93E901843061F138F48230A2 -:100F0000E1F008F58130A1F087E80FC0873039F1B2 -:100F100028F48530C9F74093760306C0883021F164 -:100F2000803891F70E94580680E0DF91CF910895B4 -:100F30009091690399838883F7CF4093690383E88D -:100F400080936803F1CF4093690383E8809368033B -:100F50000E942D0780916803898381E0ECCF409344 -:100F6000770350937803E0CF809177038983809152 -:100F700078038A83809179038B8380917A038C83B1 -:100F800080917B038D8380917C038E8386E0D3CF19 -:100F900082B98FEF84B995B9479A479814B884B944 -:100FA00065B9509A58985098589A14B8089582B9CB -:100FB0002FEF24B995B9479A479814B8409A97FDEE -:100FC0004198000000000000000083B14098419A61 -:100FD00008955098589882B92FEF24B995B9479A37 -:100FE000479814B8429824B965B9409A97FD41983A -:100FF000000000004098419A429A14B80895811563 -:1010000020E2920708F4906882B98FEF84B995B90D -:10101000479A479814B84498000000000000000068 -:1010200083B1449A0895811520E2920708F49068EC -:1010300082B98FEF84B995B9479A479814B884B9A3 -:1010400065B9000045980000459A14B808958FEFDF -:1010500084B994E095B9479A479814B829B1207299 -:1010600030E084B988E085B9479A479814B889B1C7 -:10107000807290E041E02115310509F040E061E027 -:10108000009709F060E0442311F0611116C051E0AF -:10109000232B09F450E021E0892B09F420E05523AB -:1010A00011F021110CC0662311F051110AC0442324 -:1010B00011F0211108C08FEF089580E1089581E1BA -:1010C000089582E1089583E108950F931F93CF93CC -:1010D000C82FCA018901C23001F130F4CC2391F04C -:1010E000C130B9F0C0EA10C0C238D1F0C338F1F055 -:1010F000C138C1F721E0F80120830E94D707F80129 -:10110000818309C00E94C8078C2FCF911F910F9136 -:1011100008950E941308C0E0F7CF0E94E907FBCFB3 -:1011200021E0F80120830E94FF07E9CF81E0F90167 -:1011300080830E942708E3CFEF92FF920F93CF9313 -:10114000DF9300D01F92CDB7DEB77C018FEF84B95B -:1011500065B9479A479814B8409A67FD419842B9D3 -:1011600080E0011117C00000000093B1F701E80F03 -:10117000F11D90834F5F42B98F5F281790F7409819 -:10118000419A0F900F900F90DF91CF910F91FF90A8 -:10119000EF9008952B834A8389830E94E40D89810F -:1011A0004A812B81E2CFEF92FF920F93CF93DF938F -:1011B00000D01F92CDB7DEB77C01603208F46068C2 -:1011C0008FEF84B965B9479A479814B8449842B9E3 -:1011D00080E0011116C00000000093B1F701E80F94 -:1011E000F11D90834F5F42B98F5F281790F7449AA3 -:1011F0000F900F900F90DF91CF910F91FF90EF9094 -:1012000008952B834A8389830E94E40D89814A8152 -:101210002B81E3CFCF93DF93FB01DC0112962C915E -:10122000222329F0203479F082ED808308C01082D7 -:10123000A0910201B0910301EC018C818C93CF014C -:10124000DF91CF910895108281E08183A091020106 -:10125000B09103018C918283F2CFE0910201F09171 -:10126000030180830895E0910201F09103018081E0 -:1012700008950F931F93D901082F10E0083111052D -:1012800008F0C2C2F801E95BF64F0C9442108109E4 -:101290005F09BC09170A630AAF0AFB0AA60BAB0B6E -:1012A000B00BB30BB70BBA0BC20BCA0BCE0BD10BE7 -:1012B000D50BDE0BE50BE90BF10BF80BFC0B463104 -:1012C000510508F0A3C2FA01E859F64F0C944210F8 -:1012D0007E09840988098C099009940998099C0958 -:1012E000A009A409A809AC09B009B409060C060CA8 -:1012F000060C060C060C060C060CB8093898409A29 -:1013000080E01F910F9108953998419A80E0F9CFBC -:101310003A98429A80E0F5CF3B98439A80E0F1CF2B -:101320003C98449A80E0EDCF3D98459A80E0E9CF23 -:101330003E98469A80E0E5CF3F98479A80E0E1CF1B -:101340005098589A80E0DDCF5198599A80E0D9CFD3 -:1013500053985B9A80E0D5CF55985D9A80E0D1CFC5 -:1013600056985E9A80E0CDCF57985F9A80E0C9CFBB -:101370005098589A80E0C5CF4631510508F048C2D0 -:10138000FA01EB53F64F0C944210DB09DF09E30935 -:10139000E709EB09EF09F309F709FB09FF09030A5C -:1013A000070A0B0A0F0A080C080C080C080C080C9A -:1013B000080C080C130A3898409880E0A2CF39989E -:1013C000419880E09ECF3A98429880E09ACF3B982F -:1013D000439880E096CF3C98449880E092CF3D9827 -:1013E000459880E08ECF3E98469880E08ACF3F981F -:1013F000479880E086CF5098589880E082CF5198E7 -:10140000599880E07ECF53985B9880E07ACF5598CA -:101410005D9880E076CF56985E9880E072CF5798BE -:101420005F9880E06ECF5098589880E06ACF463140 -:10143000510508F0EFC1FA01E05EF54F0C9442103F -:10144000360A390A3C0A3F0A420A450A480A4B0A48 -:101450004E0A510A540A570A5A0A5D0A0A0C0A0C23 -:101460000A0C0A0C0A0C0A0C0A0C600A389A80E072 -:1014700048CF399A80E045CF3A9A80E042CF3B9AF4 -:1014800080E03FCF3C9A80E03CCF3D9A80E039CF6E -:101490003E9A80E036CF3F9A80E033CF509A80E08A -:1014A00030CF519A80E02DCF539A80E02ACF559AC1 -:1014B00080E027CF569A80E024CF579A80E021CF52 -:1014C000509A80E01ECF4631510508F0A5C1FA01BF -:1014D000E459F54F0C944210820A850A880A8B0A57 -:1014E0008E0A910A940A970A9A0A9D0AA00AA30AE8 -:1014F000A60AA90A0C0C0C0C0C0C0C0C0C0C0C0CF9 -:101500000C0CAC0A409880E0FCCE419880E0F9CE0B -:10151000429880E0F6CE439880E0F3CE449880E095 -:10152000F0CE459880E0EDCE469880E0EACE479830 -:1015300080E0E7CE589880E0E4CE599880E0E1CE94 -:101540005B9880E0DECE5D9880E0DBCE5E9880E048 -:10155000D8CE5F9880E0D5CE589880E0D2CE463184 -:10156000510508F05BC1FA01E854F54F0C944210A4 -:10157000CE0AD10AD40AD70ADA0ADD0AE00AE30A57 -:10158000E60AE90AEC0AEF0AF20AF50A0E0C0E0C5A -:101590000E0C0E0C0E0C0E0C0E0CF80A409A80E08D -:1015A000B0CE419A80E0ADCE429A80E0AACE439A76 -:1015B00080E0A7CE449A80E0A4CE459A80E0A1CEF8 -:1015C000469A80E09ECE479A80E09BCE589A80E073 -:1015D00098CE599A80E095CE5B9A80E092CE5D9A43 -:1015E00080E08FCE5E9A80E08CCE5F9A80E089CEDC -:1015F000589A80E086CE82E08C934631510508F0FF -:10160000A2C0FA01EA5FF44F0C9442101C0B250BA8 -:101610002E0B370B400B490B520B5B0B640B6D0B06 -:10162000760B7F0B880B910BA30BA30BA30BA30BC8 -:10163000A30BA30BA30B9A0B86B1817011968C930D -:10164000119712961C9280E05CCE86B1827090E079 -:1016500012969C938E93119780E053CE86B184703E -:1016600090E012969C938E93119780E04ACE86B1BB -:10167000887090E012969C938E93119780E041CEF3 -:1016800086B1807190E012969C938E93119780E0C2 -:1016900038CE86B1807290E012969C938E9311970B -:1016A00080E02FCE86B1807490E012969C938E934A -:1016B000119780E026CE86B1807890E012969C93B8 -:1016C0008E93119780E01DCE89B1817011968C9315 -:1016D000119712961C9280E014CE89B1827090E02E -:1016E00012969C938E93119780E00BCE89B18870EF -:1016F00090E012969C938E93119780E002CE89B170 -:10170000807290E012969C938E93119780E0F9CDB1 -:1017100089B1807490E012969C938E93119780E02B -:10172000F0CD89B1807890E012969C938E931197BA -:1017300080E0E7CD89B1817011968C931197129654 -:101740001C9280E0DECD1C928DE8DBCD14B88FEFCB -:1017500085B980E0D6CD14B88FEF85B980E0D1CDC2 -:1017600014B880E0CECD8FEF84B980E0CACD45B902 -:1017700080E0C7CD83B111968C93119781E08C9353 -:1017800080E0BFCD14B88FEF85B93F9A479881B9F3 -:1017900080E0B7CD8FEF82B980E0B3CD11B880E0A3 -:1017A000B0CD8FEF81B980E0ACCD42B98FEF84B975 -:1017B00055B9479A479814B880E0A3CD14B88FEF75 -:1017C00085B9579A5F9880E09CCD57985F9A80E0E2 -:1017D00098CD8FEF84B945B95F9A5F9814B880E0CF -:1017E00090CD14B88FEF85B9579A5F9880E089CD76 -:1017F00057985F9A80E085CD8FEF84B945B95F9A9D -:101800005F9814B880E07DCD8CE87BCD8DE879CDF4 -:101810008DE877CD8DE875CD8DE873CD8DE871CDF0 -:1018200082B98FEF84B995B9479A479814B841980F -:101830004498000000000000000083B1449A419ADF -:10184000089582B98FEF84B995B9479A479814B82B -:1018500084B965B945984198000000000000000077 -:10186000459A419A14B80895CF93DF93952FE901D3 -:10187000813099F020F0823059F08AEA06C09FEF5B -:1018800094B945B95F9A5F9814B8DF91CF910895E4 -:10189000842F0E94210C80E0F8CF8883842F0E943F -:1018A000100C8983F8CF9FEF94B985B9459841987A -:1018B0000000000000000000459A419A14B8089505 -:1018C000EF92FF920F93CF93DF9300D01F92CDB78B -:1018D000DEB77C018FEF84B965B9479A479814B891 -:1018E0004498419842B980E0011119C000000000FD -:1018F0000000000093B1F701E80FF11D90834F5FE6 -:1019000042B98F5F281780F7449A419A0F900F9041 -:101910000F90DF91CF910F91FF90EF9008952B835F -:101920004A8389830E94E40D000000000000898141 -:101930004A812B81DFCF880F991F880F991F20E0E4 -:1019400030E02817390709F40895000000002F5FE0 -:101950003F4FF7CF20E030E02817390709F408950A -:10196000000000002F5F3F4FF7CFCF93DF9380E160 -:1019700090E00E949B0CC4E0D0E084EF91E00E94D4 -:101980009B0C84EF91E00E949B0C2197B1F7C4E07F -:10199000D0E08AEF90E00E949B0C8AEF90E00E94DA -:1019A0009B0C2197B1F7DF91CF91089580E190E0F2 -:1019B0000C949B0CCF93DF931F92CDB7DEB7F90148 -:1019C000813171F038F48130C1F078F08230C9F0A3 -:1019D00082E80FC08132A9F0823299F08231C1F7DA -:1019E00082E08083128211820AC089830E94B50C32 -:1019F00089810F90DF91CF9108950E94D60C80E0ED -:101A0000F8CF81E080831182FACF482F90E0982FA1 -:101A1000882720E0411103C0211180680895209596 -:101A20003FEF340F4323F6CF80E090E0089580E04D -:101A3000089560E070E0CB010895CF93DF931F928B -:101A4000CDB7DEB7DC018FEF80930701109208015C -:101A500087E091E09093C2038093C10316968C9126 -:101A6000169789831196EC9111974E2F50E0FA0149 -:101A70003197E930F10508F07DC0EF5BF24F0C942F -:101A800042104A0D5A0D680D760DA00DBA0DB10D1C -:101A9000840D920D14964D915C91159728E031E0DC -:101AA00013966C91139712968C910E94390980932A -:101AB000070152C014964D915C91159728E031E0D2 -:101AC00013966C91139712968C910E942406EFCF77 -:101AD00014964D915C91159728E031E013966C9126 -:101AE000139712968C910E946508E1CF14964D9140 -:101AF0005C91159728E031E013966C91139712963C -:101B00008C910E94340CD3CF14964D915C91159713 -:101B100028E031E013966C91139712968C910E94F5 -:101B2000DA0CC5CF14964D915C91159728E031E001 -:101B300013966C91139712968C910E947907B7CFE8 -:101B4000AE014F5F5F4F67E071E0CD010E94790108 -:101B50009093C2038093C10389810F90DF91CF914D -:101B60000895AE014F5F5F4F67E071E0CD010E94C5 -:101B70000A09EECF80E89BCFE0916503F091660300 -:101B8000278144815581322F360F231312C0E091F3 -:101B90006503F09166038781860F87838091340106 -:101BA000861B8093340181110DC088E9838381E015 -:101BB0000895FC017191CF01FA01E20FF11D7083CC -:101BC0002F5FE3CF80E00895CF93DF936091C3034D -:101BD000635067FD91C08091C003CCE0D0E0C81B8A -:101BE000D109C953DC4F8091BF038D3209F0CFC0BA -:101BF000683009F07FC083EC8093B3038AE580935B -:101C0000050110920F018881807679F0CE010E9443 -:101C10001D0D8F3F09F466C09F81911169C09E819F -:101C2000981708F065C0892F63C02A811092BC0301 -:101C3000998191110AC01092BD032CEB33E082E030 -:101C40003093C2032093C103E7CF953029F420934A -:101C5000C4032CEB33E0F4CF963099F59B8191309F -:101C600059F48EE890E09093C2038093C10382E11F -:101C700090E490930F01D0CF923019F48CE790E06C -:101C8000F2CF9330A9F7211108C088EE90E090932D -:101C9000C2038093C10384E0EBCF213041F48EEB8B -:101CA00090E09093C2038093C1038AE2E1CF223097 -:101CB000F9F680EA90E09093C2038093C1038EE12D -:101CC000D7CF983059F0993019F42093C603C1CF7B -:101CD00081E09A3009F4BDCF80E0BBCF26EC33E041 -:101CE00081E0AECF988197FD8E8190E890930F01AF -:101CF000809304011092C3038091050184FF3AC0D0 -:101D0000809104018F3FB1F1C82F893008F0C8E0FD -:101D10008C1B809304018091B30398E889278093FA -:101D2000B303CC23D1F08091C1039091C2032091E1 -:101D30000F0126FF3FC0A4EBB3E0FC012C2F349130 -:101D40003D9331962150D9F701962FEF2C0F820F3A -:101D5000911D9093C2038093C1036C2F84EB93E099 -:101D60000E94FF0ECC5FCC3019F08FEF80930401FE -:101D7000C093050184E199B1947131F48150D9F790 -:101D80001092C4031092BE03DF91CF910895809109 -:101D90000F0187FFAFCFCE010E94BC0D8F3F21F412 -:101DA0008EE180930501A6CF882309F4A3CF10927A -:101DB0000401A0CFE4EBF3E0DC012C2F3D91319343 -:101DC0002150E1F7C1CFE9E6F0E0808182608083B5 -:101DD000E89A0895A82FB92F80E090E041E050EAFA -:101DE000609530E009C02D9182279795879510F076 -:101DF00084279527305EC8F36F5FA8F30895EADF64 -:101E00008D939D930895CF93CFB7CF93DF93C395D1 -:101E10004C9BE9F74C9B0BC04C9B09C04C9B07C0EB -:101E20004C9B05C04C9B03C04C9B01C089C06F9369 -:101E3000C091C003DD27C953DC4F2F9365E54C9B50 -:101E400003C02F916F91E6CF0F931F934F9320E024 -:101E500040E15F9309B1047104FB27F93F9350E01F -:101E60003BE039C0147140642F77012F5F5F1EC0C3 -:101E7000406819B114712F7752501FC0406409B1E6 -:101E80002F770471D1F15F5F00C023C0406219B1A8 -:101E90002F77147191F15F5F00C025C00471102786 -:101EA000515012F45D5F0000115027952C3F19B17D -:101EB000C8F614710127015027952C3FC8F6422718 -:101EC000499309B1047110274F73115027952C3F86 -:101ED000A8F64695469519B1147179F0012701507D -:101EE00027952C3F98F66B5A60F3315009B1B0F644 -:101EF00000C011E01CBB002717C03B503195C31B2D -:101F0000D04011E01CBB0881033CF9F00B34E9F030 -:101F10002091BE031981110F1213EDCF093651F133 -:101F20000D3211F0013E39F70093C5033F915F91E7 -:101F30004F911F910F912F916F91CCB3C0FD67CF3F -:101F4000DF91CF91CFBFCF9118952091C503222368 -:101F500069F31091C303112339F534303AF130930A -:101F6000C3032093BF031091C0033BE0311B3093A8 -:101F7000C0031CC00091C3030130B4F40AE53091E2 -:101F8000050134FD14C000930501C3EBD3E013C079 -:101F9000052710E000C000000BB91AC0052710E0AB -:101FA000221F1DC010E021C04AE502C032ED432FC0 -:101FB000C4E1D0E032E01AB114615C9A0BB11AB9F5 -:101FC00054E120E865E320FF05270BB92795179515 -:101FD0001C3FF0F66695B8F7B1F720FF05270BB95F -:101FE000279517951C3FD0F62795179517FF0527BE -:101FF00000001C3F0BB9B0F629913A9519F70B7EFA -:102000001091C403110FC651D0400BB911F01093B9 -:10201000BE0311E01CBB00611AB11B7E402F4B7E3A -:1020200054E05A95F1F70BB91AB94BB97FCF9EE03E -:1020300088E10FB6F894A895809360000FBE909346 -:1020400060000E94E30E549A80E0815099F4549805 -:1020500078940E945B0580EF80936803A8950E94A6 -:10206000E40D0E94A80280916803803FB9F30E94AA -:102070002D07F4CFA895EFE9FFE03197F1F700C005 -:102080000000E3CFEE0FFF1F0590F491E02D0994BF -:04209000F894FFCFF2 -:0620940065019703FF5AED +:1006700088819981820F911D99838883DECFEF92C3 +:10068000FF920F931F93CF93DF93EC01E880F980E3 +:100690001E2D8985823109F4F8C068F4803191F00B +:1006A000813109F490C083ECDF91CF911F910F91BC +:1006B000FF90EF900895833109F4EAC0843199F7EF +:1006C00080E0F2CF8D85813091F441E060E180E0FF +:1006D00090E80E94D60FB70186E0769567958A95D7 +:1006E000E1F76F7040E080E090EE0E94D60F8D85BC +:1006F0008330A9F41E2D1F7B6881798106E07695F1 +:1007000067950A95E1F7CB0199278D589B410E9487 +:100710008C0E612F60680FEF2E814A8141C08E31AF +:1007200061F41E2D1F7B68817981B6E0769567950F +:10073000BA95E1F780E090ECEACF823211F08B308D +:1007400069F468817981660F672F661F770B719551 +:10075000CB0199278C5691090E948C0E8D858C3186 +:10076000B1F408811981000F012F001F110B1195A1 +:1007700061E880E090E50E948C0E602F80E090E8B8 +:100780000E948C0E60E080E090E50E948C0E8D85CA +:100790001E2D8F3151F010680FEF2E814A81612F8D +:1007A0008C819D810E942D0F6EC01F78106868811A +:1007B0007981E4E076956795EA95E1F780E090E548 +:1007C0000E948C0EE9CF8D85811109C00FEF2E811B +:1007D0004A816E2D8C819D810E94650F8F838D854E +:1007E0008B30C1F46881798155E0769567955A958B +:1007F000E1F76295607F8FEF9FEF0E948C0E1E2DB8 +:100800001F710FEF2E814A81612F8C819D810E9483 +:10081000650F8F838D858E3FA9F46881798145E0CE +:10082000769567954A95E1F78FEF9FE30E94B60EA4 +:100830001F710FEF2E814A81612F8C819D810E9453 +:100840009D0F8F838D85813009F03ACFE880F98044 +:1008500034E0F694E7943A95E1F741E060E180E016 +:1008600090E80E94D60F6E2D6F7140E080E090EA14 +:100870000E94D60F612F6F700FEF2E814A818C81FD +:100880009D810E94650F8F831BCF6E2D606643CFC5 +:100890008FEF84B9C701880F892F881F990B919515 +:1008A00085B95F9A5F9814B86E2D60680FEF2E813E +:1008B0004A818C819D810E94A513E5CF3F924F9282 +:1008C0005F926F927F928F929F92AF92BF92CF92E0 +:1008D000DF92EF92FF920F931F93CF93DF934A0122 +:1008E0003901D8011796CC91D0E0462E512C542CCA +:1008F0004424D80116968C91169790E08C179D078A +:10090000A8F41796CC9380E0DF91CF911F910F91BF +:10091000FF90EF90DF90CF90BF90AF909F908F901F +:100920007F906F905F904F903F9008956AEAC40166 +:10093000F701099565E5C301F701099560EAC4016E +:10094000F7010995CE0199275C01A428B528D801A3 +:100950001496ED91FC911597E80FF91F6081C50180 +:10096000F70109950E942915C501F6010995382E50 +:10097000C501F60109953812F5CF2196BACF2F920D +:100980003F924F925F926F927F928F929F92AF921F +:10099000BF92CF92DF92EF92FF920F931F93CF936C +:1009A000DF93CDB7DEB727970FB6F894DEBF0FBE43 +:1009B000CDBF582E4A013C832B831F830E83D80161 +:1009C00017964C90042D10E070E0F62FEE27FA8376 +:1009D000E983252C312CFDE82F1AFBE13F0AAE817B +:1009E000BF8116968C91169790E080179107E0F4DE +:1009F00017964C9280E027960FB6F894DEBF0FBE94 +:100A0000CDBFDF91CF911F910F91FF90EF90DF90BD +:100A1000CF90BF90AF909F908F907F906F905F909E +:100A20004F903F902F90089560E083E794EE0E94EE +:100A30008C0E6AEAC401F701099565E58B819C81FA +:100A4000F701099560EAC401F7010995652DC10117 +:100A50000E948C0E642C712CA980BA80A628B7281D +:100A6000AE81BF811496ED91FC911597E60DF71DAF +:100A70006081C501F70109950E942915C501F6019C +:100A80000995282FC5012D83F60109952D8128137D +:100A9000F3CFAE81BF8114968D919C911597680E0E +:100AA000791EF3018081281307C043940F5F1F4F05 +:100AB0005198599A599893CF519A599A90CF2F9209 +:100AC0003F924F925F926F927F928F929F92AF92DE +:100AD000BF92CF92DF92EF92FF920F931F93CF932B +:100AE000DF9300D000D01F92CDB7DEB7382E4A0179 +:100AF00029011D830C83D80117962C90022D10E03C +:100B000070E0F62FEE27FA83E983AC81BD8116965B +:100B10008C91169790E080179107D8F417962C9235 +:100B200080E00F900F900F900F900F90DF91CF917A +:100B30001F910F91FF90EF90DF90CF90BF90AF90FB +:100B40009F908F907F906F905F904F903F902F90ED +:100B5000089561E080E090EC0E948C0E6AEAC40186 +:100B6000F701099560E080E090EC0E948C0E65E54D +:100B7000C201F701099561E080E090EC0E948C0EC3 +:100B800060EAC401F7010995632D80E090EC0E94B2 +:100B90008C0E622C712CA980BA80A628B728AC8153 +:100BA000BD811496ED91FC911597E60DF71D6081BE +:100BB000C501F70109950E942915C501F60109959E +:100BC000282FC5012B83F60109952B812813F3CF1C +:100BD000AC81BD8114968D919C911597680E791EFC +:100BE000F3018081281307C023940F5F1F4F519892 +:100BF000599A59988ACF519A599A87CF2F923F92F2 +:100C00004F925F926F927F928F929F92AF92BF921C +:100C1000CF92DF92EF92FF920F931F93CF93DF93C8 +:100C200000D000D01F92CDB7DEB7582E4A0119016F +:100C30001D830C83D80117964C90042D10E070E0B2 +:100C4000F62FEE27FA83E983AC81BD8116968C914D +:100C5000169790E080179107D8F417964C9280E091 +:100C60000F900F900F900F900F90DF91CF911F91E9 +:100C70000F91FF90EF90DF90CF90BF90AF909F903B +:100C80008F907F906F905F904F903F902F9008953E +:100C900040E060E180E090E80E94D60F6AEAC4017B +:100CA000F701099565E5C101F701099560EAC401FD +:100CB000F7010995A42CB12C69807A806A287B28D9 +:100CC000AC81BD811496ED91FC911597EA0DFB1D49 +:100CD0006081C301F701099541E060E180E090E89F +:100CE0000E94D60F40E0652D80E090EE0E94D60F66 +:100CF0000E942915C301F6010995282FC3012B83F2 +:100D0000F60109952B812813F3CFAC81BD81149690 +:100D10008D919C911597A80EB91EF501808128131D +:100D200007C043940F5F1F4F5198599A59988CCF21 +:100D300041E060E180E090E80E94D60F40E0652D40 +:100D400080E090EE0E94D60F519A599A7DCF3F9243 +:100D50004F925F926F927F928F929F92AF92BF92CB +:100D6000CF92DF92EF92FF920F931F93CF93DF9377 +:100D7000482E662E7A01E901DA0117965C90A52CBF +:100D8000B12C6AEA8AEA9AE8F901099565E585E5F0 +:100D900095E8FE01099560E28AEA9AE8FE01099564 +:100DA000712C762C6624D70116968C91169790E0BC +:100DB0008A159B0520F517965C9260E980E090E823 +:100DC000FE01099560E080E090E8FE01099560EF82 +:100DD00080E090E8FE01099580E0DF91CF911F91BE +:100DE0000F91FF90EF90DF90CF90BF90AF909F90CA +:100DF0008F907F906F905F904F903F90089564E543 +:100E000080E090E50E948C0E852C912C6401C62810 +:100E1000D72860EAC601FE010995D7011496ED9125 +:100E2000FC911597E80DF91D6081C601FE01099539 +:100E30000E942915C601F8010995382EC601F8014E +:100E400009953812F5CFD70114968D919C9115977D +:100E5000880E991EF4018081381208C05394FFEF68 +:100E6000AF1ABF0A5198599A59989DCF61E880E00E +:100E700090E50E948C0E642D80E090E80E948C0E1C +:100E800064E580E090E50E948C0E519A599A8BCFD0 +:100E90004F925F926F927F928F929F92AF92BF928A +:100EA000CF92DF92EF92FF920F931F93CF93DF9336 +:100EB000662E7A01E901DA0117965C90A52CB12C17 +:100EC0006AEA8AEA9AE8F901099565E585E595E80F +:100ED000FE01099560E28AEA9AE8FE010995712C03 +:100EE000762C6624D70116968C91169790E08A1579 +:100EF0009B0518F517965C9260E980E090E8FE018A +:100F0000099560E080E090E8FE01099560EF80E0DF +:100F100090E8FE01099580E0DF91CF911F910F913C +:100F2000FF90EF90DF90CF90BF90AF909F908F9009 +:100F30007F906F905F904F900895852C912C640165 +:100F4000C628D72860EAC601FE010995D701149684 +:100F5000ED91FC911597E80DF91D6081C601FE0128 +:100F600009950E942915C601F8010995482EC60168 +:100F7000F80109954812F5CFD70114968D919C91EF +:100F80001597880E991EF4018081481208C0539469 +:100F9000FFEFAF1ABF0A5198599A5998A3CF519AA7 +:100FA000599AA0CF4F925F926F927F928F929F92A9 +:100FB000AF92BF92CF92DF92EF92FF920F931F9367 +:100FC000CF93DF93EA0169015F80A52CB12CE62E57 +:100FD000F12CFE2CEE248E8190E08A159B0598F46E +:100FE0005F8280E0DF91CF911F910F91FF90EF9092 +:100FF000DF90CF90BF90AF909F908F907F906F9039 +:101000005F904F9008956AEA85E595E1F6010995AC +:1010100065E58AEA9AE0F601099560EA85E595E1D9 +:10102000F6010995652C712C43018E289F28EC81CF +:10103000FD81E60DF71D6081C401F60109950E944E +:101040002915C401F8010995482EC401F801099534 +:101050004812F5CF8C819D81680E791EF301808145 +:10106000481208C05394FFEFAF1ABF0A5198599A1B +:101070005998B1CF519A599AAECF3F924F925F9201 +:101080006F927F928F929F92AF92BF92CF92DF9298 +:10109000EF92FF920F931F93CF93DF93EA016901C1 +:1010A0005F80A52CB12C482E429480EF4822E62E7A +:1010B000F12CFE2CEE248E8190E08A159B05A0F485 +:1010C0005F8280E0DF91CF911F910F91FF90EF90B1 +:1010D000DF90CF90BF90AF909F908F907F906F9058 +:1010E0005F904F903F90089560E280E090E80E940A +:1010F0008C0E6AEA85E595E1F601099560E180E0EC +:1011000090E80E948C0E65E58AEA9AE0F60109955E +:1011100060E280E090E80E948C0E60EA85E595E14F +:10112000F6010995642D80E090E80E948C0E652CF4 +:10113000712C43018E289F28EC81FD81E60DF71D5F +:101140006081C401F60109950E942915C401F801C6 +:101150000995382EC401F80109953812F5CF8C8114 +:101160009D81680E791EF3018081381208C0539466 +:10117000FFEFAF1ABF0A5198599A59989CCF519ACC +:10118000599A99CF4F925F926F927F928F929F92CE +:10119000AF92BF92CF92DF92EF92FF920F931F9385 +:1011A000CF93DF93662E7A01E901DA0117965C90FE +:1011B000A52CB12C6AEA8AEA9AE0F901099565E55D +:1011C00085E595E0FE01099560E28AEA9AE0FE0174 +:1011D0000995712C762C6624D70116968C9116975A +:1011E00090E08A159B0518F517965C9260E980E0FF +:1011F00090E0FE01099560E080E090E0FE01099535 +:1012000060EF80E090E0FE01099580E0DF91CF91F2 +:101210001F910F91FF90EF90DF90CF90BF90AF9014 +:101220009F908F907F906F905F904F900895852C46 +:10123000912C6401C628D72860EAC601FE010995F1 +:10124000D7011496ED91FC911597E80DF91D608179 +:10125000C601FE0109950E942915C601F8010995EC +:10126000482EC601F80109954812F5CFD70114960A +:101270008D919C911597880E991EF40180814812DA +:1012800008C05394FFEFAF1ABF0A5198599A599862 +:10129000A3CF519A599AA0CF4F925F926F927F92AB +:1012A0008F929F92AF92BF92CF92DF92EF92FF9276 +:1012B0000F931F93CF93DF93662E7A01E901DA0132 +:1012C00017965C90852C912CA895589800000000EA +:1012D0000000000000000000000000006AEA8AEA46 +:1012E0009AE0F901099565E585E595E0FE01099526 +:1012F00060E28AEA9AE0FE010995712C762C662458 +:10130000D70116968C91169790E08815990520F5CF +:1013100017965C9260E980E090E0FE01099560E03C +:1013200080E090E0FE01099560EF80E090E0FE0132 +:101330000995589A80E0DF91CF911F910F91FF900E +:10134000EF90DF90CF90BF90AF909F908F907F9065 +:101350006F905F904F90089580EA0E949813C52C7B +:10136000D12C5601A628B728D7011496ED91FC91EF +:101370001597EC0DFD1D6081C501FE010995589A78 +:10138000000000000000000000000000000000005D +:10139000A8950E942915C501F801099558980000E3 +:1013A0000000000000000000000000000000D70165 +:1013B0001496ED91FC911597EC0DFD1D4080841560 +:1013C000C1F0589A0000000000000000000000007A +:1013D00000000000482EC501F801099558984812F0 +:1013E0001BC0000000000000000000000000000022 +:1013F0000000D70114968D919C911597C80ED91EA7 +:10140000F6018081481229C05394FFEF8F1A9F0A7A +:101410005198599A599874CF0000000000000000BC +:1014200000000000000000000000000000000000BC +:1014300000000000000000000000000000000000AC +:10144000589A0000000000000000000000000000AA +:101450000000C501F8010995BDCF519A599A50CFA6 +:101460008F929F92AF92BF92CF92DF92EF92FF92B4 +:101470000F931F93CF93DF93EC0188809980B82C52 +:101480008985823169F038F48031C1F0813109F405 +:101490001AC183EC06C0833109F44FC18431C9F706 +:1014A00080E0DF91CF911F910F91FF90EF90DF903F +:1014B000CF90BF90AF909F908F9008958D858111B0 +:1014C00011C0FAE7CF2EFEE0DF2EA0E5EA2EAEE057 +:1014D000FA2E8E012AEA3AE245E555E5682D606864 +:1014E0000E945E048D85813041F58881998166E096 +:1014F000969587956A95E1F7282F2F70A22E41E0E7 +:1015000060E180E090E80E94D60F40E06A2D80E024 +:1015100090EE0E94D60F7AE7C72E7EE0D72EECE839 +:10152000EE2EEEE0FE2E8E012AEA3AEA45E555ED72 +:10153000682D60688A2D0E94FE058D858330D1F468 +:10154000682D6F736068B62E8881998136E0969514 +:1015500087953A95E1F74AE7C42E4EE0D42E50E540 +:10156000E52E5EE0F52E8E012AEA3AE245E555E5E4 +:101570000E94BF048D858E31D1F46B2D6F7360682E +:10158000B62E8881998106E0969587950A95E1F7B0 +:101590009AE7C92E9EE0D92E2CE8E22E2EE0F22EFC +:1015A0008E012AEA3AEA45E555E90E945F058D85F4 +:1015B000823211F08B30F9F468817981660F672FE0 +:1015C000661F770B7195CB0199278C5691090E9464 +:1015D0008C0EBAE7CB2EBEE0DB2E10E5E12E1EE02E +:1015E000F12E8E012AEA3AE245E555E56B2D606859 +:1015F00080E00E945E048D858C3031F56B2D6F711B +:101600006068B62E8880998075E0969487947A9564 +:10161000E1F765EA80E090E60E948C0E682D8FEF7E +:101620009FEF0E948C0EEAE7CE2EEEE0DE2EFCE865 +:10163000EF2EFEE0FF2E8E012AEA3AEA45E555ED4F +:101640006B2D80E00E945E048D858C3101F58880D1 +:101650009980880C892C881C9908919461E880E015 +:1016600090E50E948C0E682D80E090E80E948C0E20 +:1016700064E580E090E50E948C0E0AE71EE02CE80D +:101680003EE0AE016B2D6068882D0E94A7068D8517 +:101690008F3109F005CF8880998054E09694879423 +:1016A0005A95E1F7682D80E090E50E948C0E6B2D35 +:1016B0006F7860680AE71EE02CE83EE0AE01882DF6 +:1016C0000E944807EDCE8D85811108C002EA1EE018 +:1016D00026EB3EE0AE01682D0E94D2078D858B304F +:1016E00091F4882D8F71B82E8881998145E0969567 +:1016F00087954A95E1F702EA1EE026EB3EE0AE014F +:101700006B2D0E943D088D858E3F09F0C9CE688102 +:10171000798135E0769567953A95E1F78FEF9FE30C +:101720000E94B60E6B2D6F710AEC1EE02CED3EE0B0 +:10173000AE0180E00E94C208B3CE8FEF84B9C4012D +:10174000880F892F881F990B919585B95F9A5F98AB +:1017500014B8682D60680FE413E126E633E1AE01AA +:1017600080E00E944C099CCE14B88FEF85B93F9A57 +:10177000479881B911B882B914B885B914B885B938 +:101780003898409A3998419A3A98429A3C98449AA3 +:101790003D98459A3E98469A53985B9A55985D9A1B +:1017A0003B98439A3F98479A57985F9A5098589811 +:1017B0005198599A08950E94B40B399A419A389ACF +:1017C00040983A9A429A3C9A449A3D9A459A14B85B +:1017D0008FEF85B914B885B914B885B93F9A479881 +:1017E00081B912B884B915B8479A479814B80895C2 +:1017F0000E94B40B399A419A3C9A449A3D9A459A70 +:10180000589A509A14B88FEF85B914B885B914B89E +:1018100085B93F9A479881B912B884B915B8479AE3 +:10182000479814B814B885B9579A5F9884B915B811 +:101830005F9A5F9814B80895823081F0833061F028 +:101840008130A1F40898109A1092B20380E290E0DF +:101850009093B1038093B00380E008955098589A14 +:1018600088E08093B20389E290E0F2CF87E908959F +:10187000813049F414B88FEF85B9579A5F980E9468 +:10188000B10C80E0089588E908955898509A0000B6 +:1018900089B15098589880FD22C05098589A59B1F3 +:1018A00049B1000039B10000000029B1000000007A +:1018B000000099B1000000000000000089B15098BC +:1018C000589850FD0EC040FD0EC030FD0EC020FDEA +:1018D0000EC090FD0EC080FD0EC080EE089580EF1A +:1018E000089580E0089581E0089583E0089586E0FA +:1018F00008958AE008958FE008950F931F93CF9382 +:10190000C82F842F8901C230F9F030F4CC2389F03C +:10191000C130B1F0C6E90FC0C430F1F0C0F0C0383A +:10192000C9F781E0F90180830E94450CF8018183A9 +:1019300009C00E94B40B8C2FCF911F910F91089575 +:101940000E94DB0BC0E0F7CF0E94F80BFBCFCF91DA +:101950001F910F910C941C0CCF911F910F910C941F +:10196000380C109210018FEF84B915B85F9A5F9808 +:1019700014B85098589A80E88093680310927603C0 +:10198000E7E7F3E0119283E0E739F807D9F7089524 +:1019900060917603813109F441C0109210019FEFEC +:1019A00094B99091100195B95F9A5F9814B820E0AE +:1019B00070E03FEF8032C9F4E72FF0E0E958FC4FC8 +:1019C000408150E0022E02C0559547950A94E2F7F7 +:1019D00040FF28C092E034B995B95F9A5F9814B877 +:1019E0002F5F283011F47F5F20E0492F446034B925 +:1019F00045B95F9A5F9814B8615034B995B95F9A48 +:101A00005F9814B86111D6CF9093100140932301D1 +:101A100034B915B85F9A5F9814B8089592E090931E +:101A20001001BDCF90E0D7CF0F931F93CF93DF93DB +:101A300050917603B0917703813109F46BC0109215 +:101A400010019FEF94B99091100195B95F9A5F983A +:101A500014B820E030E07FEFC1E0D0E0803281F4C4 +:101A6000EB2FF0E0022E02C0F595E7950A94E2F71D +:101A7000E0FF54C0916074B995B95F9A5F9814B84B +:101A80006032B1F4211105C0E32FF0E0E958FC4FBA +:101A90001082489B0DC0E32FF0E0E958FC4FA08175 +:101AA0008E01022E01C0000F0A94EAF7A02BA0833A +:101AB0005150442341F0511106C0926074B995B958 +:101AC0005F9A5F9814B8A92FA46074B9A5B95F9AFA +:101AD0005F9814B874B995B95F9A5F9814B82F5F7E +:101AE000283039F43F5FE32FF0E0E958FC4FB08134 +:101AF00020E05111B3CF90931001A09323018FEFF9 +:101B000084B915B85F9A5F9814B8DF91CF911F918F +:101B10000F91089591E09093100193CF9E7FABCFEA +:101B2000809168038338D1F580916903883009F486 +:101B300063C0C0F4833009F445C030F4813079F1DA +:101B40008230A1F18EEE28C0863009F44AC008F038 +:101B50004EC08430B9F781E88093680341E060E2C9 +:101B600081E136C08F30C1F148F48D3031F18E30D3 +:101B700049F781E88093680340E028C0803849F045 +:101B80008F3F49F08031F1F681E88093680340E0AF +:101B90002CC00C94B10C80EF80936803089581E809 +:101BA0008093680380E20E94C80C14C081E880938F +:101BB000680341E060E080E20BC081E88093680345 +:101BC00040E0F8CF81E88093680341E060E280E183 +:101BD0000E94140D82E8E0CF81E88093680340E022 +:101BE000BECF81E88093680341E060E2E4CF81E802 +:101BF0008093680380E1D7CF81E88093680381E117 +:101C0000D2CFCF93DF93E901843061F138F4823091 +:101C1000E1F008F58130A1F087E80FC0873039F195 +:101C200028F48530C9F74093760306C0883021F147 +:101C3000803891F70E94B10C80E0DF91CF91089538 +:101C40009091690399838883F7CF4093690383E870 +:101C500080936803F1CF4093690383E8809368031E +:101C60000E94900D80916803898381E0ECCF4093BE +:101C7000770350937803E0CF809177038983809135 +:101C800078038A83809179038B8380917A038C8394 +:101C900080917B038D8380917C038E8386E0D3CFFC +:101CA00082B98FEF84B995B9479A479814B884B927 +:101CB00065B9509A58985098589A14B80895509801 +:101CC00058984098419A429A82B92FEF24B995B911 +:101CD000479A479814B800000000409A97FD419831 +:101CE00000000000000000000000000083B14098E8 +:101CF000419A089582B92FEF24B995B9479A479828 +:101D000014B8409A97FD41980000000000000000C0 +:101D100083B14098419A08955098589882B92FEF0E +:101D200024B995B9479A479814B8429824B965B927 +:101D3000409A97FD4198000000004098419A429ACD +:101D400014B80895811520E2920708F4906882B9CA +:101D50008FEF84B995B9479A479814B84498000012 +:101D600000000000000083B1449A0895811520E22C +:101D7000920708F4906882B98FEF84B995B9479AB1 +:101D8000479814B884B965B9000045980000459A91 +:101D900014B8089582B98FEF84B995B9479A4798D6 +:101DA00014B8409A4198449800000000000083B1A4 +:101DB000449A4098419A089582B98FEF84B995B9B1 +:101DC000479A479814B84098419884B965B900007B +:101DD00045980000459A14B8419A089512B82FEF1B +:101DE00024B988E085B9479A479814B889B18072B8 +:101DF00090E024B924E025B9479A479814B829B14E +:101E0000207230E041E02115310509F040E061E049 +:101E1000009709F060E0442311F0611116C051E011 +:101E2000232B09F450E021E0892B09F420E055230D +:101E300011F021110CC0662311F051110AC0442386 +:101E400011F0211108C08FEF089580E1089581E11C +:101E5000089582E1089583E10895EF92FF920F9330 +:101E6000CF93DF9300D01F92CDB7DEB77C018FEF09 +:101E700084B965B9479A479814B8409A67FD419864 +:101E800042B9000080E0011117C00000000093B1CA +:101E9000F701E80FF11D90834F5F42B98F5F28175C +:101EA00090F74098419A0F900F900F90DF91CF914B +:101EB0000F91FF90EF9008952B834A8389830E94AE +:101EC000291589814A812B81E2CFEF92FF920F93EE +:101ED000CF93DF9300D01F92CDB7DEB77C01603285 +:101EE00008F460688FEF84B965B9479A479814B8C9 +:101EF000449842B9000080E0011116C000000000C3 +:101F000093B1F701E80FF11D90834F5F42B98F5FE6 +:101F1000281790F7449A0F900F900F90DF91CF9170 +:101F20000F91FF90EF9008952B834A8389830E943D +:101F3000291589814A812B81E3CFEF92FF920F937C +:101F4000CF93DF9300D01F92CDB7DEB77C018FEF28 +:101F500084B965B9479A479814B8409A419844980B +:101F600042B9000080E0011118C00000000093B1E8 +:101F7000F701E80FF11D90834F5F42B98F5F28177B +:101F800090F7449A4098419A0F900F900F90DF91EC +:101F9000CF910F91FF90EF9008952B834A8389830F +:101FA0000E94291589814A812B81E1CF0F931F93CC +:101FB000CF93DF938C01D62F442349F080E090E843 +:101FC0000E947A0E60E880E090E80E948C0EC5E0E6 +:101FD000C8010E947A0E6D2FC8010E948C0ED69502 +:101FE000C150B1F7DF91CF911F910F9108950F93D9 +:101FF0001F93CF93C82FCA018901C53079F148F4E6 +:10200000C13029F1E8F0C23031F1C43051F1C0EAF9 +:1020100019C0C23891F150F4C03839F1C138B9F75C +:1020200021E0F80120830E947A0E24C0C33859F1C0 +:10203000C43869F721E0F80120830E94CA0E1AC053 +:102040000E94500E8C2FCF911F910F9108950E94E6 +:10205000B60EC0E0F7CF0E948C0EFBCF0E94DC0EC4 +:10206000F8CF40E00E94D60FF4CF21E0F8012083A2 +:102070000E945F0EF8018183ECCF21E0F8012083FC +:102080000E94A20EF7CF81E0F90180830E94EE0E3C +:10209000F1CFCF93DF93FB01DC0112962C91222329 +:1020A00029F0203479F082ED808308C01082A0915D +:1020B0000201B0910301EC018C818C93CF01DF917F +:1020C000CF910895108281E08183A0910201B091A7 +:1020D00003018C918283F2CFE0910201F091030120 +:1020E00080830895E0910201F091030180810895B9 +:1020F0000F931F93D901082F10E00831110508F044 +:10210000C2C2F801EA57FF4E0C948717C0109E1008 +:10211000FB105611A211EE113A12E512EA12EF125B +:10212000F212F612F912011309130D1310131413FE +:102130001D1324132813301337133B134631510555 +:1021400008F0A3C2FA01E955FF4E0C948717BD10A1 +:10215000C310C710CB10CF10D310D710DB10DF1077 +:10216000E310E710EB10EF10F31045134513451380 +:102170004513451345134513F7103898409A80E0EE +:102180001F910F9108953998419A80E0F9CF3A98BC +:10219000429A80E0F5CF3B98439A80E0F1CF3C989B +:1021A000449A80E0EDCF3D98459A80E0E9CF3E9893 +:1021B000469A80E0E5CF3F98479A80E0E1CF50987B +:1021C000589A80E0DDCF5198599A80E0D9CF539842 +:1021D0005B9A80E0D5CF55985D9A80E0D1CF569834 +:1021E0005E9A80E0CDCF57985F9A80E0C9CF509833 +:1021F000589A80E0C5CF4631510508F048C2FA012F +:10220000EC5FFE4E0C9487171A111E112211261135 +:102210002A112E11321136113A113E114211461176 +:102220004A114E11471347134713471347134713D8 +:10223000471352113898409880E0A2CF39984198BE +:1022400080E09ECF3A98429880E09ACF3B9843989E +:1022500080E096CF3C98449880E092CF3D98459896 +:1022600080E08ECF3E98469880E08ACF3F9847988E +:1022700080E086CF5098589880E082CF5198599846 +:1022800080E07ECF53985B9880E07ACF55985D9838 +:1022900080E076CF56985E9880E072CF57985F982E +:1022A00080E06ECF5098589880E06ACF4631510553 +:1022B00008F0EFC1FA01E15AFE4E0C948717751130 +:1022C00078117B117E118111841187118A118D1172 +:1022D00090119311961199119C11491349134913A7 +:1022E00049134913491349139F11389A80E048CF85 +:1022F000399A80E045CF3A9A80E042CF3B9A80E01D +:102300003FCF3C9A80E03CCF3D9A80E039CF3E9A67 +:1023100080E036CF3F9A80E033CF509A80E030CFD4 +:10232000519A80E02DCF539A80E02ACF559A80E0D1 +:1023300027CF569A80E024CF579A80E021CF509A39 +:1023400080E01ECF4631510508F0A5C1FA01E555E0 +:10235000FE4E0C948717C111C411C711CA11CD11BB +:10236000D011D311D611D911DC11DF11E211E51111 +:10237000E8114B134B134B134B134B134B134B13D2 +:10238000EB11409880E0FCCE419880E0F9CE429875 +:1023900080E0F6CE439880E0F3CE449880E0F0CE23 +:1023A000459880E0EDCE469880E0EACE479880E000 +:1023B000E7CE589880E0E4CE599880E0E1CE5B9873 +:1023C00080E0DECE5D9880E0DBCE5E9880E0D8CE07 +:1023D0005F9880E0D5CE589880E0D2CE4631510546 +:1023E00008F05BC1FA01E950FE4E0C9487170D12FC +:1023F00010121312161219121C121F122212251279 +:1024000028122B122E12311234124D134D134D136C +:102410004D134D134D134D133712409A80E0B0CE3B +:10242000419A80E0ADCE429A80E0AACE439A80E005 +:10243000A7CE449A80E0A4CE459A80E0A1CE469AE9 +:1024400080E09ECE479A80E09BCE589A80E098CE5E +:10245000599A80E095CE5B9A80E092CE5D9A80E0BA +:102460008FCE5E9A80E08CCE5F9A80E089CE589ABB +:1024700080E086CE82E08C934631510508F0A2C000 +:10248000FA01EB5BFD4E0C9487175B1264126D1220 +:1024900076127F12881291129A12A312AC12B51200 +:1024A000BE12C712D012E212E212E212E212E212DD +:1024B000E212E212D91286B1817011968C931197B3 +:1024C00012961C9280E05CCE86B1827090E01296EB +:1024D0009C938E93119780E053CE86B1847090E0E8 +:1024E00012969C938E93119780E04ACE86B18870A5 +:1024F00090E012969C938E93119780E041CE86B126 +:10250000807190E012969C938E93119780E038CE64 +:1025100086B1807290E012969C938E93119780E022 +:102520002FCE86B1807490E012969C938E93119773 +:1025300080E026CE86B1807890E012969C938E93B0 +:10254000119780E01DCE89B1817011968C931197FF +:1025500012961C9280E014CE89B1827090E012969F +:102560009C938E93119780E00BCE89B1887090E098 +:1025700012969C938E93119780E002CE89B180725F +:1025800090E012969C938E93119780E0F9CD89B1DB +:10259000807490E012969C938E93119780E0F0CD1A +:1025A00089B1807890E012969C938E93119780E089 +:1025B000E7CD89B1817011968C93119712961C9278 +:1025C00080E0DECD1C928DE8DBCD14B88FEF85B9AD +:1025D00080E0D6CD14B88FEF85B980E0D1CD14B8A6 +:1025E00080E0CECD8FEF84B980E0CACD45B980E0E0 +:1025F000C7CD83B111968C93119781E08C9380E0C5 +:10260000BFCD14B88FEF85B93F9A479881B980E064 +:10261000B7CD8FEF82B980E0B3CD11B880E0B0CDF7 +:102620008FEF81B980E0ACCD42B98FEF84B955B955 +:10263000479A479814B880E0A3CD14B88FEF85B9B6 +:10264000579A5F9880E09CCD57985F9A80E098CD2C +:102650008FEF84B945B95F9A5F9814B880E090CD48 +:1026600014B88FEF85B9579A5F9880E089CD579855 +:102670005F9A80E085CD8FEF84B945B95F9A5F9806 +:1026800014B880E07DCD8CE87BCD8DE879CD8DE8E8 +:1026900077CD8DE875CD8DE873CD8DE871CD82B99C +:1026A0008FEF84B995B9479A479814B841984498E0 +:1026B000000000000000000000000000000000001A +:1026C0000000000083B1449A419A089582B98FEFC7 +:1026D00084B995B9479A479814B884B965B94598AB +:1026E00041980000000000000000459A419A14B88B +:1026F0000895CF93DF93952FE901813099F020F071 +:10270000823059F08AEA06C09FEF94B945B95F9AC2 +:102710005F9814B8DF91CF910895842F0E946613BB +:1027200080E0F8CF8883842F0E944F138983F8CFED +:102730009FEF94B985B945984198000000000000CA +:102740000000459A419A14B80895EF92FF920F93B2 +:10275000CF93DF9300D01F92CDB7DEB77C018FEF10 +:1027600084B965B9479A479814B84498419842B9D2 +:1027700080E0011119C0000000000000000093B1CA +:10278000F701E80FF11D90834F5F42B98F5F281763 +:1027900080F7449A419A0F900F900F90DF91CF915C +:1027A0000F91FF90EF9008952B834A8389830E94B5 +:1027B000291500000000000089814A812B81DFCFAC +:1027C000880F991F880F991F20E030E028173907DC +:1027D00009F40895000000002F5F3F4FF7CF20E07D +:1027E00030E02817390709F40895000000002F5F32 +:1027F0003F4FF7CFCF93DF9380E190E00E94E0134B +:10280000C4E0D0E084EF91E00E94E01384EF91E017 +:102810000E94E0132197B1F7C4E0D0E08AEF90E086 +:102820000E94E0138AEF90E00E94E0132197B1F735 +:10283000DF91CF91089580E190E00C94E013CF9365 +:10284000DF931F92CDB7DEB7F901813171F038F413 +:102850008130C1F078F08230C9F082E80FC0813257 +:10286000A9F0823299F08231C1F782E0808312822E +:1028700011820AC089830E94FA1389810F90DF9127 +:10288000CF9108950E941B1480E0F8CF81E08083EF +:102890001182FACF482F90E0982F882720E041112D +:1028A00003C021118068089520953FEF340F432322 +:1028B000F6CF80E090E0089580E0089560E070E059 +:1028C000CB010895CF93DF931F92CDB7DEB7DC0124 +:1028D0008FEF809307011092080187E091E09093B9 +:1028E000C2038093C10316968C9116978983119623 +:1028F000EC9111974E2F50E0FA013197E930F10534 +:1029000008F07DC0EA57FB4E0C9487178F149F1474 +:10291000AD14BB14E514FF14F614C914D71414969F +:102920004D915C91159728E031E013966C911397C7 +:1029300012968C910E9478108093070152C01496D1 +:102940004D915C91159728E031E013966C911397A7 +:1029500012968C910E947D0CEFCF14964D915C9154 +:10296000159728E031E013966C91139712968C918D +:102970000E94F70FE1CF14964D915C91159728E0D6 +:1029800031E013966C91139712968C910E947913F3 +:10299000D3CF14964D915C91159728E031E01396B2 +:1029A0006C91139712968C910E941F14C5CF1496A8 +:1029B0004D915C91159728E031E013966C91139737 +:1029C00012968C910E94010EB7CFAE014F5F5F4F00 +:1029D00067E071E0CD010E9479019093C20380937A +:1029E000C10389810F90DF91CF910895AE014F5FB0 +:1029F0005F4F67E071E0CD010E944910EECF80E8A3 +:102A00009BCFE0916503F091660327814481558156 +:102A1000322F360F231312C0E0916503F091660345 +:102A20008781860F878380913401861B80933401D0 +:102A300081110DC088E9838381E00895FC017191C3 +:102A4000CF01FA01E20FF11D70832F5FE3CF80E029 +:102A50000895CF93DF936091C303635067FD91C0E6 +:102A60008091C003CCE0D0E0C81BD109C953DC4F32 +:102A70008091BF038D3209F0CFC0683009F07FC06C +:102A800083EC8093B3038AE58093050110920F01D4 +:102A90008881807679F0CE010E9462148F3F09F41C +:102AA00066C09F81911169C09E81981708F065C02A +:102AB000892F63C02A811092BC03998191110AC0A9 +:102AC0001092BD032CEB33E082E03093C2032093DD +:102AD000C103E7CF953029F42093C4032CEB33E0F6 +:102AE000F4CF963099F59B81913059F48EE890E0BF +:102AF0009093C2038093C10382E190E490930F010D +:102B0000D0CF923019F48CE790E0F2CF9330A9F750 +:102B1000211108C088EE90E09093C2038093C10316 +:102B200084E0EBCF213041F48EEB90E09093C20330 +:102B30008093C1038AE2E1CF2230F9F680EA90E087 +:102B40009093C2038093C1038EE1D7CF983059F0A0 +:102B5000993019F42093C603C1CF81E09A3009F46B +:102B6000BDCF80E0BBCF26EC33E081E0AECF9881D3 +:102B700097FD8E8190E890930F018093040110924D +:102B8000C3038091050184FF3AC0809104018F3F07 +:102B9000B1F1C82F893008F0C8E08C1B8093040184 +:102BA0008091B30398E889278093B303CC23D1F0B5 +:102BB0008091C1039091C20320910F0126FF3FC075 +:102BC000A4EBB3E0FC012C2F34913D9331962150BE +:102BD000D9F701962FEF2C0F820F911D9093C2030E +:102BE0008093C1036C2F84EB93E00E944416CC5F6A +:102BF000CC3019F08FEF80930401C093050184E17C +:102C000099B1947131F48150D9F71092C4031092A4 +:102C1000BE03DF91CF91089580910F0187FFAFCF61 +:102C2000CE010E9401158F3F21F48EE180930501B2 +:102C3000A6CF882309F4A3CF10920401A0CFE4EB20 +:102C4000F3E0DC012C2F3D9131932150E1F7C1CF0E +:102C5000E9E6F0E0808182608083E89A0895A82FF9 +:102C6000B92F80E090E041E050EA609530E009C083 +:102C70002D9182279795879510F084279527305EB0 +:102C8000C8F36F5FA8F30895EADF8D939D930895CD +:102C9000CF93CFB7CF93DF93C3954C9BE9F74C9B72 +:102CA0000BC04C9B09C04C9B07C04C9B05C04C9B68 +:102CB00003C04C9B01C089C06F93C091C003DD2746 +:102CC000C953DC4F2F9365E54C9B03C02F916F9147 +:102CD000E6CF0F931F934F9320E040E15F9309B13C +:102CE000047104FB27F93F9350E03BE039C01471B5 +:102CF00040642F77012F5F5F1EC0406819B11471C7 +:102D00002F7752501FC0406409B12F770471D1F161 +:102D10005F5F00C023C0406219B12F77147191F139 +:102D20005F5F00C025C004711027515012F45D5F31 +:102D30000000115027952C3F19B1C8F614710127D6 +:102D4000015027952C3FC8F64227499309B10471D9 +:102D500010274F73115027952C3FA8F6469546959E +:102D600019B1147179F00127015027952C3F98F67D +:102D70006B5A60F3315009B1B0F600C011E01CBBD2 +:102D8000002717C03B503195C31BD04011E01CBB3E +:102D90000881033CF9F00B34E9F02091BE0319815E +:102DA000110F1213EDCF093651F10D3211F0013E22 +:102DB00039F70093C5033F915F914F911F910F9198 +:102DC0002F916F91CCB3C0FD67CFDF91CF91CFBF73 +:102DD000CF9118952091C503222369F31091C30365 +:102DE000112339F534303AF13093C3032093BF03F4 +:102DF0001091C0033BE0311B3093C0031CC0009115 +:102E0000C3030130B4F40AE53091050134FD14C068 +:102E100000930501C3EBD3E013C0052710E000C009 +:102E200000000BB91AC0052710E0221F1DC010E0DA +:102E300021C04AE502C032ED432FC4E1D0E032E0C8 +:102E40001AB114615C9A0BB11AB954E120E865E338 +:102E500020FF05270BB9279517951C3FF0F66695BF +:102E6000B8F7B1F720FF05270BB9279517951C3F39 +:102E7000D0F62795179517FF052700001C3F0BB9C3 +:102E8000B0F629913A9519F70B7E1091C403110FF2 +:102E9000C651D0400BB911F01093BE0311E01CBB1A +:102EA00000611AB11B7E402F4B7E54E05A95F1F71A +:102EB0000BB91AB94BB97FCF9EE088E10FB6F894F1 +:102EC000A895809360000FBE909360000E94281622 +:102ED000549A80E0815099F4549878940E94B40BED +:102EE00080EF80936803A8950E9429150E94A8028C +:102EF00080916803803FB9F30E94900DF4CFA895AC +:102F0000EFE9FFE03197F1F700C00000E3CFEE0FEB +:0E2F1000FF1F0590F491E02D0994F894FFCF77 +:062F1E0065019703FF5A54 :00000001FF diff --git a/firmware/build_stm/inlretro_stm.bin b/firmware/build_stm/inlretro_stm.bin index b91f7c12f95c54459e36673c13080e26eed9f300..061a677838aed1da463869ffe158805a56bb643c 100644 GIT binary patch delta 8946 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 rrz&>a10|x0>?bgb6Mk delta 6352 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 IU(W9T1)6r%ZvX%Q literal 187056 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 ) { case PRGROM: addrH |= 0x80; //$8000 + if (buff->mapper == MMC1) { + //write bank value to bank table + //page_num shift by 6 bits A15 >> A9(1) + bank = (buff->page_num)>>6; + bank &= 0x0F; //only 4 bits in PRG + //LSb doesn't matter in 32KB mode + mmc1_wr(0x8000, 0x10, 1); //write bank to PRG-ROM bank register + mmc1_wr(0xE000, bank, 0); //write bank to PRG-ROM bank register + //TODO SXROM/SUROM require writting PRG-ROM MSb of address to CHR registers + } if (buff->mapper == UxROM) { //addrH &= 0b1011 1111 A14 must always be low addrH &= 0xBF; @@ -26,8 +36,29 @@ uint8_t dump_buff( buffer *buff ) { //page_num shift by 6 bits A14 >> A8(0) bank = (buff->page_num)>>6; //Nomolos bank table @ CC84 - nes_cpu_wr( (0xCC84+bank), bank ); - //nes_cpu_wr( (0xE473+bank), bank ); + //nes_cpu_wr( (0xCC84+bank), bank ); + //Owlia bank table @ CC84 + nes_cpu_wr( (0xE473+bank), bank ); + //Rushnattack + //nes_cpu_wr( (0x8000+bank), bank ); + //twindragons + //nes_cpu_wr( (0xC000+bank), bank ); + //h1 + //nes_cpu_wr( (0xFFC0+bank), bank ); + + buff->cur_byte = nes_cpu_page_rd_poll( buff->data, addrH, buff->id, + //id contains MSb of page when <256B buffer + buff->last_idx, ~FALSE ); + break; + } + if (buff->mapper == MAP30) { + //addrH &= 0b1011 1111 A14 must always be low + addrH &= 0xBF; + //write bank value to bank table + //page_num shift by 6 bits A14 >> A8(0) + bank = (buff->page_num)>>6; + //mapper register $C000-FFFF + nes_cpu_wr( 0xC000, bank ); buff->cur_byte = nes_cpu_page_rd_poll( buff->data, addrH, buff->id, //id contains MSb of page when <256B buffer @@ -39,9 +70,9 @@ uint8_t dump_buff( buffer *buff ) { //page_num shift by 7 bits A15 >> A8(0) bank = (buff->page_num)>>7; //Lizard bank table @ FF94 - //nes_cpu_wr( (0xFF94+bank), bank ); + nes_cpu_wr( (0xFF94+bank), bank ); //HH85 - nes_cpu_wr( (0xFFE0+bank), bank ); + //nes_cpu_wr( (0xFFE0+bank), bank ); //Mojon bank table @ FF94 //nes_cpu_wr( 0x800C, 0x00); //select first bank (only one with table) //nes_cpu_wr( (0xCC43+bank), bank ); //then select desired bank @@ -58,13 +89,69 @@ uint8_t dump_buff( buffer *buff ) { nes_cpu_wr(0x8000, bank); //outer bank nes_cpu_wr(0x5000, 0x00); //chr reg select act like CNROM } + if (buff->mapper == EZNSF) { + //addrH &= 0b1000 1111 A14-12 must always be low + addrH &= 0x8F; + //write bank value to bank table + //page_num shift by 4 bits A12 >> A8(0) + bank = (buff->page_num)>>4; + nes_cpu_wr(0x5000, bank); //bank @ $8000-8FFF + } buff->cur_byte = nes_cpu_page_rd_poll( buff->data, addrH, buff->id, //id contains MSb of page when <256B buffer buff->last_idx, ~FALSE ); break; + case CHRROM: //$0000 - buff->cur_byte = nes_ppu_page_rd_poll( buff->data, addrH, buff->id, - buff->last_idx, ~FALSE ); + if (buff->mapper == NROM) { + buff->cur_byte = nes_ppu_page_rd_poll( buff->data, addrH, buff->id, + buff->last_idx, ~FALSE ); + } + + if (buff->mapper == CDREAM) { + //select bank + //8KB banks $0000-1FFF + //page_num shift by 5 bits A13 >> A8(0) + bank = (buff->page_num)>>5; + + //write bank to register + //TODO account for bus conflicts + nes_cpu_wr(0xFFFF, bank<<4); + + addrH &= 0x1F; //only A12-8 are directly addressable + buff->cur_byte = nes_ppu_page_rd_poll( buff->data, addrH, buff->id, + buff->last_idx, ~FALSE ); + } + + if (buff->mapper == DPROM) { + //select bank + //8KB banks $0000-1FFF + //page_num shift by 5 bits A13 >> A8(0) + bank = (buff->page_num)>>5; + + //write bank to register + nes_ppu_wr(0x3FFF, bank); + + addrH &= 0x1F; //only A12-8 are directly addressable + buff->cur_byte = nes_dualport_page_rd_poll( buff->data, addrH, buff->id, + buff->last_idx, ~FALSE ); + } + + if (buff->mapper == MMC1) { + //write bank value to bank table + //page_num shift by 4 bits A12 >> A8(0) + bank = (buff->page_num)>>4; + bank &= 0x1F; //only 5 bits in CHR regs + //LSb doesn't matter in 32KB mode + mmc1_wr(0x8000, 0x10, 1); //set to 4KB bank mode + mmc1_wr(0xA000, bank, 0); //write bank to CHR-ROM bank register + //TODO SXROM/SUROM require writting PRG-ROM MSb of address to CHR registers + + addrH &= 0x0F; //only A11-8 are directly addressable + buff->cur_byte = nes_ppu_page_rd_poll( buff->data, addrH, buff->id, + buff->last_idx, ~FALSE ); + } + break; case PRGRAM: addrH |= 0x60; //$6000 diff --git a/firmware/source/flash.c b/firmware/source/flash.c index 93bc5d3..3c2f736 100644 --- a/firmware/source/flash.c +++ b/firmware/source/flash.c @@ -80,8 +80,9 @@ uint8_t write_page_bank( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t //select first bank for unlock sequence //needs to be written to bank table! - nes_cpu_wr( (0xCC84), 0x00 ); -// nes_cpu_wr( (0xE473), 0x00 ); +// nes_cpu_wr( (0xCC84), 0x00 ); + nes_cpu_wr( (0xE473), 0x00 ); + // nes_cpu_wr( (0xC000), 0x00 ); //wr_func( 0x5555, 0xAA ); wr_func( unlock1, 0xAA ); @@ -92,8 +93,11 @@ uint8_t write_page_bank( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t //now need to select bank for the actual write! //but this write can't be applied to the PRG-ROM - nes_cpu_wr( (0xCC84+bank), bank ); - // nes_cpu_wr( (0xE473+bank), bank ); + // nes_cpu_wr( (0xCC84+bank), bank ); + nes_cpu_wr( (0xE473+bank), bank ); + // nes_cpu_wr( (0x8000+bank), bank ); + //nes_cpu_wr( (0xC000+bank), bank ); + // nes_cpu_wr( (0xFFC0+bank), bank ); wr_func( ((addrH<<8)| n), buff->data[n] ); @@ -123,6 +127,109 @@ uint8_t write_page_bank( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t } + +uint8_t write_page_bank_map30( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t unlock2, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t read; + + while ( cur <= buff->last_idx ) { + + //select first bank for unlock sequence + + //wr_func( 0x5555, 0xAA ); + nes_cpu_wr( 0xC000, 0x01 ); + wr_func( unlock1, 0xAA ); + //wr_func( 0x2AAA, 0x55 ); + nes_cpu_wr( 0xC000, 0x00 ); + wr_func( unlock2, 0x55 ); + //wr_func( 0x5555, 0xA0 ); + nes_cpu_wr( 0xC000, 0x01 ); + wr_func( unlock1, 0xA0 ); + + //now need to select bank for the actual write! + nes_cpu_wr( 0xC000, bank ); + + wr_func( ((addrH<<8)| n), buff->data[n] ); + + do { + usbPoll(); + read = rd_func((addrH<<8)|n); + + } while( read != rd_func((addrH<<8)|n) ); + + //retry if write failed + //this helped but still seeing similar fails to dumps + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + LED_OP(); + LED_HI(); + } + + } + + buff->cur_byte = n; + + return SUCCESS; + +} + +uint8_t write_page_mmc1( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t unlock2, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t read; + + while ( cur <= buff->last_idx ) { + + mmc1_wr(0x8000, 0x10, 0); //32KB mode + //IDK why, but somehow only the first byte gets programmed when ROM A14=1 + //so somehow it's getting out of 32KB mode for follow on bytes.. + //even though we reset to 32KB mode after the corrupting final write + + wr_func( unlock1, 0xAA ); + wr_func( unlock2, 0x55 ); + wr_func( unlock1, 0xA0 ); + wr_func( ((addrH<<8)| n), buff->data[n] ); + + //writes to flash are to $8000-FFFF so any register could have been corrupted and shift register may be off + //In reality MMC1 should have blocked all subsequent writes, so maybe only the CHR reg2 got corrupted..? + mmc1_wr(0x8000, 0x10, 1); //32KB mode + mmc1_wr(0xE000, bank, 0); //reset shift register, and bank register + + do { + usbPoll(); + read = rd_func((addrH<<8)|n); + + } while( read != rd_func((addrH<<8)|n) ); + + //retry if write failed + //this helped but still seeing similar fails to dumps + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + mmc1_wr(0x8000, 0x10, 1); //32KB mode + mmc1_wr(0xE000, bank, 0); //reset shift register, and bank register + LED_OP(); + LED_HI(); + } + + } + + buff->cur_byte = n; + + return SUCCESS; + +} + uint8_t write_page_a53( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) { uint16_t cur = buff->cur_byte; @@ -189,18 +296,19 @@ uint8_t write_page_a53( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr //retry if write failed //this helped but still seeing similar fails to dumps -// if (read == buff->data[n]) { - n++; - cur++; -// LED_IP_PU(); -// LED_LO(); -// } else { -//// nes_cpu_wr(0x5000, 0x81); //outer reg select mode -//// nes_cpu_wr(0x8000, bank); //outer bank -//// nes_cpu_wr(0x5000, 0x54); //chr reg select act like CNROM & enable flash writes -// LED_OP(); -// LED_HI(); -// } + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + //kaz6 final needs a retry, but proto doesn't... + nes_cpu_wr(0x5000, 0x81); //outer reg select mode + nes_cpu_wr(0x8000, bank); //outer bank + nes_cpu_wr(0x5000, 0x54); //chr reg select act like CNROM & enable flash writes + LED_OP(); + LED_HI(); + } } @@ -217,6 +325,74 @@ uint8_t write_page_a53( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr } +uint8_t write_page_tssop( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t read; +// extern operation_info *oper_info; +// + + //enter unlock bypass mode + wr_func( 0x8AAA, 0xAA ); + wr_func( 0x8555, 0x55 ); + wr_func( 0x8AAA, 0x20 ); + + while ( cur <= buff->last_idx ) { + + //TODO FIX THIS! It shouldn't be needed! + //but for some reason the mapper is loosing it's setting for $5000 register to + //permit flash writes. Many writes go through, but at somepoint it gets lost.. + //maybe the best fix it to require address to be equal to $5555 to write to flash enable register.. + //but for now, this rewrite hack solves the issue. + //nes_cpu_wr(0x5000, 0x54); //chr reg select act like CNROM & enable flash writes + //AVR didn't need this patch so maybe is a speed issue + //stmadapter didn't have problems either.. + //added time delay before m2 rising edge and it didn't change anything for stm6 + + // curaddresswrite( 0xA0 ); //gained ~3KBps (59.13KBps) inl6 with v3.0 proto + wr_func( ((addrH<<8)| n), 0xA0 ); + + wr_func( ((addrH<<8)| n), buff->data[n] ); + + do { + usbPoll(); + read = rd_func((addrH<<8)|n); + + } while( read != rd_func((addrH<<8)|n) ); + + //retry if write failed + //this helped but still seeing similar fails to dumps + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + //kaz6 final needs a retry, but proto doesn't... + // nes_cpu_wr(0x5000, 0x81); //outer reg select mode + // nes_cpu_wr(0x8000, bank); //outer bank + // nes_cpu_wr(0x5000, 0x54); //chr reg select act like CNROM & enable flash writes + LED_OP(); + LED_HI(); + } + + } + + buff->cur_byte = n; + + //exit unlock bypass mode + wr_func( 0x8000, 0x90 ); + wr_func( 0x8000, 0x00 ); + //reset the flash chip, supposed to exit too + wr_func( 0x8000, 0xF0 ); + + + return SUCCESS; + +} + + uint8_t write_page_chr( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) { uint16_t cur = buff->cur_byte; @@ -279,10 +455,131 @@ uint8_t write_page_chr( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr } +uint8_t write_page_chr_cdream( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t read; +// extern operation_info *oper_info; + + while ( cur <= buff->last_idx ) { + //write unlock sequence + //need to make address and unlock data variable + //best for host to communcate these values + //actual value is part mapper dependent and part flash dependent + //mapper controlled address bits dictate where split is + //32KB banking A14-0 NES ctl, A15+ mapper ctl "bank" NROM, BNROM, ANROM + //addrH_dmask = 0b0111 1111 directly addressable addrH bits + //page2bankshft = A14->A8 = 7 shifts (equal to number of set bits in addrH_mask + //16KB banking A13-0 NES ctl, A14+ mapper ctl "bank" UxROM, MMC1 + //addrH_dmask = 0b0011 1111 + //page2bankshft = A13->A8 = 6 shifts + // 8KB banking A12-0 NES ctl, A13+ mapper ctl "bank" MMC3, FME7 + //addrH_dmask = 0b0001 1111 + //page2bankshft = A12->A8 = 5 shifts + // 4KB banking A11-0 NES ctl, A12+ mapper ctl "bank" ezNSF + //addrH_dmask = 0b0000 1111 + //page2bankshft = A11->A8 = 4 shifts + nes_cpu_wr(0x8000, 0x20); + wr_func( 0x1555, 0xAA ); +// wr_func( oper_info->unlock1_AH, oper_info->unlock1_AL, oper_info->unlock1_data ); + nes_cpu_wr(0x8000, 0x10); + wr_func( 0x0AAA, 0x55 ); +// wr_func( oper_info->unlock2_AH, oper_info->unlock2_AL, oper_info->unlock2_data ); + nes_cpu_wr(0x8000, 0x20); + wr_func( 0x1555, 0xA0 ); +// wr_func( oper_info->command_AH, oper_info->command_AL, oper_info->command1_data ); + nes_cpu_wr(0x8000, bank<<4); + wr_func( ((addrH<<8)| n), buff->data[n] ); + //wr_func( ((addrH<<8)| n), buff->page_num ); + //wr_func( ((addrH<<8)| n), addrH); + + do { + usbPoll(); + read = rd_func((addrH<<8)|n); + + } while( read != rd_func((addrH<<8)|n) ); + //TODO verify byte is value that was trying to be flashed + //move on to next byte + //n++; + //cur++; + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + LED_OP(); + LED_HI(); + } + + } + + buff->cur_byte = n; + + return SUCCESS; + +} + +uint8_t write_page_dualport( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) +{ + uint16_t cur = buff->cur_byte; + uint8_t n = buff->cur_byte; + uint8_t read; +// extern operation_info *oper_info; + + //enter unlock bypass mode + wr_func( 0x0AAA, 0xAA ); + wr_func( 0x0555, 0x55 ); + wr_func( 0x0AAA, 0x20 ); + + while ( cur <= buff->last_idx ) { + + wr_func( ((addrH<<8)| n), 0xA0 ); + + wr_func( ((addrH<<8)| n), buff->data[n] ); + + do { + usbPoll(); + read = rd_func((addrH<<8)|n); + + } while( read != rd_func((addrH<<8)|n) ); + //TODO verify byte is value that was trying to be flashed + //move on to next byte + //n++; + //cur++; + if (read == buff->data[n]) { + n++; + cur++; + LED_IP_PU(); + LED_LO(); + } else { + LED_OP(); + LED_HI(); + } + + } + + buff->cur_byte = n; + + + //exit unlock bypass mode + wr_func( 0x0000, 0x90 ); + wr_func( 0x0000, 0x00 ); + //reset the flash chip, supposed to exit too + wr_func( 0x0000, 0xF0 ); + + + return SUCCESS; + +} + //#define PRGM_MODE() swim_wotf(SWIM_HS, 0x500F, 0x40) //#define PLAY_MODE() swim_wotf(SWIM_HS, 0x500F, 0x00) -#define PRGM_MODE() EXP0_LO() -#define PLAY_MODE() EXP0_HI() +//#define PRGM_MODE() EXP0_LO() +//#define PLAY_MODE() EXP0_HI() +#define PRGM_MODE() NOP() +#define PLAY_MODE() NOP() uint8_t write_page_snes( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func ) { @@ -313,9 +610,9 @@ uint8_t write_page_snes( uint8_t bank, uint8_t addrH, buffer *buff, write_funcpt NOP(); //enter unlock bypass mode - wr_func( 0x0AAA, 0xAA ); - wr_func( 0x0555, 0x55 ); - wr_func( 0x0AAA, 0x20 ); + wr_func( 0x8AAA, 0xAA ); + wr_func( 0x8555, 0x55 ); + wr_func( 0x8AAA, 0x20 ); while ( cur <= buff->last_idx ) { @@ -460,25 +757,27 @@ uint8_t write_page_snes( uint8_t bank, uint8_t addrH, buffer *buff, write_funcpt //retry if write failed //this helped but still seeing similar fails to dumps - if (read == buff->data[n]) { - n++; - cur++; - LED_IP_PU(); - LED_LO(); - } else { - LED_OP(); - LED_HI(); - } + n++; + cur++; +// if (read == buff->data[n]) { +// //n++; +// //cur++; +// LED_IP_PU(); +// LED_LO(); +// } else { +// LED_OP(); +// LED_HI(); +// } } buff->cur_byte = n; //exit unlock bypass mode - wr_func( 0x0000, 0x90 ); - wr_func( 0x0000, 0x00 ); + wr_func( 0x8000, 0x90 ); + wr_func( 0x8000, 0x00 ); //reset the flash chip, supposed to exit too - wr_func( 0x0000, 0xF0 ); + wr_func( 0x8000, 0xF0 ); //exit program mode //EXP0_HI(); @@ -517,6 +816,16 @@ uint8_t flash_buff( buffer *buff ) { if (buff->mapper == NROM) { write_page( 0, (0x80 | addrH), 0x5555, 0x2AAA, buff, discrete_exp0_prgrom_wr, nes_cpu_rd ); } + if (buff->mapper == MMC1) { + //write bank value + //page_num shift by 6 bits A15 >> A9(1) + bank = (buff->page_num)>>6; //LSbit doesn't matter in 32KB mode + bank &= 0x0F; //only 4 bits in PRG register + mmc1_wr(0x8000, 0x10, 1); //ensure 32KB mode + mmc1_wr(0xE000, bank, 0); //write bank to PRG-ROM bank register + //TODO SXROM/SUROM require writting PRG-ROM MSb of address to CHR registers + write_page_mmc1( bank, (0x80 | addrH), 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); + } if (buff->mapper == UxROM) { //addrH &= 0b1011 1111 A14 must always be low addrH &= 0x3F; @@ -527,19 +836,41 @@ uint8_t flash_buff( buffer *buff ) { //bank gets written inside flash algo write_page_bank( bank, addrH, 0x5555, 0x2AAA, buff, discrete_exp0_prgrom_wr, nes_cpu_rd ); } + if (buff->mapper == MAP30) { + //addrH &= 0b1011 1111 A14 must always be low + addrH &= 0x3F; + addrH |= 0x80; + //write bank value + //page_num shift by 6 bits A14 >> A8(0) + bank = buff->page_num >> 6; + //bank gets written inside flash algo + write_page_bank_map30( bank, addrH, 0x9555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); + } if ((buff->mapper == BxROM) || (buff->mapper == CDREAM)) { //write bank value //page_num shift by 7 bits A15 >> A8(0) bank = buff->page_num >> 7; //Lizard banktable location - //nes_cpu_wr( (0xFF94+bank), bank ); + nes_cpu_wr( (0xFF94+bank), bank ); //hh85 - nes_cpu_wr( (0xFFE0+bank), bank ); + //nes_cpu_wr( (0xFFE0+bank), bank ); //Mojontales //nes_cpu_wr( 0x800C, 0x00); //select first bank (only bank with table) //nes_cpu_wr( (0xCC43+bank), bank ); //then select desired bank write_page( 0, (0x80 | addrH), 0x5555, 0x2AAA, buff, discrete_exp0_prgrom_wr, nes_cpu_rd ); } + if (buff->mapper == CNINJA) { + //addrH &= 0b1001 1111 A14-13 must always be low + addrH &= 0x1F; + addrH |= 0x80; + + //write bank value + //page_num shift by 5 bits A13 >> A8(0) + bank = buff->page_num >> 5; + nes_cpu_wr( (0x6000), 0xA5 ); //select desired bank + nes_cpu_wr( (0xFFFF), bank ); //select desired bank + write_page( 0, addrH, 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); + } if (buff->mapper == A53) { //write bank value to bank table //page_num shift by 7 bits A15 >> A8(0) @@ -556,13 +887,51 @@ uint8_t flash_buff( buffer *buff ) { //write_page( 0, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); //break; //WORKS PLCC Action53: - //write_page( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); + //had problems later not all bytes getting programmed.. + //write_page( bank, (0x80 | addrH), 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); //TSSOP-28 action53: write_page_a53( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); } + if (buff->mapper == EZNSF) { + //addrH &= 0b1000 1111 A14-12 must always be low + addrH &= 0x8F; + //write bank value to bank table + //page_num shift by 4 bits A12 >> A8(0) + bank = (buff->page_num)>>4; + nes_cpu_wr(0x5000, bank); //bank @ $8000-8FFF + + write_page_tssop( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); + } break; case CHRROM: //$0000 - write_page_chr( 0, addrH, buff, nes_ppu_wr, nes_ppu_rd ); + if (buff->mapper == NROM) { + write_page_chr( 0, addrH, buff, nes_ppu_wr, nes_ppu_rd ); + } + if (buff->mapper == CDREAM) { + //select bank + //8KB banks $0000-1FFF + //page_num shift by 5 bits A13 >> A8(0) + bank = (buff->page_num)>>5; + + //write bank to register + //done inside write routine + //nes_cpu_wr(0x8000, bank<<4); + + addrH &= 0x1F; //only A12-8 are directly addressable + write_page_chr_cdream( bank, addrH, buff, nes_ppu_wr, nes_ppu_rd ); + } + if (buff->mapper == DPROM) { + //select bank + //8KB banks $0000-1FFF + //page_num shift by 5 bits A13 >> A8(0) + bank = (buff->page_num)>>5; + + //write bank to register + nes_ppu_wr(0x3FFF, bank); + + addrH &= 0x1F; //only A12-8 are directly addressable + write_page_dualport( 0, addrH, buff, nes_dualport_wr, nes_dualport_rd ); + } break; case PRGRAM: //addrH |= 0x60; //$6000 @@ -576,6 +945,8 @@ uint8_t flash_buff( buffer *buff ) { //A15 high (LOROM) //A23-16 page_num[14-8] HADDR_SET( (buff->page_num)>>7 ); + //clear any reset state + //EXP0_HI(); write_page_snes( 0, addrH, buff, snes_rom_wr, snes_rom_rd ); case SNESRAM: //warn addrX = ((buff->page_num)>>8); diff --git a/firmware/source/io.c b/firmware/source/io.c index 5956308..1130ba1 100644 --- a/firmware/source/io.c +++ b/firmware/source/io.c @@ -71,7 +71,7 @@ void io_reset() //pull up control port CTL_ENABLE(); - MCO_IP_PU(); + M2_IP_PU(); ROMSEL_IP_PU(); PRGRW_IP_PU(); CSRD_IP_PU(); @@ -128,8 +128,8 @@ void nes_init() ROMSEL_OP(); ROMSEL_HI(); //WRAM (and state of m2 during first half of CPU cycle) - MCO_OP(); - MCO_LO(); + M2_OP(); + M2_LO(); //CPU RD PRGRW_OP(); PRGRW_HI(); diff --git a/firmware/source/main.c b/firmware/source/main.c index 789b5fc..f658fa4 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -59,6 +59,9 @@ int main(void) //Change system clock as needed init_clock(); + + //now enable GPIO and set + //trying to move to 48Mhz clock for all STM32 cores //If >24Mhz SYSCLK, must add wait state to flash //can also enable prefetch buffer @@ -87,6 +90,22 @@ int main(void) //intialize i/o and LED to pullup state io_reset(); +//this is just a quick hack to allow measuring HSE with a scope w/o loading the circuit with probes. +//#define DRIVE_MCO +#ifdef DRIVE_MCO + //drive HSE (8Mhz) divided by 8 = 1Mhz for crystal load capacitor calibration + RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_MCOPRE) | RCC_CFGR_MCOPRE_DIV8; /* MCO prescaler = div 8 */ + //RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_MCOPRE) | RCC_CFGR_MCOPRE_DIV16; /* MCO prescaler = div 16 */ + RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_MCO) | RCC_CFGR_MCO_HSE; /* MCO source HSE */ + //enable GPIO pin PA8 MCO AF0 + //RCC->AHBENR |= RCC_AHBENR_GPIOAEN; + //CTL_ENABLE(); + nes_init(); + //GPIOA->MODER = MODER_AF << (2*8U); //set PA8 to AF + GPIOA->MODER = 0x28020000; //set PA14, PA13, (SWD) & PA8 (MCO) to AF + //AF0 is the default value of GPIOx_AFRH/L registers so MCO is already selected as AF in use +#endif + //initialize jtag engine to be off pbje_status = PBJE_OFF; diff --git a/firmware/source/nes.c b/firmware/source/nes.c index 2361c45..da66f4b 100644 --- a/firmware/source/nes.c +++ b/firmware/source/nes.c @@ -38,14 +38,21 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r case NES_CPU_WR: nes_cpu_wr( operand, miscdata ); break; + case NES_DUALPORT_WR: + nes_dualport_wr( operand, miscdata ); + break; // case DISCRETE_EXP0_MAPPER_WR: // discrete_exp0_mapper_wr( operand, miscdata ); // break; + case NES_MMC1_WR: + mmc1_wr( operand, miscdata, 0 ); + break; //8bit return values: -// case EMULATE_NES_CPU_RD: -// *data = emulate_nes_cpu_rd( addrH, addrL ); -// break; + case EMULATE_NES_CPU_RD: + rdata[RD_LEN] = BYTE_LEN; + rdata[RD0] = emulate_nes_cpu_rd( operand ); + break; case NES_CPU_RD: rdata[RD_LEN] = BYTE_LEN; rdata[RD0] = nes_cpu_rd( operand ); @@ -54,6 +61,10 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r rdata[RD_LEN] = BYTE_LEN; rdata[RD0] = nes_ppu_rd( operand ); break; + case NES_DUALPORT_RD: + rdata[RD_LEN] = BYTE_LEN; + rdata[RD0] = nes_dualport_rd( operand ); + break; case CIRAM_A10_MIRROR: rdata[RD_LEN] = BYTE_LEN; rdata[RD0] = ciram_a10_mirroring( ); @@ -148,7 +159,7 @@ void discrete_exp0_prgrom_wr( uint16_t addr, uint8_t data ) // DATA_SET(data); // // //set M2 and /ROMSEL -// MCO_HI(); +// M2_HI(); // if( addr >= 0x8000 ) { //addressing cart rom space // ROMSEL_LO(); //romsel trails M2 during CPU operations // } @@ -158,7 +169,7 @@ void discrete_exp0_prgrom_wr( uint16_t addr, uint8_t data ) // NOP(); // // //latch data to cart memory/mapper -// MCO_LO(); +// M2_LO(); // ROMSEL_HI(); // // //retore PRG R/W to default @@ -209,67 +220,66 @@ void discrete_exp0_prgrom_wr( uint16_t addr, uint8_t data ) //} -// -// /* Desc:Emulate NES CPU Read as best possible -// * decode A15 from addrH to set /ROMSEL as expected -// * float EXP0 -// * toggle M2 as NES would -// * insert some NOP's in to be slow like NES -// * Note:not the fastest read operation -// * Pre: nes_init() setup of io pins -// * Post:address left on bus -// * data bus left clear -// * EXP0 left floating -// * Rtn: Byte read from PRG-ROM at addrHL -// */ -// uint8_t emulate_nes_cpu_rd( uint8_t addrH, uint8_t addrL ) -// { -// uint8_t read; //return value -// -// //m2 should be low as it aids in disabling WRAM -// //this is also m2 state at beginging of CPU cycle -// //all these pins should already be in this state, but -// //go ahead and setup just to be sure since we're trying -// //to be as accurate as possible -// _EXP0_FLT(); //this could have been left pulled up -// _M2_LO(); //start of CPU cycle -// _ROMSEL_HI(); //trails M2 -// _PRGRW_RD(); //happens just after M2 -// -// //set address bus -// ADDR_OUT = addrL; -// _ADDRH_SET(addrH); -// -// //couple NOP's to wait a bit -// NOP(); -// NOP(); -// -// //set M2 and /ROMSEL -// if( addrH >= 0x80 ) { //addressing cart rom space -// _M2_HI(); -// _ROMSEL_LO(); //romsel trails M2 during CPU operations -// } else { -// _M2_HI(); -// } -// -// //couple more NOP's waiting for data -// NOP(); -// NOP(); -// NOP(); -// NOP(); -// NOP(); -// NOP(); -// -// //latch data -// read = DATA_IN; -// -// //return bus to default -// _M2_LO(); -// _ROMSEL_HI(); -// -// return read; -// } -// + +/* Desc:Emulate NES CPU Read as best possible + * decode A15 from addrH to set /ROMSEL as expected + * float EXP0 + * toggle M2 as NES would + * insert some NOP's in to be slow like NES + * Note:not the fastest read operation + * Pre: nes_init() setup of io pins + * Post:address left on bus + * data bus left clear + * EXP0 left floating + * Rtn: Byte read from PRG-ROM at addrHL + */ +uint8_t emulate_nes_cpu_rd( uint16_t addr ) +{ + uint8_t read; //return value + + //m2 should be low as it aids in disabling WRAM + //this is also m2 state at beginging of CPU cycle + //all these pins should already be in this state, but + //go ahead and setup just to be sure since we're trying + //to be as accurate as possible + EXP0_IP_FL(); //this could have been left pulled up + M2_LO(); //start of CPU cycle + ROMSEL_HI(); //trails M2 + PRGRW_HI(); //happens just after M2 + + //set address bus + ADDR_SET(addr); + + //couple NOP's to wait a bit + NOP(); + NOP(); + + //set M2 and /ROMSEL + if( addr >= 0x8000 ) { //addressing cart rom space + M2_HI(); + ROMSEL_LO(); //romsel trails M2 during CPU operations + } else { + M2_HI(); + } + + //couple more NOP's waiting for data + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + + //latch data + DATA_RD(read); + + //return bus to default + M2_LO(); + ROMSEL_HI(); + + return read; +} + /* Desc:NES CPU Read without being so slow * decode A15 from addrH to set /ROMSEL as expected * float EXP0 @@ -288,7 +298,7 @@ uint8_t nes_cpu_rd( uint16_t addr ) ADDR_SET(addr); //set M2 and /ROMSEL - MCO_HI(); + M2_HI(); if( addr >= 0x8000 ) { //addressing cart rom space ROMSEL_LO(); //romsel trails M2 during CPU operations } @@ -305,7 +315,7 @@ uint8_t nes_cpu_rd( uint16_t addr ) DATA_RD(read); //return bus to default - MCO_LO(); + M2_LO(); ROMSEL_HI(); return read; @@ -346,7 +356,7 @@ void nes_cpu_wr( uint16_t addr, uint8_t data ) DATA_SET(data); //set M2 and /ROMSEL - MCO_HI(); + M2_HI(); if( addr >= 0x8000 ) { //addressing cart rom space ROMSEL_LO(); //romsel trails M2 during CPU operations } @@ -356,7 +366,7 @@ void nes_cpu_wr( uint16_t addr, uint8_t data ) NOP(); //latch data to cart memory/mapper - MCO_LO(); + M2_LO(); ROMSEL_HI(); //retore PRG R/W to default @@ -366,6 +376,7 @@ void nes_cpu_wr( uint16_t addr, uint8_t data ) DATA_IP(); } + /* Desc:NES PPU Read * decode A13 from addrH to set /A13 as expected * Pre: nes_init() setup of io pins @@ -445,6 +456,87 @@ void nes_ppu_wr( uint16_t addr, uint8_t data ) } + +/* Desc:NES dual port Read from the PPU + * /A13 as ignored + * Pre: nes_init() setup of io pins + * Post:address left on bus + * data bus left clear + * Rtn: Byte read from CHR-ROM/RAM at addrHL + */ +uint8_t nes_dualport_rd( uint16_t addr ) +{ + uint8_t read; //return value + + ADDR_SET( addr ); + + //enable data path + M2_HI(); //M2 is kinda like R/W setting direction + ROMSEL_LO(); //enable data buffers + //data should now be driven on the bus but invalid + + //set CHR /RD and /WR + CSRD_LO(); + + //couple more NOP's waiting for data + //zero nop's returned previous databus value + NOP(); //one nop got most of the bits right + NOP(); //two nop got all the bits right + NOP(); //add third nop for some extra + + //latch data + DATA_RD(read); + + //return bus to default + CSRD_HI(); + M2_LO(); + ROMSEL_HI(); + + return read; +} + +/* Desc:NES DUALPORT Write + * /A13 ignored + * Pre: nes_init() setup of io pins + * Post:data written to addrHL + * address left on bus + * data bus left clear + * Rtn: None + */ + +void nes_dualport_wr( uint16_t addr, uint8_t data ) +{ + + ADDR_SET( addr ); + + //enable data path + M2_LO(); //M2 is kinda like R/W setting direction + ROMSEL_LO(); //enable data buffers + //data should now be driven on the bus but invalid + + //put data on bus + DATA_OP(); + DATA_SET(data); + + NOP(); + + //set CHR /RD and /WR + CSWR_LO(); + + //might need to wait longer for some carts... + NOP(); //one can't hurt + + //latch data to memory + CSWR_HI(); + + //clear data bus + DATA_IP(); + ROMSEL_HI(); + +} + + + /* Desc:PPU CIRAM A10 NT arrangement sense * Toggle A11 and A10 and read back CIRAM A10 * report back if vert/horiz/1scnA/1scnB @@ -460,17 +552,20 @@ uint8_t ciram_a10_mirroring( void ) { uint16_t readV, readH; + //set A11, clear A10 + //ADDRH(A11_BYTE); setting A11 in this manner doesn't work for some reason.. + ADDR_SET(0x0800); + CIA10_RD(readH); + //set A10, clear A11 ADDRH(A10_BYTE); + //ADDR_SET(0x0400); CIA10_RD(readV); - //set A11, clear A10 - ADDRH(A11_BYTE); - CIA10_RD(readH); //if CIRAM A10 was always low -> 1 screen A if ((readV==0) & (readH==0)) return MIR_1SCNA; - //if CIRAM A10 was always hight -> 1screen B + //if CIRAM A10 was always high -> 1 screen B if ((readV!=0) & (readH!=0)) return MIR_1SCNB; //if CIRAM A10 toggled with A10 -> Vertical mirroring, horizontal arrangement if ((readV!=0) & (readH==0)) return MIR_VERT; @@ -503,7 +598,7 @@ uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 ADDRH(addrH); //set M2 and /ROMSEL - MCO_HI(); + M2_HI(); if( addrH >= 0x80 ) { //addressing cart rom space ROMSEL_LO(); //romsel trails M2 during CPU operations } @@ -530,7 +625,7 @@ uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 } //return bus to default - MCO_LO(); + M2_LO(); ROMSEL_HI(); //return index of last byte read @@ -590,3 +685,95 @@ uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 //return index of last byte read return i; } + + +/* Desc:NES DUAL PORT PPU Page Read with optional USB polling + * /A13 ignored + * if poll is true calls usbdrv.h usbPoll fuction + * this is needed to keep from timing out when double buffering usb data + * Pre: nes_init() setup of io pins + * num_bytes can't exceed 256B page boundary + * Post:address left on bus + * data bus left clear + * data buffer filled starting at first for len number of bytes + * Rtn: Index of last byte read + */ +uint8_t nes_dualport_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ) +{ + uint8_t i; + + //ignore /A13, board doesn't see it anyway + ADDRH(addrH); + + //now that data bus is no longer needed, + //can enable data path out of cart + M2_HI(); + ROMSEL_LO(); + + //set CHR /RD and /WR + CSRD_LO(); + + //set lower address bits + ADDRL(first); //doing this prior to entry and right after latching + NOP(); //adding extra NOP as it was needed on PRG + //gives longest delay between address out and latching data + + for( i=0; i<=len; i++ ) { + //couple more NOP's waiting for data + if ( poll == FALSE ) { + NOP(); //one prob good enough considering the if/else + NOP(); + } else { + usbPoll(); + } + //latch data + DATA_RD(data[i]); + //set lower address bits + first ++; + ADDRL(first); + } + + //return bus to default + CSRD_HI(); + M2_LO(); + ROMSEL_HI(); + + //return index of last byte read + return i; +} + + + +/* Desc:NES MMC1 Write + * write to entirety of MMC1 register + * address selects register that's written to + * address must be >= $8000 where registers are located + * Pre: nes_init() setup of io pins + * MMC1 shift register has been reset by writting with D7 set + * bit7 must be clear, else the shift register will be reset + * Post:MMC1 register contains value provided + * address left on bus + * data left on bus, but pullup only + * Rtn: None + */ +void mmc1_wr( uint16_t addr, uint8_t data, uint8_t reset ) +{ + uint8_t i; + + //reset shift register if requested + if( reset ) { + nes_cpu_rd(0x8000); + nes_cpu_wr(0x8000, 0x80); + } + + //5 bits in register D0-4, so 5 total writes through D0 + for( i=0; i<5; i++) { + //MMC1 ignores all but the first write, so perform a read first + nes_cpu_rd(addr); + nes_cpu_wr(addr, data); + data = data >> 1; + } + + return; +} + diff --git a/firmware/source/nes.h b/firmware/source/nes.h index db82764..c18a9e7 100644 --- a/firmware/source/nes.h +++ b/firmware/source/nes.h @@ -10,14 +10,18 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r void discrete_exp0_prgrom_wr( uint16_t addr, uint8_t data ); //void discrete_exp0_mapper_wr( uint16_t addr, uint8_t data ); -//uint8_t emulate_nes_cpu_rd( uint8_t addrH, uint8_t addrL ); +uint8_t emulate_nes_cpu_rd( uint16_t addr ); uint8_t nes_cpu_rd( uint16_t addr ); void nes_cpu_wr( uint16_t addr, uint8_t data ); uint8_t nes_ppu_rd( uint16_t addr ); void nes_ppu_wr( uint16_t addr, uint8_t data ); +uint8_t nes_dualport_rd( uint16_t addr ); +void nes_dualport_wr( uint16_t addr, uint8_t data ); uint8_t ciram_a10_mirroring( void ); uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t last, uint8_t poll ); uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t last, uint8_t poll ); +uint8_t nes_dualport_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ); +void mmc1_wr( uint16_t addr, uint8_t data, uint8_t reset ); #define A10_BYTE 0x04 #define A11_BYTE 0x08 diff --git a/firmware/source/pinport.h b/firmware/source/pinport.h index 408fc9b..75abedc 100644 --- a/firmware/source/pinport.h +++ b/firmware/source/pinport.h @@ -16,13 +16,13 @@ uint8_t pinport_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_ // CONTROL (CTL) PORT PINS //////////////////////////////// -// PC0 "MCO" -#define MCO_IP_PU() CTL_IP_PU(MCObank, MCO) -#define MCO_IP_FL() CTL_IP_FL(MCObank, MCO) -#define MCO_OP() CTL_OP(MCObank, MCO) -#define MCO_LO() CTL_SET_LO(MCObank, MCO) -#define MCO_HI() CTL_SET_HI(MCObank, MCO) -#define MCO_RD(val) CTL_RD(MCObank, MCO, val) +// PC0 "M2" +#define M2_IP_PU() CTL_IP_PU(M2bank, M2) +#define M2_IP_FL() CTL_IP_FL(M2bank, M2) +#define M2_OP() CTL_OP(M2bank, M2) +#define M2_LO() CTL_SET_LO(M2bank, M2) +#define M2_HI() CTL_SET_HI(M2bank, M2) +#define M2_RD(val) CTL_RD(M2bank, M2, val) // PC1 "ROMSEL" #define ROMSEL_IP_PU() CTL_IP_PU(ROMSELbank, ROMSEL) diff --git a/firmware/source/pinport_al.h b/firmware/source/pinport_al.h index 2f2db78..33b4eb9 100644 --- a/firmware/source/pinport_al.h +++ b/firmware/source/pinport_al.h @@ -4,6 +4,7 @@ //Define the board type in makefile //#define AVR_KAZZO //#define STM_ADAPTER +//#define STM_INL6_PROTO //#define STM_INL6 #ifdef AVR_CORE @@ -213,6 +214,89 @@ void software_AXL_CLK(); // Unlike all previous version above this has direct access to most pins // Only exception is one Flipflop for SegaGen A17-18, 20-23, #LO_MEM, & #TIME // flipflop also drives SNES PA0-7 +// +// This version had 16bit data bus mapped to PB2-15 & PA9-10 (D0-15 linearly) +// for 5v tolerance. This kept the data bits linear, but doesn't have +// much benefit and comes at the cost of slowing all 8bit data transfers. +// The final version below changed this mapping. +// +// PA8: NES connected to M2 & 21.4Mhz SYSTEM CLOCK +// SNES connected to both SYSCLK & MASTER CLOCK +// PA10: NES- CIRAM_CE +// PB1: NES CIC CLK & LED, this caused problems when SWIM needed to be on CICCLK +// SNES PA0-7 are behind flipflop, some of other expansion pins are SW alt signals or shared +// PA4: AUDIOL is connected to NES/famicom audio out which may conflict with GB pin31 irq/audio +// +// +// STM32F070RBT6 "INL RETRO 6" First Release +// minor changes to prototype above still has 6 connectors: +// GBA/DMG, SNES/SFC, NES, N64, Sega gen, Famicom +// Orange solder mask +// Labeled "INL RETRO PROGRAMMER DUMPER V2.0" +// Dated APR 2018 +// Like prototype this has direct access to most pins but some are behind a flipflop +// It changed pinouts to gain connection to *ALL* cartridge pins unlike the prototype +// This version also added P-mos transistor and schottky diode for software control +// of Gameboy/GBA supply voltage. +// +// PB8-15: DATA 0-7 +// PB2-7 and PA9-10: DATA 8-15 +// +// NES changes: +// Expansion port connections are affected by rearrangement of DATA PORT +// but the assignment of D# to EXP# are the same +// NES M2 & SYSTEM CLOCK split up & CIRAM /CE moved +// PA8: 21Mhz SYSCLK +// PA10: M2 (can now be driven independent of software with TIM1_CH3) +// PA13: CIRAM /CE +// CIC CLK moved off of LED signal since will be used for SWIM +// PC0: Drives both A0 & CIC CLK +// PB1: LED doesn't share any NES signals +// +// SNES changes: +// Expansion PA0-7 are no longer behind flipflop, connected to AD0-7 instead +// PA /RD, PA /WR, /REFRESH, & /WRAMSEL are now mapped to FLIPFLOP:4-7 +// SYSCLK & MASTER CLOCK split up +// PA1: SYSCLK (pin 57) +// PA8: 21Mhz MASTER CLOCK +// PA7: unused to keep from conflicting with GB power sel +// PA13: connected to EXPAND now +// PC0: Drives both A0 & CIC CLK +// +// SEGA GENESIS changes: +// PC0: AD0 is connected to A1 & #CAS +// PC1: AD1 is connected to A2 & Vsync +// PC2: AD2 is connected to A3 & Video +// PB1: LED is connected to #H_RESET (bidirectional hard reset should be open drain) +// +// +// GAMEBOY/GBA changes: +// pin31 GBirq/GBAaudio PA5 (AUDIOR) because NES/famicom may drive PA4 (audioL) +// PA7: selects GB voltage supply via Pmos & diode +// mcu pin connects to pmos gate with source connected to 5v +// schottky diode between 3v3 and GB power +// -PA7 low: Vgs = -5v, mosfet on, GB power ~5v +// -PA7 high: Vgs = -1.7v mosfet mostly off +// diode supplies power ~3v +// without a load on the GB slot, ~5v is present regardless of PA7 +// BSS84 mosfet has max Id of 130mA with Rds of ~10ohm +// can support up to 520mA pulsed +// RB521S30T schottky diode has Vf of 0.5v @ 200mA +// @ 25C 20ma: Vf= 0.3v, 100mA: Vf= 0.37v +// testing data 47ohm load: +// PA7 low (0v @ gate) 90mA 4.74v (~2.8Rds plus fuse cable etc) +// PA7 hi (3.3v @ gate) 54mA 2.97v (~0.33Vf) +// testing data 23ohm load: +// PA7 low (0v @ gate) 159mA 4.51v (~2.8Rds plus fuse cable etc) +// Vusb = 4.84, Vfuse = 4.77, -> Vds = 260mV -> Rds = 1.6ohm +// PA7 hi (3.3v @ gate) 103mA 2.94v (~0.36Vf) +// in practice should be able to expect GB power to be 2.9v / 4.5v +// this more than satisfies 2.7v requirement for 3v flash +// and 4.5v is more than adequate for 5v chips/regulators +// +// +// +// @@ -368,11 +452,31 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#ifdef STM_INL6 +#ifdef STM_INL6_PROTO - // PC0 "MCO" mcupinA8 + // PC0 "M2" mcupinA8 #define C0bank GPIOA #define C0 (8U) + + // PC6 "CICE" mcupinA10 + #define C6bank GPIOA + #define C6 (10U) + +#endif + +#ifdef STM_INL6 + + // PC0 "M2" mcupinA10 + #define C0bank GPIOA + #define C0 (10U) + + // PC6 "CICE" mcupinA13 + #define C6bank GPIOA + #define C6 (13U) + +#endif + +#if defined (STM_INL6_PROTO) || defined(STM_INL6) // PC1 "ROMSEL" mcupinA0 #define C1bank GPIOA @@ -394,10 +498,6 @@ void software_AXL_CLK(); #define C5bank GPIOA #define C5 (3U) - // PC6 "CICE" mcupinA10 - #define C6bank GPIOA - #define C6 (10U) - // PC7 "AHL" // Not defined #define C7nodef @@ -434,7 +534,7 @@ void software_AXL_CLK(); #define C15bank GPIOA #define C15 (5U) - // PC16 "CIN" mcupinA7 + // PC16 "GBP" mcupinA7 #define C16bank GPIOA #define C16 (7U) @@ -459,6 +559,7 @@ void software_AXL_CLK(); #define C21 C15 /* NEED MORE UNIQUE names for these pins to not conflict with Data port definitions... + * these changed around from proto to final // PCxx "D8" mcupinB10 #define Cxxbank GPIOB #define Cxx (10U) @@ -492,11 +593,11 @@ void software_AXL_CLK(); #define RCC_AHBENR_EXP (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN) -#endif //STM_INL6 +#endif //STM_INL6 & PROTO #ifdef STM_ADAPTER - // PC0 "MCO" mcupinA3 + // PC0 "M2" mcupinA3 #define C0bank GPIOA #define C0 (3U) @@ -563,7 +664,7 @@ void software_AXL_CLK(); // Not defined #define C15nodef - // PC16 "CIN" + // PC16 "GBP" // Not defined #define C16nodef @@ -597,7 +698,7 @@ void software_AXL_CLK(); #ifdef AVR_KAZZO - // PC0 "MCO" mcupinC0 + // PC0 "M2" mcupinC0 #define C0bank GPIOC #define C0 (0U) @@ -664,7 +765,7 @@ void software_AXL_CLK(); // not defined #define C15nodef - // PC16 "CIN" + // PC16 "GBP" // not defined #define C16nodef @@ -697,9 +798,9 @@ void software_AXL_CLK(); //////////////////////////////////////////////////////////////////////////////// // // PC0-13 are defined based on majority of avr kazzos PORTC-PORTD -// PC0 "MCO" mcu clock out M2/phi2, Sysclk, etc -#define MCO C0 -#define MCObank C0bank +// PC0 "M2" NES M2/phi2 +#define M2 C0 +#define M2bank C0bank // PC1 "ROMSEL" Cartridge rom enable #define ROMSEL C1 @@ -733,7 +834,7 @@ void software_AXL_CLK(); #define EXP0 C8 #define EXP0bank C8bank -// PC9 "LED" kazzos tied this to NES EXP9, INL6 connects to CIC CLK +// PC9 "LED" kazzos tied this to NES EXP9 #define LED C9 #define LEDbank C9bank @@ -762,9 +863,9 @@ void software_AXL_CLK(); #define AUDR C15 #define AUDRbank C15bank -// PC16 "CIN" CIC data in -#define CIN C16 -#define CINbank C16bank +// PC16 "GBP" Gameboy power select +#define GBP C16 +#define GBPbank C16bank // PC17 "SWD" mcu debug #define SWD C17 @@ -853,7 +954,8 @@ void software_AXL_CLK(); // CONTROL PORT MACROS to simplify flipflop operations // -#ifndef STM_INL6 +//#ifndef STM_INL6 +#if !defined (STM_INL6_PROTO) && !defined(STM_INL6) #ifdef GREEN_KAZZO #define AHL_CLK() software_AHL_CLK() @@ -882,15 +984,36 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- // -#ifdef STM_INL6 +#ifdef STM_INL6 + + //All 8bits are on upper byte of GPIOB inorder + //PB8-15 map to D0-7 + //PB2-7 map to D8-13 + //PA9-10 map to D14-15 (unchanged from prototype) + #define Dbank GPIOB + + //IP and OP assume MODER[1] is clear (ie not set to Alt Func) + //also assume PUPDR is reset default floating + #define DATA_IP_PU() Dbank->MODER &= ~(MODER_OP_ALL & 0xFFFF0000); Dbank->PUPDR |= (PUPDR_PU_ALL & 0xFFFF0000) + #define DATA_IP() Dbank->MODER &= ~(MODER_OP_ALL & 0xFFFF0000) + #define DATA_OP() Dbank->MODER |= (MODER_OP_ALL & 0xFFFF0000) + #define DATA_SET(data) Dbank->ODR = (Dbank->ODR & 0x00FF) | (data<<8) + #define DATA_RD(data) data = (Dbank->IDR>>8) & 0x00FF + + #define DATA_EN_CLK() RCC->AHBENR |= RCC_AHBENR_DATA + #define DATA_ENABLE() DATA_EN_CLK(); DATA_IP_PU(); + + +#endif //STM_INL6 + +#ifdef STM_INL6_PROTO //All 8bits are on GPIOB inorder, but mapped to bits9-2 for 5v tolerance //I get why I designed it that way so D8-13 could follow in order.. //But with D8-15 required to be broken up anyways, perhaps it would have //made more sense to map D0-7 to bits 9-15 so byte access could be performed //without shifting on Data7-0... - //IDK if I will reroute the board for production or not... Only other way to - //do it senisbly really makes a mess of the upper byte of Data + //This is what I did for final production version v2.0 above #define Dbank GPIOB //IP and OP assume MODER[1] is clear (ie not set to Alt Func) @@ -905,7 +1028,7 @@ void software_AXL_CLK(); #define DATA_ENABLE() DATA_EN_CLK(); DATA_IP_PU(); -#endif //STM_INL6 +#endif //STM_INL6_PROTO #ifdef STM_ADAPTER @@ -953,7 +1076,7 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#ifdef STM_INL6 +#if defined (STM_INL6_PROTO) || defined(STM_INL6) //All 16bits are on GPIOC in perfect alignment #define Abank GPIOC @@ -962,13 +1085,18 @@ void software_AXL_CLK(); #define ADDR_IP() Abank->MODER &= ~MODER_OP_ALL #define ADDR_OP() Abank->MODER |= MODER_OP_ALL #define ADDRL(low) Abank->ODR = (Abank->ODR & 0xFF00) | low - #define ADDRH(high) Abank->ODR = (Abank->ODR & 0x00FF) | (high<<8) + #define ADDRH(high) Abank->ODR = (Abank->ODR & 0x00FF) | (high<<8) + //Not sure why but this wasn't working on inl6 detection of vertical mirroring was failing.. + //seems to not be reading the ODR, maybe getting optimized out..? + //works fine on stmad and AVR which have ADDRH behind flipflop + //Appears to be working for setting A10, but not A11 reguardless of order of execution.. + //TODO really these macros should be making byte writes to the registers, not 16bit RMW #define ADDR_SET(hword) Abank->ODR = hword #define ADDR_EN_CLK() RCC->AHBENR |= RCC_AHBENR_ADDR #define ADDR_ENABLE() ADDR_EN_CLK(); ADDR_OP() -#endif //STM_INL6 +#endif //STM_INL6 & PROTO #ifdef STM_ADAPTER @@ -1036,7 +1164,7 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#ifdef STM_INL6 +#if defined (STM_INL6_PROTO) || defined(STM_INL6) //pins1-5 = GPIOB10-14 (D8-12), pin6 = GPIOA4 (AUDL), pin7 = GPIOB15 (D13), pin8 = GPIOA14 (SWCLK) //these defines are quite the mess currently due to pins all over the place @@ -1056,7 +1184,7 @@ void software_AXL_CLK(); #define EXP_ENABLE() ADDR_EN_CLK(); EXP_OP() #define EXP_DISABLE() EXP_PU(); EXP_IP() -//end STM_INL6 +//end STM_INL6 & PROTO #else //AVR_KAZZO or STM_ADAPTER @@ -1097,16 +1225,16 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#ifdef STM_INL6 +#if defined STM_INL6_PROTO //A16-21 are on PB10-15 these also map to EXP1-5, & 7 //A22-23 are on PA9-10 these also map to CIRAM A10 & CIRAM /CE respectively #define A16_21bank GPIOB #define A22_23bank GPIOA - #define HADDR_PU() A16_21bank->PUPDR |= (PUPDR_PU_ALL & 0xFFF00000); A22_23bank->PUPDR |= (PUPDR_PU_ALL & 0x0003C000) - #define HADDR_IP() A16_21bank->MODER &=~(MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER &=~(MODER_OP_ALL & 0x0003C000) - #define HADDR_OP() A16_21bank->MODER |= (MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER |= (MODER_OP_ALL & 0x0003C000) + #define HADDR_PU() A16_21bank->PUPDR |= (PUPDR_PU_ALL & 0xFFF00000); A22_23bank->PUPDR |= (PUPDR_PU_ALL & 0x003C0000) + #define HADDR_IP() A16_21bank->MODER &=~(MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER &=~(MODER_OP_ALL & 0x003C0000) + #define HADDR_OP() A16_21bank->MODER |= (MODER_OP_ALL & 0xFFF00000); A22_23bank->MODER |= (MODER_OP_ALL & 0x003C0000) #define HADDR_SET(val) A16_21bank->ODR = ((A16_21bank->ODR&0x03FF) | (val<<10 & 0xFC00)); A22_23bank->ODR = ((A22_23bank->ODR & 0xF9FF) | (val<<3 & 0x0600)) @@ -1114,7 +1242,24 @@ void software_AXL_CLK(); #define HADDR_ENABLE() HADDR_EN_CLK(); HADDR_OP() #define HADDR_DISABLE() HADDR_PU(); HADDR_IP() -//end STM_INL6 +#elif defined STM_INL6 + + //A16-21 are on PB2-7 these also map to EXP1-5, & 7 (changed from prototype) + //A22-23 are on PA9-10 these also map to CIRAM A10 & CIRAM /CE respectively + #define A16_21bank GPIOB + #define A22_23bank GPIOA + + #define HADDR_PU() A16_21bank->PUPDR |= (PUPDR_PU_ALL & 0x0000FFF0); A22_23bank->PUPDR |= (PUPDR_PU_ALL & 0x003C0000) + #define HADDR_IP() A16_21bank->MODER &=~(MODER_OP_ALL & 0x0000FFF0); A22_23bank->MODER &=~(MODER_OP_ALL & 0x003C0000) + #define HADDR_OP() A16_21bank->MODER |= (MODER_OP_ALL & 0x0000FFF0); A22_23bank->MODER |= (MODER_OP_ALL & 0x003C0000) + + #define HADDR_SET(val) A16_21bank->ODR = ((A16_21bank->ODR&0xFF03) | (val<<2 & 0x00FC)); A22_23bank->ODR = ((A22_23bank->ODR & 0xF9FF) | (val<<3 & 0x0600)) + + #define HADDR_EN_CLK() RCC->AHBENR |= RCC_AHBENR_HADDR + #define HADDR_ENABLE() HADDR_EN_CLK(); HADDR_OP() + #define HADDR_DISABLE() HADDR_PU(); HADDR_IP() + +//end STM_INL6 & PROTO #else //AVR_KAZZO or STM_ADAPTER @@ -1156,7 +1301,7 @@ void software_AXL_CLK(); // // --------------------------------------------------------------------------------------- -#ifdef STM_INL6 +#if defined (STM_INL6_PROTO) || defined(STM_INL6) // PE0 "A0" mcupinC0 #define E0bank GPIOC @@ -1179,7 +1324,7 @@ void software_AXL_CLK(); #define E4 (12U) -#endif //STM_INL6 +#endif //STM_INL6 & PROTO #ifdef STM_ADAPTER @@ -1228,7 +1373,7 @@ void software_AXL_CLK(); #define D0bank E1bank //JTAG pins for INL6 -#ifdef STM_INL6 +#if defined (STM_INL6_PROTO) || defined(STM_INL6) //TDI #define D8 E2 diff --git a/firmware/source/snes.c b/firmware/source/snes.c index 10a3448..7276d19 100644 --- a/firmware/source/snes.c +++ b/firmware/source/snes.c @@ -75,6 +75,22 @@ uint8_t snes_rom_rd( uint16_t addr ) NOP(); //add third nop for some extra NOP(); //one more can't hurt //might need to wait longer for some carts... + //this was long enough for AVR + + //SNES v2.0p needed 6 more NOPs compared to v3.x & v1.x + //seems like a crazy long time... + NOP(); //v2.0p gets prod & density ID correct with addition of this NOP + //not sure why manf ID and sector ID are so much slower on v2 board + NOP(); + NOP(); //v2.0p gets most bits right after 3 NOPs + NOP(); + NOP(); //more after 5 extra... + NOP(); //all after 6 extra.. + //sounds like 1 AVR NOP needs to equal 2STM32 + //AVR running at 16Mhz, STM32 running at 48Mhz (3x as fast) + NOP(); //4MB proto needed this to get manfID, sector still bad + NOP(); //all good on 4MB proto + NOP(); //swapped for OR gate and takes a little longer now..? //latch data DATA_RD(read); @@ -229,414 +245,3 @@ uint8_t snes_rom_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint } -// /* Desc: Discrete board PRG-ROM only write, does not write to mapper -// * PRG-ROM /WE <- EXP0 w/PU -// * PRG-ROM /OE <- /ROMSEL -// * PRG-ROM /CE <- GND -// * PRG-ROM write: /WE & /CE low, /OE high -// * mapper '161 CLK <- /ROMSEL -// * mapper '161 /LOAD <- PRG R/W -// * mapper '161 /LOAD must be low on rising edge of CLK to latch data -// * This is a /WE controlled write. Address latched on falling edge, -// * and data latched on rising edge EXP0 -// * Note:addrH bit7 has no effect (ends up on PPU /A13) -// * /ROMSEL, M2, & PRG R/W signals untouched -// * Pre: nes_init() setup of io pins -// * Post:data latched by PRG-ROM, mapper register unaffected -// * address left on bus -// * data left on bus, but pullup only -// * EXP0 left pulled up -// * Rtn: None -// */ -// void discrete_exp0_prgrom_wr( uint16_t addr, uint8_t data ) -// { -// ADDR_SET(addr); -// -// DATA_OP(); -// DATA_SET(data); -// -// EXP0_OP(); //Tas = 0ns, Tah = 30ns -// EXP0_LO(); -// EXP0_IP_PU(); //Twp = 40ns, Tds = 40ns, Tdh = 0ns -// //16Mhz avr clk = 62.5ns period guarantees timing reqts -// DATA_IP(); -// } -// -// // -// // /* Desc:Emulate NES CPU Read as best possible -// // * decode A15 from addrH to set /ROMSEL as expected -// // * float EXP0 -// // * toggle M2 as NES would -// // * insert some NOP's in to be slow like NES -// // * Note:not the fastest read operation -// // * Pre: nes_init() setup of io pins -// // * Post:address left on bus -// // * data bus left clear -// // * EXP0 left floating -// // * Rtn: Byte read from PRG-ROM at addrHL -// // */ -// // uint8_t emulate_nes_cpu_rd( uint8_t addrH, uint8_t addrL ) -// // { -// // uint8_t read; //return value -// // -// // //m2 should be low as it aids in disabling WRAM -// // //this is also m2 state at beginging of CPU cycle -// // //all these pins should already be in this state, but -// // //go ahead and setup just to be sure since we're trying -// // //to be as accurate as possible -// // _EXP0_FLT(); //this could have been left pulled up -// // _M2_LO(); //start of CPU cycle -// // _ROMSEL_HI(); //trails M2 -// // _PRGRW_RD(); //happens just after M2 -// // -// // //set address bus -// // ADDR_OUT = addrL; -// // _ADDRH_SET(addrH); -// // -// // //couple NOP's to wait a bit -// // NOP(); -// // NOP(); -// // -// // //set M2 and /ROMSEL -// // if( addrH >= 0x80 ) { //addressing cart rom space -// // _M2_HI(); -// // _ROMSEL_LO(); //romsel trails M2 during CPU operations -// // } else { -// // _M2_HI(); -// // } -// // -// // //couple more NOP's waiting for data -// // NOP(); -// // NOP(); -// // NOP(); -// // NOP(); -// // NOP(); -// // NOP(); -// // -// // //latch data -// // read = DATA_IN; -// // -// // //return bus to default -// // _M2_LO(); -// // _ROMSEL_HI(); -// // -// // return read; -// // } -// // -// /* Desc:NES CPU Read without being so slow -// * decode A15 from addrH to set /ROMSEL as expected -// * float EXP0 -// * toggle M2 as NES would -// * Pre: nes_init() setup of io pins -// * Post:address left on bus -// * data bus left clear -// * EXP0 left floating -// * Rtn: Byte read from PRG-ROM at addrHL -// */ -// uint8_t nes_cpu_rd( uint16_t addr ) -// { -// uint8_t read; //return value -// -// //set address bus -// ADDR_SET(addr); -// -// //set M2 and /ROMSEL -// MCO_HI(); -// if( addr >= 0x8000 ) { //addressing cart rom space -// ROMSEL_LO(); //romsel trails M2 during CPU operations -// } -// -// //couple more NOP's waiting for data -// //zero nop's returned previous databus value -// NOP(); //one nop got most of the bits right -// NOP(); //two nop got all the bits right -// NOP(); //add third nop for some extra -// NOP(); //one more can't hurt -// //might need to wait longer for some carts... -// -// //latch data -// DATA_RD(read); -// -// //return bus to default -// MCO_LO(); -// ROMSEL_HI(); -// -// return read; -// } -// -// /* Desc:NES CPU Write -// * Just as you would expect NES's CPU to perform -// * A15 decoded to enable /ROMSEL -// * This ends up as a M2 and/or /ROMSEL controlled write -// * Note:addrH bit7 has no effect (ends up on PPU /A13) -// * EXP0 floating -// * Pre: nes_init() setup of io pins -// * Post:data latched by anything listening on the bus -// * address left on bus -// * data left on bus, but pullup only -// * Rtn: None -// */ -// void nes_cpu_wr( uint16_t addr, uint8_t data ) -// { -// //Float EXP0 as it should be in NES -// EXP0_IP_FL(); -// -// //need for whole function -// //_DATA_OP(); -// -// //set addrL -// //ADDR_OUT = addrL; -// //latch addrH -// //DATA_OUT = addrH; -// //_AHL_CLK(); -// ADDR_SET(addr); -// -// //PRG R/W LO -// PRGRW_LO(); -// -// //put data on bus -// DATA_OP(); -// DATA_SET(data); -// -// //set M2 and /ROMSEL -// MCO_HI(); -// if( addr >= 0x8000 ) { //addressing cart rom space -// ROMSEL_LO(); //romsel trails M2 during CPU operations -// } -// -// //give some time -// NOP(); -// NOP(); -// -// //latch data to cart memory/mapper -// MCO_LO(); -// ROMSEL_HI(); -// -// //retore PRG R/W to default -// PRGRW_HI(); -// -// //Free data bus -// DATA_IP(); -// } -// -// /* Desc:NES PPU Read -// * decode A13 from addrH to set /A13 as expected -// * Pre: nes_init() setup of io pins -// * Post:address left on bus -// * data bus left clear -// * Rtn: Byte read from CHR-ROM/RAM at addrHL -// */ -// uint8_t nes_ppu_rd( uint16_t addr ) -// { -// uint8_t read; //return value -// -// //addr with PPU /A13 -// if (addr < 0x2000) { //below $2000 A13 clear, /A13 set -// addr |= PPU_A13N_WORD; -// } //above PPU $1FFF, A13 set, /A13 clear -// -// ADDR_SET( addr ); -// -// //set CHR /RD and /WR -// CSRD_LO(); -// -// //couple more NOP's waiting for data -// //zero nop's returned previous databus value -// NOP(); //one nop got most of the bits right -// NOP(); //two nop got all the bits right -// NOP(); //add third nop for some extra -// NOP(); //one more can't hurt -// //might need to wait longer for some carts... -// -// //latch data -// DATA_RD(read); -// -// //return bus to default -// CSRD_HI(); -// -// return read; -// } -// -// /* Desc:NES PPU Write -// * decode A13 from addrH to set /A13 as expected -// * flash: address clocked falling edge, data rising edge of /WE -// * Pre: nes_init() setup of io pins -// * Post:data written to addrHL -// * address left on bus -// * data bus left clear -// * Rtn: None -// */ -// -// void nes_ppu_wr( uint16_t addr, uint8_t data ) -// { -// -// //addr with PPU /A13 -// if (addr < 0x2000) { //below $2000 A13 clear, /A13 set -// addr |= PPU_A13N_WORD; -// } //above PPU $1FFF, A13 set, /A13 clear -// -// ADDR_SET( addr ); -// -// //put data on bus -// DATA_OP(); -// DATA_SET(data); -// -// NOP(); -// -// //set CHR /RD and /WR -// CSWR_LO(); -// -// //might need to wait longer for some carts... -// NOP(); //one can't hurt -// -// //latch data to memory -// CSWR_HI(); -// -// //clear data bus -// DATA_IP(); -// -// } -// -// -// /* Desc:PPU CIRAM A10 NT arrangement sense -// * Toggle A11 and A10 and read back CIRAM A10 -// * report back if vert/horiz/1scnA/1scnB -// * reports nesdev defined mirroring -// * does not report Nintendo's "Name Table Arrangement" -// * Pre: nes_init() setup of io pins -// * Post:address left on bus -// * Rtn: MIR_VERT, MIR_HORIZ, MIR_1SCNA, MIR_1SCNB -// * errors not really possible since all combinations -// * of CIRAM A10 level designate something valid -// */ -// uint8_t ciram_a10_mirroring( void ) -// { -// uint16_t readV, readH; -// -// //set A10, clear A11 -// ADDRH(A10_BYTE); -// CIA10_RD(readV); -// -// //set A11, clear A10 -// ADDRH(A11_BYTE); -// CIA10_RD(readH); -// -// //if CIRAM A10 was always low -> 1 screen A -// if ((readV==0) & (readH==0)) return MIR_1SCNA; -// //if CIRAM A10 was always hight -> 1screen B -// if ((readV!=0) & (readH!=0)) return MIR_1SCNB; -// //if CIRAM A10 toggled with A10 -> Vertical mirroring, horizontal arrangement -// if ((readV!=0) & (readH==0)) return MIR_VERT; -// //if CIRAM A10 toggled with A11 -> Horizontal mirroring, vertical arrangement -// if ((readV==0) & (readH!=0)) return MIR_HORZ; -// -// //shouldn't be here... -// return GEN_FAIL; -// } -// -// /* Desc:NES CPU Page Read with optional USB polling -// * decode A15 from addrH to set /ROMSEL as expected -// * float EXP0 -// * toggle M2 as NES would -// * if poll is true calls usbdrv.h usbPoll fuction -// * this is needed to keep from timing out when double buffering usb data -// * Pre: nes_init() setup of io pins -// * num_bytes can't exceed 256B page boundary -// * Post:address left on bus -// * data bus left clear -// * EXP0 left floating -// * data buffer filled starting at first to last -// * Rtn: Index of last byte read -// */ -// uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ) -// { -// uint8_t i; -// -// //set address bus -// ADDRH(addrH); -// -// //set M2 and /ROMSEL -// MCO_HI(); -// if( addrH >= 0x80 ) { //addressing cart rom space -// ROMSEL_LO(); //romsel trails M2 during CPU operations -// } -// -// //set lower address bits -// ADDRL(first); //doing this prior to entry and right after latching -// //gives longest delay between address out and latching data -// for( i=0; i<=len; i++ ) { -// //testing shows that having this if statement doesn't affect overall dumping speed -// if ( poll == FALSE ) { -// NOP(); //couple more NOP's waiting for data -// NOP(); //one prob good enough considering the if/else -// } else { -// usbPoll(); //Call usbdrv.h usb polling while waiting for data -// } -// //latch data -// DATA_RD(data[i]); -// //set lower address bits -// //ADDRL(++first); THIS broke things, on stm adapter because macro expands it twice! -// first++; -// ADDRL(first); -// } -// -// //return bus to default -// MCO_LO(); -// ROMSEL_HI(); -// -// //return index of last byte read -// return i; -// } -// -// /* Desc:NES PPU Page Read with optional USB polling -// * decode A13 from addrH to set /A13 as expected -// * if poll is true calls usbdrv.h usbPoll fuction -// * this is needed to keep from timing out when double buffering usb data -// * Pre: nes_init() setup of io pins -// * num_bytes can't exceed 256B page boundary -// * Post:address left on bus -// * data bus left clear -// * data buffer filled starting at first for len number of bytes -// * Rtn: Index of last byte read -// */ -// uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ) -// { -// uint8_t i; -// -// if (addrH < 0x20) { //below $2000 A13 clear, /A13 set -// //ADDRH(addrH | PPU_A13N_BYTE); -// //Don't do weird stuff like above! logic inside macro expansions can have weird effects!! -// addrH |= PPU_A13N_BYTE; -// ADDRH(addrH); -// } else { //above PPU $1FFF, A13 set, /A13 clear -// ADDRH(addrH); -// } -// -// //set CHR /RD and /WR -// CSRD_LO(); -// -// //set lower address bits -// ADDRL(first); //doing this prior to entry and right after latching -// //gives longest delay between address out and latching data -// -// for( i=0; i<=len; i++ ) { -// //couple more NOP's waiting for data -// if ( poll == FALSE ) { -// NOP(); //one prob good enough considering the if/else -// NOP(); -// } else { -// usbPoll(); -// } -// //latch data -// DATA_RD(data[i]); -// //set lower address bits -// first ++; -// ADDRL(first); -// } -// -// //return bus to default -// CSRD_HI(); -// -// //return index of last byte read -// return i; -// } diff --git a/firmware/source_stm_only/stm_init.c b/firmware/source_stm_only/stm_init.c index d5b0e10..0eb8f01 100644 --- a/firmware/source_stm_only/stm_init.c +++ b/firmware/source_stm_only/stm_init.c @@ -54,7 +54,11 @@ void HardFault_Handler(void) //pick define based on xtal setup for init_clock and init_usb_clock functions //#define NO_XTAL -#define XTAL_16Mhz +#ifdef STM_INL6 + #define XTAL_8Mhz +#else //kaz6 prototype & stm adapter have 16Mhz xtal + #define XTAL_16Mhz +#endif void init_clock() { #ifdef NO_XTAL // setup PLL for HSI * 2 = 16Mhz and set SYSCLK to use it @@ -104,6 +108,63 @@ void init_clock() #endif +#ifdef XTAL_8Mhz + + //Turn on HSE + /* (2) Enable the CSS + * Enable the HSE and set HSEBYP to use the internal clock + * Enable HSE */ + RCC->CR |= (RCC_CR_CSSON | RCC_CR_HSEON); /* (2) */ + + /* (1) Check the flag HSE ready */ + while ((RCC->CR & RCC_CR_HSERDY) == 0) /* (1) */ + { /*spin while waiting for HSE to be ready */ } + + + /* (3) Switch the system clock to HSE */ + //at startup HSI is selected SW = 00 + RCC->CFGR |= RCC_CFGR_SW_HSE; + + //TODO poll RCC->CFGR SWS bits to ensure sysclk switched over + + //Now the SYSCLK is running directly off the HSE 16Mhz xtal + + /* (1) Test if PLL is used as System clock */ +// if ((RCC->CFGR & RCC_CFGR_SWS) == RCC_CFGR_SWS_PLL) { +// RCC->CFGR &= (uint32_t) (~RCC_CFGR_SW); /* (2) Select HSI as system clock */ +// while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI) /* (3) Wait for HSI switched */ +// { /* For robust implementation, add here time-out management */ } +// } +// +// RCC->CR &= (uint32_t)(~RCC_CR_PLLON);/* (4) Disable the PLL */ +// while((RCC->CR & RCC_CR_PLLRDY) != 0) /* (5) Wait until PLLRDY is cleared */ +// { /* For robust implementation, add here time-out management */ } + + //Set PLL Source to HSE, the PLL must be off to do this + RCC->CFGR |= RCC_CFGR_PLLSRC_HSE_PREDIV; //by default HSE isn't divided + + ////Set PLL to 16 * 3 = 48Mhz for USB + ////RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PLLMUL) | RCC_CFGR_PLLMUL3; /* PLLMUL set to *2 at reset) */ + //RCC->CFGR |= RCC_CFGR_PLLMUL3; /* PLLMUL set to *2 at reset) */ + //RCC->CR |= RCC_CR_PLLON; /* (7) Enable the PLL */ + //while((RCC->CR & RCC_CR_PLLRDY) == 0) /* (8) Wait until PLLRDY is set */ + //{ /* For robust implementation, add here time-out management */ } + // + //Set PLL to 8 * 6 = 48Mhz for USB + //RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_PLLMUL) | RCC_CFGR_PLLMUL3; /* PLLMUL set to *2 at reset) */ + RCC->CFGR |= RCC_CFGR_PLLMUL6; /* PLLMUL set to *2 at reset) */ + RCC->CR |= RCC_CR_PLLON; /* (7) Enable the PLL */ + while((RCC->CR & RCC_CR_PLLRDY) == 0) /* (8) Wait until PLLRDY is set */ + { /* For robust implementation, add here time-out management */ } + + //test SYSCLK with 48Mhz +// FLASH->ACR |= (uint32_t) 0x01; //If >24Mhz SYSCLK, must add wait state to flash +// RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL; /* (9) Select PLL as system clock */ +// while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) /* (10) Wait until the PLL is switched on */ +// { /* For robust implementation, add here time-out management */ } + +#endif + #ifdef XTAL_16Mhz @@ -165,5 +226,6 @@ void init_clock() //AHB APB clock setup: //these are not divided by default + } diff --git a/host/Makefile b/host/Makefile index b3c7beb..d442744 100644 --- a/host/Makefile +++ b/host/Makefile @@ -5,7 +5,7 @@ WINLIB= -L ./winlib LIBUSB= -lusb-1.0 CC= gcc -SOURCES=$(wildcard source/*.c) +SOURCES=$(wildcard source/*.c source/lua/*.c) OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) LUAOBJ=$(wildcard source/lua/*.o) diff --git a/host/inlretro.exe b/host/inlretro.exe index cda53363478d3791b44a00a40857bf991cc8ddf6..7e320948595a7e7adb0cbb69984d485df2913594 100644 GIT binary patch literal 356995 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

K6nUz`P=JHS&Im&PTAL?+g#r_(~a-H)W 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%0AR$7h#ndd z0WxcQ#OaDS+agX!#Mv5gW=EWBBF@x^GaPY_i#S^%&cukbIpQ21ajuFuhee!C5l5yZ zp$@NzI4{z{gdEv<6(F(%<7|PigarQ-=^%3Wph*OI=dn3-Oi1S3mk>6elN;qpz z#91D39*#KO5odSASr~Edi#Qz-N504slyLU!h;vuOnHF(&MVu2N&d!MQ_K341;v5-q zZjCtOBhF0`=a7hVW5juRT$46tZI3uFM4W9AXK%#W8gU+vIM+m+2P4jK#JM}-Y>7Cx zM;zIY7TW#Rh;voMxv`lu`>V~!tSh2a{~U2Hi#T71I2$9*l@Vt{#QAu{xhUdX5^;ti zP9x$pBF?I2&g_-V$gEP7YFRU9c2_epD<7rmXy(kG(~QjeaFl9l#910~j*K|n5odhF z>54dqM4Zlu^EeB-f!EFIh&cB)b7p_98JRUFO7)Fq&dl-5@WQ;JRI?^Wa{jJa&aBpm zvnJw9ia7E+mtpP`BhIpjb40{h9C0Q@oVJKFKH?k|amGcQaS>;1#CeHIh4soroIMfe zW#*tks@Zo%oR=cbw<6995$6jLXJ5p*EaJ#20w6^wRrFTo^p;qfi>YrMqh8SD<_&GD21oB0J58IdDN9yyNh6?EFCoOiIi$>-3Tj^DufGla0DfSmhB$W1@FK9aiYr<`9R z{*DiM$~go~2!xzg{z~b?L!MkO1kz7AWot7e~Ef9_Rm`ZjF3{n1yqspd$T=Y|=P^TD?1w^GuV&K?a9+)(kCKD7DX(5O*@EQCrsH$3 zZqts>?Z>8O*J2xvL3U|do_%dJ?o5q1@_Wxgs+m&E0GZ{bGJV1g&VO?2`Ud!N#k+YT zP$=i^#-QU);QPk5%u>#TjU8% znBlZlIo|Q}YB9p@P`SUv)l14OUKGj^P8QB&Rd?Y?*AjE2y|?biH|%Qj^2nyGQN*|~ z;_P#Fm-3V;j~%~wvn}g~PWIas$=Orl4Mz!?EA5gTpoh zUKGu=1-X9?PJd9ZYe9wst$qV!Yrwe;#KuUv7C!^o6Qp_$q%}zOx+&^0k!PJ&kl}#S z2GSO2;|vhHie)qgBF8xX*GLxRWlpu-lTxK`I@Rn5G^#@Ql;FtYM?qN;B11k zjqQk9j^uF-h>c)%UjGSV<5i730kYCW1xS|Ham$s=rcfJjHU#y0!@GR1OKMs5t*X6& z1&@KVA<)lM5WD_NUb#Y1_HMMgym%HlR7!HPT$lMX{uhq^!qo)F0nVI^oNEHfogi|& zLc`bf`mi7qd}L5@T0PFEK_ss<)z^drluIkR9jAxTLh9^s`=#idsJ+aUPsg18pn=v1{F0P7jEE z!a|w(X6%}t!QLG~nJeYP?s+38^^L1R>}ZY-dr?r1NH1uEUxAZ%Wls3<=@NRrEYQZk8_8)+{}bfCG*zQA zSgjUn69UcO4QFFe(}zLAp8pjP{ca$2S4w!xRILkLizKPa&oX5CgYx{PaDtXH3#4tL z-(z=zT;WP6GCv5iA@$6G)$*y%%(y@sSvcK6stU-B0kR&%KHJh|{(F$EK?$!0u`_7R z`8r5z;0fOap%SLwkP`kBgybk@LT#>Im{0|8DH= zBq!3G=#5u8$&%_QIAM8C1hG%nbS>t9>{ynz?tH0~B$C+ckvienXHq&K<-Yd^{K(+*ue+V)Z)cvO*TLU?N z0@)s3kbudm-{V(1g+^uAZg1L z$+C+QH&d;aEIED+XIJ2d&w+HhS|kaj$?5ScEzj8Z&?g4vc{7L{~Ctr}mE#L7WU z-wvl5c=)?PhJxHr2GQ>!+P-B8NWaUA-^fv)yxAS3>Vd=7ORruPkWQCMN_H{G_Q1+l zh~%I=p9k6EQt3D$D~WBK(5RFuYYVlBE_cnzt9qwn<#ouhPad_NZv<)GW8+nk_&ty* zfqw1+X*kUb=RpuTY`@A2PRXLB{UF*FNw4}rp3I&=&QqkC7}WFykd<$+sg%ezq6;TS zknte;{Zp&?qe0{_F;cJo#`sM^UMInk)@{m@tryE&b-3KwhgO#zZZ8FG=j1@LAo^Wt%efq6WhzI!SGFl}q~7~EIH@hfSNUnC%vM(~ zzWk;}nSO^z`fEwGFRfRv8saiL0?y5FCb~A5^}$D?GPD>sy(&UD_!nMHdm48YoRNl zq?$yk$xerYoCq>ZLDC+(8{~?B^AV8cL2IgjT zD<8s}w>Oa*nz7E2AgwNyNS+KL_tScv0Lklf_(FM2 zrW$a1;DqC86=aG_B~mW|$?WmRuggFt0h%5=VQEOBf(Z_(71Vpr_c)EINCs_eP7!92 zB7I>{o-2`TpE79g-3Ib0n z%5p!5U2oC3KMAru@RmP1`DF zA@0nEK+c_Ts;(9y`5};ruEh!R637Njkm~u+**X$V^Li`D!-2+*1(^^ar-SH2Y$|V} z#5PSNRgn7{5aFdQ?o&oiihLPlIH<+-AOK41T0b{~Yz{cPK*j|nd<4_cR5e%bg4YLUhO=Ys5Va=4Yr zf}}GJLFynfO-k3OF9zvysghoXG`w|p;0d3QR2->RuLH49X2pL9k+{DrNOen;>Ryng zE-#Vz7|0O;vJYgN(~oFF;?@2@8?t1yFi3SIh%|Zab?PTPxOyol&onsq1a&_RWW#%X z?>!4-2MX3&Wqz71Gd9f$QmulMaegTAs>Gg~gS`F*&K@TRe&&lHV}ml^0J15qsSf8e zF9kKd70ytQ>P`?jQoH{KWTBHI_x=D9+IRLBt!eo} z&tM-@mn>_(b$eMX_g3tAwx_37SYxl`r(ErMAVDS{MwpSsw?KFjxOPT+BEO!jJ`BPP zsV+adS1dETT*Bf*gNaviUa`EW3Cb60g+6|AqEOT2OnS@magh(qKPTxrbIDSIN3Qtv z0HL-|vuJa2zrr>3;j;DX*Jt#1I+N01mY*3eH2O-F9=?Yz4`vGGWU$_oWqTN4<;Or&D)M1{MxV3N=gw;t`Q-?W=PCrHiY-6yWr{1g%TF!q8*--N zc10`JbMgtwhAM#&i)7g-^jVGY`(uLxJ?RxS#Xq#9VttVB2CKK>l&o5IZQ+7J;&yeF zL@V6`vKBA+|gb>XVFSSaP)RZ*XzI&S&r!42bVITY3?gyIIc4iPDy z=Wuwav`t$caoDsxTzTc;D$SM)SDxk@sq;5w53wnGSy`cZibq$y^AaED)u?>_SD(ob zuME<|30HpvSe?qRe``>G3|pV0E;SSFHEF}ka$#*~CFri#5cyJ2+l$DxxhR@Knafo; zB_RxL-)KpUt+gqQRkz;y>LS1GHZV|--Va$_$=ZH8U~`^Uq)V2#%w?@mFRm~2RCK%Q zlE*?MsSlQ{h{8|-YkL4S3U%Ejb!dj^z6(`q{xKQ(vpnRBK)MP9uy{>N)r2wO{Mz+s$Jfl6=VVmnv87wV?fRZN*4lhJ+0HiYT5oh|$D$^?uc$RoZ#UkbmKHHcvNt!)a7J!_32f5vM(1 z9@X$vBKMkndmeiV)`A*QUWcjfSbeCAbnqj8hDn>KSj`q|x`UaQ=x(L2P%hMp5(#Aq zdk~I4NdRH8aoyBBbw?CHIHJU)B;#PIj^}w^G>SGuvkA zQ>rajvrUfKy8HxyxzH*%7ir;Dh}Dy2i7k=8=G)a`Z+)lOn9;6+vQ_l0Vz63;v6LT$ z&GkzMLDZL_!V(6lCW%IvsT5e_;H+FI zS-sI)DdlZUA~)oh3sl+9k^r%k?J4LH{VY?Iit8o~B9cu4m6KjZlzQoW=FXdMZrkAC zEb3vCNJ-|-)0R6ck*XWA+|WZ1V!~ih(#vou0kd|Dvt)ijEzUBD@g94M_mSIRt?Zb5 z?F9F6CCC%R@pbY()GBV~F58vH(@XkWg-99ElKiflt|TUC7r#_@Rka1N^d>-pe+OYP z@9G>^>(T+C>SRGPx^uB~NtJ*6Re5rSL> zTrLO8W$S-(TZc5bXGH|m>A1jUjFq&unOM3g4Ww1yGe4l3pzky?MHvRYygx|8A>R~Af}He9$2eS5YOiP-FvZaqPO#K34Klf@rol=mx774k?5Ff>Zsi7R zJf&zABdV-3N2-)Fx){jTsk3)CR~a9$|K&2)VZ=WHtngoK%AJiSRB3-vM5pRs?Oz=|Hgmv$xo=GOXbh7fRsY-aK44xFZ z$`qBM$h2!v{irQfPp3bnrkI@xv0bt3O`kiNjpyu?w^O;G$%5uCL5d9y=IaY3gkHkC zYC0`fRBxco<27k!z+pF`dkt;pPA{B@giL#NWG>vfJ)pp>yx(hT7xx z&`fKQE=ZYZ-9Was8r!RIi9v=bcukBba8H3gueZ#C46R6_HAMFp1`0I^KoxU!VI5^u zr*^!r7toZLC2D2q%e>HqDLpNrltktZ<0+Jz-guPVe#@ETVFU^+B zXjj!NeT1s-e4>?R zb`@nv?`|4@j%9XGX%|^K0{wmn=yMj@uz>QZKk``220eX%)k&!h9<18B#g*xqEuxl zmhG7-7kX9$N|8pS(y9o4x-!6WwMc4C8GBjuM%u^?q zXDIemo?seO5v;jIy3*ewY{?R{9)K6wp-cB4i`1}1P{yUQnVz@lh{8{QJ2a5TBU+dr`O(j zm#m&kXIZQC<%@c-R$eYYJEvxg)zvmQwE`sCJEdJ#rc3q~-eOjHah-I%_iS9c(cY`4 z_h%=)J?+Y^Q0>`juRVsu?fILuPn$XYlsTNsEnh%?VJK^6gQ%rZYnKqs@Z^&G%oRVf zG>0Z*uF}pzi4@iO>#b)iKM&SqDUy7uUxL$0-E0eD{GbmtD>tYqJ)^@@7q}8^ZmIE8 zg86L2^hYyJp{L<;+Kd_O=nPsKgbjN}Yusb*P(f|xFuE~<84t>p3IT)UC{`h$<|&pb7>53ki>BcawdkeGUh4zO85W2eGTlK0 zDHdQRd5LfSndVX=47rehl@OyIT|-6EV~CA5kf&mABSCK3$*7Vqf;_;665Lyo6fP*0 z`_O?ByCmt))^#VUPvvc)^d=#qr_YmM=(isprEDM7;FhG$vs3{A_bE*P?Nx| z>Z%(C6erfp((+(zEf1tnO;LJ({fnEbU&@ta@k!&)1G#5Qgr&jZ3j)t^XoAx5|B%G3#!!ydV8ny(~a{^j7 z{hVo!T-cd7r+JoS2@!SH(rIg5ssftd5|wlPtD=}DK@d;zBqCurm0JuWltQ2DwOIXg z#(EV}F=#sJl~-hGNIGGUn&2Q`^++UA>mc%|m|2-wyrZ;cwNrWo32n^`c_9`wp@^K) zF;VS-b!B=DJ-jYdPOD70P`bJ_As6+2Hfxb%dONr5Ra1N+sK$^A>mq8Hr$-fa zs;sFxW7DtFZKzA_UBX#nY%J$Z6IuO}nqgeREF)Iaj;-Bnr9RudJT&An~%jn;DylpMBjNIK?^D;4$eHyTgft!&X z(=U_hh&ki&ac_gsNx?efv#El*Oe287>lxfwk$TPwJXYdx>FpU;5YHRF)xo5f z2^D=+-7piLmn8a8VZ!HBWkT&kGB#;wT{+sazId-3 zIu_UDi!-b&MB7uhu|-TF6jX)|RqTZ}8+-*<)T%3+tT8V!cu3vsgK`{EZ+c&@WK2}i z7+o}xifoX;$Ls||N{N2OWr-LjaY?&{wwvtr#kjBn0E-Y}wwJCml-8T}jpL#Q+mCaTSwCvAxHh z${l;oHqu%CbxAc0dzWTyPbK=b=RNICY(5n$-GHNOpR3w|ZJ?*FKCg_s^NNZ3*0J(@ z3`2#i+**)1OIgLzdV8;)X2hZu3lyeaYACc9(gXF-#o23~nxIE}#fqsuB}>*wRCBZU zYHMWuBvoa(84%UVCy~Vl7Yy>)!N^MJ$F;X}W6*kalAM0d+(iqL1&cfNPAl1WWiIri z1-CCtMX1x{(+txH3DthCX{u+KHhb2r89X3NidZ2z9S=L5Czp-WdHy)JgN|3@W}?2V zNXl%fTQ7okOy^OezR!$Qc33IT(7Ul12I>tFU~VaY?wBbRJLlZROV6a(-Afjn+j(|! z&VsJ9=cn7nR5{c;Lq;~%(=AusVUR7A^n7`=!b*RMifEpRM1nMUDl7^*9qo1%iOy>4 zbV)jwp6zW^Q}RcsBE51q3rQkU+({RMh9lovpgO2cznx=lsYM0NI-}6&%GMhTWHG3t zEt4!MG|nyS-D&v+L%D)_c#o!G;y>VnjY`t=o3DQB{JT~tfG^O;B$86B1|r)1NDHi2m+s-1Q6 zn7&aMiAJ8)x*9%A`K=xF27aS?wX&mYg}cejIg$5TCEm{RETV=-7ISsgR3yAfDl9Lm zNtSG?Ve2C?(E-vWG!$=d_#m)IFsJvdpS&3worc%zRRyN!#ZY z^M(18XK7^-{bNy7-XV|BN3;TKr^qOJGAzRAk>*R6Sd>Tq;*2a?(OPWRq>9B5(<6_< zn6fhw(CU%3IeSiWc>_#2P~feasvMjKSX9gW2CL@u#tYM0ntj!@d1)c3UmK9@)Z&8N z(EYc}<4TQso?b=fD6*5&WK)z;*ZK8AwXJh*DiKlqC)IB1?ex<$>3Rm(DIl(zx@5wexyPAdRZw~Ze;pBTN0z@bWke}u!gGl$Ve}u;@SeG8nyf$IJ2_gZIQL`>g^Vp|-Q@wa* zifg|8U`y|nvuQ+6&Ya7n*7QJ5L$0B@Azy-A<+Y>xI@Q3Pb;oHljz?7U#-%rWWs(IL zOngxM51+BUip!jdnrudrN0n-~x9Vk$V-rH^?ox#ZwkAp=cHx#?>jV+3YUl+$8GPr< ztA=T#GOv>w6|2)??)7#BPrqb>6n_)CE04#JaS3LaMgj>0?C`*CbBTba2={{ z06Av`J+D*y#!chMHMcwc&_-)OzhGlSvjcNQG%T;Z(!7E?dS19-NJku|u+}80%G@)- zBpA=tnxLHsF@v&QoOV(DW{Y(WB1|TCw>+&xy-Kgo37^)C7`Ui%8ijpjeA1fW3>#-gZ7+=}6uD$_SBYZ)N1MdVz$cBSn+GQTEeM z*k|M3lp`E=r3yAW)Gbo_bTipNyD}!sQ=2Efu#qm03B^*?^d&N>yYT{*%W{$pN{jU1m40_vwAIfJven6eAH1zD z)XIet@3+aail#FM;M^aDR0r2w0`oyd8#?Z1?iU6K_zAsotV5N#3@B-~>j^!Fo&|hAQvl4Wfmy)gX+I1dLim3vv5n~8 zIT~*-N{GMwcQ1b7f5%N9By@Q^MY=6Jvp@c`|LBJ%pJ&6N`se?je|>E}Pr-L|ymO(? zQwse4(|@N#FJBTx<()@@9wJ0qT_SX^xt@l(r(E{q=#TMO&mz)Jn1$p)-+vKLY5OS) zb;DJcqdbE8dH8$mz;;cMQ!bx>$vn(X`eD>Rg8E1Bw`E|v(#R>7E?R^d&x%9v&)fls zu>$|C@XT#L_Z^^r$5U&2bPYyhMW%ag2LGiVjIY5{HZIcbU{G+0y+n941a>#|9x9|~@+x#U z_r;$%k^Rs7o{%*iWmy=IJoTss6+Is$wUo1gPw2KWNFIlxHk$`dSOot5G+vtE;KR zf_#iICsN~)am^0!SNvq_o6!@Unx{E!pZNZ#;YvZ@cMY18&=;iK58e+ak$z3&rblWp zZTHoJG}QbMKw1g@0S%E@W5D*x6lLln2Z`~Fhf)4DP*=AjIaC1i%y}%a| z;~+KTJK+7rhIiTkc!JWl`-neKI)p=>p}TMHaM{t;y3MN3Z$38ht}l1^Q<0z5c*ZpZ z77jHxb=dlDZpH7Fy*r=k$t){h*}DUOqvNb0Yx!eLw{gAy$Y|A!M(Zf)8(gy}ud-+P zU^9_;$LHN?Zkl~@hgBZ{a4*4-EUP|bB#Kk_IQB&PrGDY+vju6;B9~0u505c(hWT0} zXQ;@W684dZ$t%2`vdu=bf1=qHt+5&d<`08wCi#p_k>Hwkv)XUf1k5O!7KYIy6mJMo z&?sbPV?dq!jn{)NR(0CgP&E5uV|Vb94%GRqJc53{!|O2k))ELScdMNx?Pe z_>9d!c(Xa#&yuC#kd1V_I%G}*vNeHtbq`TjJAt!tRiMb&P%``COD@X7H%NTDG`@cU z-TNZxNVLd0a$ofzU$nrg@7XtDP;N8`cw~p_dCB8JE32W$P$6@K)!;K{`m6@OIn!@7 z1k9NM44V3_J@I||hA9cNEwGZA@u8rI?3()z50tjBLtFCr^OW(*?nP%$pE-j%)+Y0P zl2u`R9I~2x)-1o#9oEVLHok6EAS^;K?JUOTp?D3SKX8wRb7R0lm{ zHdU@~K9nvDz&ZpUSe!7musuIQb*5Y>|DWigVy_b%pi*`dmFN1_(h4o=Fwga6^(So@ zKHrLl3#_H#!pc3-$=2BcGo9G&85+C@y z$|^Rm?6Kzi%q#a=^Zn+PX)8j3sytxM2*kF@{Mzi){tdkL0VzyS$f{mqPF~_DraeEb zhqMm0A|Y$V3LxCE_O1yv9uTYjH|qTs=0Cpb#JZqo~L_++r1~- z-pF_j`M}CL3^#!xGjCLD<9S&er=Ds?yF3u^-Z&DNonFepV>2JhuLAiVW!nTzJ~FK zOZ!s&8NX(mUz+KQFG=2o-wu8Ix1)!*Bh_uwOZZX1U#j7oJ?dz{HhTfEM+NcII(%h@ z#>)&@jXtx%XEplG2GPNWz_L;MYW$JtF;-nZ1E_rwsL?R%aHvymY^a_V%uok3p#XxD z4~-4sIXPCA%QsEk9+G`G)7Y87i+4_T? ze$IjV2|AuhgB%?U1&5jGkmzTiKFD17S}(f^b1wSk^goURH~5X-dBHmqM(>fqJKKkB zf`uF?KTi8S2QnFBiT`l4V=IRqSTUefj$ukww{DWVj*1aIEKWA~!n7{xi2blc>&Poos9fl(mbo zfaeIC00ugXQOdI9{I9((ecx68VDEpg_hXUf%s=B*K^At5rU>Q}bFNy8y^Jb+Moj>; z70h$l*K)9??Eo=*6fW{IdBx%}S0>Cwx!m9@8SjvXgs9U@~n^g$<|qBvWg)H|X-7!MOu znA)zj62G-RZr>;JiC}H0(d&)+MG4IA4$D)v4GWB4LHHR4X#W(oXLk<5+a7h7?rJ8C zcY{W+FIs2x=0=YMGM9GALfvst9G^@!%fl*vECQ9f5bSVkd$XS{Im z032$0S1j@QqTizz$+f)Vs352vZah`ip88X8O=NItx26Xx3joQ-Jcg7<<7K=%-sl|^ zJ-zvGqjzw0kkOkTI|}A6g7^m3yVn;x#PSdXAKQp4EV&zBOGE$>2qbSpFam$)@aup6 z4Sv=8&Gp8CBcsF6?ZCX)AS(x8_kd@vytwTbu|4#kEXs)%0F_vtyJxZMs`K|5+2 zo|YddGnEb+QUi(h&4EWZ5x|`ngEV(CUOX+hrY<|=4N(ytVL?l-^C1lJIyfi>jFjOp zKv2BYT~UHbJxO_U;;AsKP!S}m7RE#b@I5rL&JDz8g-ma74g6$Xz}SL_b(=YrahzEf z=r5j!>k-WzjQQ&vhNb>FAbu15tqoUzyiyylatE)_7zXDdL?*46o*I(P;LJVI4ic8@`%3I%zRRUwP0+W0sO+j7AsB^f6j>Fx-c~ z`S|O{-vVpO@PIibREU1YSDDy9&B0xh{LK3$uRvPDmS;>LRzFK&<{(YMUnR_;kS1C% zk-9c;%8nNyYN+8#Ia?m39%7h-x_T1Z5Mp&@^-|mM5121UK8h%ZlB2LKEVzgG8!}gH z!XMoK1pM5FeDezg0g!;?#4j15+42?UWJ3|l;o5Hf0&2P$YC6&EjGo5mIO?v|=tFDu zT1~a|a4z*iEi4N)m<+%}58cdOvdvjT1Fx4rkFtZ;tnR^@?b{1BV}lK+pMH}*AMn!= z1%i6usCwYCHuzj(mH=nRUugL$L5~P1ss$J7AwyHp>oN4QDccyWCuODP5+7uWs*Xpl zM4`Dhf#w32Y<1V?eY9eU$3^Kyu6&U_m~Gfuu=z);`>6ecruM%tP)qaz^&;2a>iM+& z6I{u`&tY~i4#XRK7`NzA{FqFb(C-RZp(j=ZYiF#d7?RFw>(i%F@S*~|sIq7JPlSAx zo?n-MWseK!>5x00Ib9Z?)BSW_69bw>m`Pb#7dnW4hdgG>Qx!*aa z@bJ+3w(eVgT5D$cDWVkg+WCyjj196x_;)9l2#{a>+~=P$w`7r@hMAC`0jjBI`s@W4 zn_R#JAYl!k^|{DF(KG0+kLPGDZ3;Lb94n%0pk@;%iKB?vY5)JTuJq}>|s*xZmv4$Zp;){l@g+2S~kRUlm@-*TcOVkU`KwDu)kg*hdGr7m~ zTa)*i^*##>sP|jvA2b^RshhLtA80=w{G`AAP@t*5{ip)P4Vcww5UN?wnK__*A$pk` zLHROJUQfzTGjDK01w6(lhmcwTWg#Yp$OM`YniGi46Q4M|sM5;{yqLEsWm7ig#xrA~c8F%d$5%Y41M;tL0Yr*&FI}Hh%v~!XiK&CZ}6BLmw9+iJ@ckLD6Y2K*5&3 z!PIcqVYL_`8>HAC42$)E(>&Pn3mQs<^$RSI6HaRcoYtamu%qU}g6JA6Bw5TN(a@tY zF+Q0mLBCLafP6hvv=COE#uKGzphmX4L^&|a_9ZVy@Z_$CEP?Nj-J6_>VqzjYn8_MO zSg_Ao_FfC{n+nY!rXlOv9_#wO)>&zDVaU88f7Rr?KIt4F8HYO4PTMcyiCh3}k~*1q z_lbqne=8p0>P+HsSO_kni}!aU#gJgpAQ zUd;$pHux5O4yCeH#IXm~x%uYQ5EdjQ){J~}azQqn5a6WN*oMtsk077jPMM%rp94$P z0DNY_YF);KFfw${e3Z$Ioy1(mwEf$-i!d{Q37i%#CZ@}Q>BY2IV`mmYq>CZqzJ?=_ zc&(DeE5TjYVE%@hzGY26oW;eIA2s6LMDF9mO@w!$c?rOK+m9+SiR2HULA ztD`)i7J|sucC$0apu<|yvtoIkCkFK_HG8uBDOuDn%yvWU>c7GQEDu?JYlJz}s`r5% zTwi1V04w!(B3PG3AB#`&SFVr!O>lx&7>Si^>JQIdgym!MEE0AdwzNt_HAJ)~2aM~} zbx~wQkhQb@XKlEOGX@GOh&KL~lPqgO55u&4(&AIs-G>Q7C+IgGksRp{J@UwwIB zebaNq!s%mi!|P@#&%M?-UOq}%2^sUKp*{!8gi2tn+zTQk95+<>0RE%r92y}xf_ zG4RDrh$*3(IzOka)yeORwTi>3(%HJ6Z2J9@ZyT=db5_32P2gq4Gur+zcujkoPvL}< zGmm`+JSmNgZD&D?io~=ej|R4V`ihjr8#)%3gb7*eWG_Zt2G-_5Se(Q~9ro(_5*N!K z((y4pdLO(2^qun_ritPRw=H_*Q@vOzx>Rs}Bwq*fT@lofoY!(kH|!TlY1e9$ZtMSJ}Dz# zB%=m2p+d~} zRfi(c&!D{#Fs9b7N$$hxF}=+Su}3b`2lY9ESewJUB4UgsWsCj;^P@y75i-2M(x`C+>)F6tPOSFfnEo)|O96*5hN!51@m}3(>+gzhuhux7ws! zgmCRC!MAhI1JU!bgrxBzKsHm)ad`cVJ=TmGhG)o#9ZVxD)rP3Xj%W&153K}bHCw)n z_FMp<&rtVa=|DsXnIkyUdH~(BpZ^!n$%SY{GYo#b3VysI98oW)5KDO|KYvc*xRIV( zvy)K4bC0_1L*Uo$1yUiK6pYM7kgp8{t5<-5-HBa@h`JG@*(4GnH5Sh#aWLTN*i$R6 z?GJ4K6Si{U^+rG?ij5Ax>FugvMB_1c7~K5API6iMzUn|I*27v@0l^T{LR2U=7*P%X z7{nklHgi&4u07HIyaeT8Ox$pw&!r4pYhm&zklbeGhgCOzP;Cmuemr|0NCS&H&DVJt zifDLJr#blrn2H9kIXt+=V{Am;etM>|J9e6NrTZtixQ70eg=#N5FsR)!+X?T>|FqFIzvqNy}L49fyf33x@Q3u;5X9g@#@qUMu-IDI?%Fh$_mj z#@Se)TiV*b{3txL>H}1%BcY}%HxMqoJ4G5a5)C%kWs|ACfbhGGocZsUkE7%P6-ik( zf&dH^7PM>)y#^3$s5BuegFP~$^&9-v>qg0+to-C|)Ph2|9Z!6LeYy|7ZJkqtg}h+P zAMG-t`3=x~-czILym=w|N5kb$QOjU>&Vsy`wr&fy+=FNEY%M!#wecOV`+#a>Hp8n~ zgE>*h0soa7h=^#ZL$C3WH1Wp%ZiC_2gIy3@zsNq5dJo#3dalhGO!HD{UIwxUT8D;N z1Hm2dP%~iJaft6jG>;t$L`!8cKrzH{{VXlnm!^qXpL*T4XI)U%?KlLaPe$ssuTM3S z*K=S@tHMy_If#G0pz&P*pW9(Ye5BdR#lJpKP-6PRnb%smcpTOGDRz6YL0z^PtM7Zj z6cSuZf~&&n8(3}g`{q@$P&RvbT5Lf69Q(gzn`Q4Ba6{@M0HA5Xo~AZ?S@{p-y45)! z!e*7CX&An=k;J8dC5}0jhohIN;QL~fB^^sN7TD80lZpgKk@#jLx=`ZOUhyQMwe&q) z?mF{_diJEGsv^b+8$ynCkg#0+?LCZP%jDMeAQe>B%+ryj&yiUjpQ_`^L3T)g}w= z;%`bHi58rY;0m;n83t8mH&-KB@rJves?9=I*y~q4oHi_dFkqO-(zhj3NRyIK+aKEU z!3`vyJOLx&l+_OqszN+FqL+%h1@CG>3>@0|5S?PQA`OBcRe2T1kupDrVIBTtRMEdM zX4-2vX8>|k`~L1x9qN{yA{g9RyrcsXBH04R{^F#eWv|yP+B!fZ2e-dY1Y#p`TxKk| zTI>+E92}MDPHu%#x7joAo-c5k-QhO-E1LDKN2kwxma;md@oE0CE#qo!8J9v)LHbiW zK%OoFGKJ<_u$(kwslfna{@c3`Jn}me{o++}_E4F7EZwDY*Rp!^Ei;u0h<}M+#&&u>)OF%XMHZ_FQ6GFcOz>bKYWd{H|eE~cX zl57OBJ`3qxfB}(<$o3nMXZal-I=o=Cdf+u=Nhu4^ z7j#y?#`afoD;U{ESh=;@LN&bwtFndLgyOU1R^owrmhDDs zwq+aE0lu_dh0(L0EAX6TJV1FwKmP#i(pXbuc|iJV4nYua+hoI6t7|b_GGLGOkbiKua~uj6!7YYn zd%KyFckxSgm#sp%$>ZVs)%%43?{LBJle94OcVe7o37$_WIj7e!dpKz+=DIW++e3zj8d@MM#qBb+{(fw(pjtDkMkd z$J#yz2e2Q?_8*SFll=+W*{|Nrfm+89)-!QOduk?d3Z@5#K$?J*)4s^6@gpxtIRg5& z8U!K4dd_};phURPqqczmWDYv_liKy$`#&$lvmP`XKj^1q^}G%KlmYp6@>@uFKu>X2 zTu_ML*q5Au0!)I%t{i7>jLzV|H0tD zdVCay`E7cPT3+44icY26p2kCL9hhJweNyvV(LnK&>~M3u=TyLLW;8?(pY3mDMEFC5Wi zOEC}y5L_IDLP&g%ttkEQv!RRz6wr@TQ#h@8x1+BvUcjmWSP9!xcewiQ>`(Bl3YgTo zZ^_4S2lI`(QVQmYrfcA848?ilmp^_G19LY@iTOzXUB6M1Pc8e#n=7y zi63>PBpl>GnVk<@`N7J|uvN#fbGGHCLt z9>{kdpCPLocTyYCzAD)AA=+cLR*sFT3J6_Vwd1S|{hR_jkyi!T!C%#ePmTV-NFNg` z!*dlu&(NR%!>`WG0(TRKCz$Jb$ueLIM@?~#Cm-q7~YBB2V_F!v9ov7Q>X$@R2!=Julzs^OMAqz6dkwo1Q^hNGDdWon$ z7&8847UZnE98(cJ+9@4_QWt;zUJn2?hBOt#If~}$I8bKy0HuCqd`23?Lvvh*uNYD+ z`kktLRm^{aQ_=TrcVKtMJ*l8V(U6xbJK1~fps@BT?8=gi9p82rj+a#*` z5D|nkxDM0Mz>nyUVzY{3^9jNX3|Eig3PDr^ziaKVBN>4yV7Vhd=!a^bT7@YzJCjRE zFXJg(8=rg}XRC719a-CD6qqcj1jKy>kFLP_IJI_-cl+LC)TRFOdscQHYs^Mx#7g)8Yqt}X)ga){64210}J8^ohk&sgZM2kaA?e& z{R&ksL&u6Jh(d-s3?%e#%=xv^CClz6e-C2sXFw}G5jMR8{^j z<2X<=FxCXOYKs?_-?U zpmj+ON3VhoS3>EMVaf*O5voW1^@Rx*wNqG|M{rsUi42p34%~;*q|;|^47S|Yhoib5 ztVees=2M&bTWckr3)N2W3Nl-W2MNrI^-#daui_Z4_0wR>otOg-g@J`i&L`11xwHTC zu8lzNr>J%8u}Wd4p!^cGjV5P#8gQBcFaqDdRq6fArLs zQ2yk6bmv7yCO=x=Z2n%^ zrw;zMGlhj#qd;rruGpvWDROMinrQnepLzhe@Z6|&ThJXc)2H6%not?-#J#}cT>feQ zc2LHM$hFdc-2f8Y{9{(W1Nl{`M6qBXYL9pv!h~IP$?isHk!Q|CTm~q1OXbJ!Y`&7e zARfFt1yMsbr_aT70UwcI(gQ6D^J+@(;L&7^9{hxn{XGH#o+B&WCFQCGKr`kv}j0O#WqxcJK3LT(RG*GRu z_6jTw-9taowu6v00Q`S7nwQyYUWc%JJ+_E7V@`6n2V*B0R#9j3D3f_^-y>k{$O*i2wqvO*&>m2q16&@Krs+1wv_^xfMD`qd|`l@g)2%OjYe}= zXeUvw{7kHBVZ0<)1OS1{B!FvW)HmGRIVKr>8OydF_3o!IWgW6&#X_+hy#PVYVQ+WT z{;G(O{bbmRl^aNbcqn~;2`50%^MxP5B2E>Y&ckIGPON`XWyE8mYjuL=81K{ci}yvo zd8jo46F&vso?Zs_p;(=U_A4{1D65?sQmt(+im?#s(pRIX09sY{AU?B=ehh7Jh7#B% zxn618l?Rx`J2&ro=k49QcHVPCFm~uJY|^uV>?dKUkS#-P=*q^lPHKa!O{7`B`v&y> zd=UwHr=0{98p=z>=<}BaH~|>;f~2DB%52c&j+#m{mgWB5(F|FO#i_@A?GFvqDgYh} zM8K`t1J@sJJivyRprMB7=bpJ7gpkvs#%DQdA+p%^aP;(Q8w_vu^Q9Qx?o13giQJ4+ zR}!e!29)JD&5W=vWVZ>}e??o>XEbO+lI&iIk?V!389I`H*b`sbk0E>~;y96%rxC(L zk8|{{R%0U&mO#j`T(kH6I?&VasneNJ2SV%}3NP3W@WmFw%WUv>^~D)N`3@Kv8%sVr zP1TC$rCb%@FEe;Th)Xb9vZ)(3L5~^T_|yT0*qUgzk+MNTG~Ve3J_W$1$Qc9;mEXn3 z)hEF#Bzf%uO{X2-I{pgh@3`bx_MEnXLO0IEb*L1P#Uk@McLX&1kUJLJf~&ZFZtjFG z6qub%pS{kk**N&}Wh0D?r+JjQV+`_a_USLl2Q)WB?+W2p3eaHr+e-%--*^`90BnCS zo8=fIXE#{>9BW8*_UHw$sVgdu3$|VX7V%w1APSetja91B5I7Z~G1Y?eylI)K5#~BKIo$ zUhxGiu${~jK7s_cX5B^WWm3b8xsCR3jBOdC*Au+?!oFerqisGosPw)C3u$lemZOeV z^Ro@epmzq>yFG5F7lIJNY~%w+U=f>deNQkr+{FOV^G{J3Z|F99hg^3T znbX~oR){ZFED8tfu- z=7TX3b>1QVV~8ens470wTiK0dD#lBGj(_a=T2tr6(8V0u==3J{AUH76qk}g;g&%Tr z3EtfHvSz1VfA&N49&B5=6iBuJ3T1+VCtxmYue2VchTeyTtG6)+6{1-|Pp(!k45J}lR+ zD*!M3iOoTZN3~$~vc_`dGm9Q~yjchwviVl;KD%c$gg+~u zcE?dsQ301%E_~Ya=VbCfnPSa>(E+{>ViSVmIE~f=kvun8iq)S0K{Clkdl3%QAjDhV zluQD5T=ij{$s=fZLlLDUi2w;f{`$fe0l`(N+Y->&NkvW-3^62&HR#CKIQ(h>TCf_T zLmE{TaH+(qB6urLm$3#FQd7;@vZLZ3;5X_V1LgX}Y&;0Acf4m1~7t2sM4FH#J?YjFoV4R?jm;hTRTGIs<1i)grK7w{lFbqPQEB> zKEI_8bFswZz!XMe8+kIzx#GF~Wn#IG)lsDR3b5$m%Ua6+oO^&q%IpQEoY!^ZG2$Et zg3bVN5zNl0t9JDtB&7%akF3Ptf?Td%h`7_S2mN59uO)nEiXO(~q3mpo!{HtMXSK>j zdtEMbts2+JbXLF#Fjy*QV}oH@@&byn!#{$5km5vsybh25KiNQr0f>D(b3<6t>3!={ z_H;Nq;}gs(&f(%P_cny3kO3cJ5hf50LJ}ZVTw(I~Iy+H_)N1Ny+Iv*HfgHEdo`djQ z@*UanqazcJ__@Q~g5exU0BUxs%b)01qMiWacwM0kkyEV1k?IC}4MzmfO*N3ZEGj%q zCnA=UUFGEM$UE5Q4~i_!#6bHbnQ;G0_QX4o_95c4%3J5!)qqdA_!i!;Kp+JfOdb(< zg$DPVLAb|miSf;l=py5r+~`Pq7m{=>1p}YPY+QWC%p{;Nw6)OE#8>pXj$9cr{DY&{SQH-ICNF5q8-9 z(x_J+6w2IX#Uu9pf#xf`LD1JHf0sc`DVLmo2l*z13BauZ#*-=|JO+G9v)TamWw*^= zjkcL+lRdsYAx^#&RIvh4Tn+xa%ugRMPPGh2(?#u& zj{8B@6>3TJ^~{ZUl4%%!r$6iE!lQLzyUE;3(d1QWf_O?^MJT{qaWin-;jlgr>hzbO z1OZ7t=pc_s6p?oP%R}%8;9+NW*``M^S*tacm;>>LnkW6btKDeF5ouMhK$i82ULVQ( z@^Cbgf|lvR&}2nitFWVK{*ytJDaU!pO}0p3Qi%)|1<&S2_1niVOqzw#E%+-r7uT8i zFb5M_L#1PT$F%(o{UHJLs3l0AglvUDkzf7sUDU1T?y=ec24J&P{2IFZOKt8tU@p^W z$hw{2g$T*XtwYqr5*lbC{JTd0R1d^-tgGpBe;kqeDe9b@D!_T7pULE9<{sk?oINDX_WV z4)_rQIu`*suyXptQX(vH+yl?EL3Gd5XoVVdBE$tsFH0Z-)JF1vk+V@-m5mQy* zO*Wi4tQQ}Kv%3$cvmQpHrXM~|aO+U$zEf1}t_xfdX|Kmv_bPWRGDC&HL_M~DvMug{ zqoU8(_WT^;co*D--EMkzyLK+Y-1UY|yCJ?XxAVjwF5<+Bx5zl)Svt1)g0g*O+H*oX zX+rLY`9xQJ?uu8P8s= zmitR|n|sZz+uvhlPT8C0Td2Onv3K7c@66LHge>3px;h_a``^M)>y6hXIm`V7=#3f! zUNOo+h?9Muk+S4iha(+$rre_~GoQmUGA(|N8B_HTih8=cyvd7NZ5kXoX|sJV5a8-P=DF7MR^&e!-9g-r{r9 zf+7g&R0yt-{W@4bd2*?#$I$zCAQHsn?teogKRbCo*zn!$3y3PhZ=rH_lKgV%%Zl$^ zbylzu`@3z40wFpjcRS5`pETL?>*Uv>vPY;vAc1o~K)4eCCUZ$9%up6;TDL7ZqcwB= z_mLZFZiKVd6EP)gd3n4Hmi=O!J)R^o3K<3aa8ntI4t+#FXH@x*eV# z%|hlx=7n$)z@}|5K!iMtpXKN~*;bFL9z*-oUyO9ob(>R9y7S9c?QCVQJa0v-fg|*k4NcRvom=Ae%-`p?l0RnvwDs zvSAXrWZfT81k4#xx|pA!@hmhuW%UW&E(exn+i-NG$DMSa*^Lw&!g`@UeqQEz65byZ z^T7VsfXAp#(9%6>lW-9nRjn}1{ZYQQ$~(?K}U_r|Yy zdIc^I_AD8KD{?xe1n+r$bzC$Tfr{CkP$O0z$Y7}GNW39_OyZrqmG6$nl3av%9T%*ia>e(TV0Cjweo!osot&gF9pM1iwI0wMARjCU>O7cBti!g=2<6JxkLPSre)%`$^RKbpgspONLky_?%L&w#Zne4C%mWyOodRhxRuaopN#>GwwvOcwF>lv1mK-<}Yi zM);#H=B%F`8h37fR}Docv+NqH4rX~3u3a5BqhQ%6tF8iqWS!+V1GxGgUtjQ=jUhN9 z2ESq-a6bxokbiui{4U3HKvw4zp*r3=M0xy1IeHE|cRo?%l zKMzS{^`FB2XQO|q9Kyo;%wi8-!_E_I!UEhAS*qqEGy^~KQ+c~~q;huc;0v(}Bv8Zo z@s{uk$Qas1R7BcEcgN5D+Bh(Daa3e&`|bx14Yt0DHvij$C4BT^-UoDeu=Pk70x-A~ z8d8pv<2-5I04iWZ@{76a!got^UGZ~<@>37sGJy*{9gF8?Qz-Z^0px9S31dN%$ zJUo+XKSV$??R8v8k8x%l9&F*ucsS(Hu=BHB$+vgkL*Tz(4?$>IA8Z{4xVv_<^yl2< z>dIvbV%Kb~T#_}K*QU`Ov-2}Ka|B3{Hwfp3VfwmQK;oxdaQU?z-@lEGY~2)RI(WKb z=Vv=NOP3p8LL&$zHw;Qi#z69~{jHGS%787o1pjcp!NLZxa9UTcoOr0=?V!T<)Py3rdw4%dsdUVyfm zh-D8Xr^rLoNtIs)<3Gjk)GdTpxpV2Og5oQE_pjQL1{+Xe%?gd1mEU|6wD-Ew_|kh0 zS|hOw4|{HWINtcihx;0Eh$ZPwyqiZEPrNf?$QEOZFPU>t_=#*!yl^O*2h7hBpN>d; zmS^q>uG!=LcjcGMsw=--z8zP7v`^AfP=CwdSb9M70x<$L21EEpfd&Q!i? zs->gGplSq+&Pa?Y8pZcn-)K&xp0MZ3>`uLDzLr|;$Tz|4Hf72Svj{cfeG<%|BZw3asICCxfeYBiW61;THS(nho{UfE{6eI4J<(3= z9ySCk_90u;LqGz|gbno1PTd4~W%vP|1^4B{7$b}=CrBS(awYLaJ?2Ri^HxsY-Vm639;zbD(5lqY~jhEkH~K-fgXEA>{4G^);wTY90LOmHdIe$z1{PU4M*7g`p+)0vV*DO zGk8MQF^pEffH1D8Dbe6GS1_m_-&5&5GOg_`@jqlQtSKi8EIViwfHQ2 zK42~;cV1iY`9?pzNWgYHJ{sl~Hy+}TUK?C<_R#0(wb%w`79u-j%aAYCZ}-vH5-XE8 z75bhU+zNZcVQ+5skz_o*w&RxS~L_oBpH-N6^%m|-b`ek;}eUMQHYs- zpJ}_;X3oX#=R!8_Ljn9!9AONsBzL5x$6!#={pGhrl$Tm9-} zIHlCxyK4Lp=pukFX26ftbCJ0Poko5MyA$X-|@N+t1oA8L~1a%+J7M?Coo^KbgTs(WaSe{@K& zWe`|^HKKKOe&xr(mM6%M9jfRH#+kvEO?X7BX8|pPOH`2um`5XoyNE+(O}?-h5mhY` zk~>yz$&Ek}=3#VLodOgVq7_O#DkgbBj8CI#JVsvCcGJ1@;5u=xs>JM#&w}v|u6beA#U+Sw)S(F3 zjq!t{k6M%DzHCWPtUHeL0pagaX95|xPuO~1kq`T9TpjWzk|XfFm{0Ac@4C@wjcAw1 zqsJlWk$TaUXT3iTTMiphBzY%HXBXtq_|f3#X_yW0LmRX8m}A_1T4H_)H)`%!bvCU% zz5s`t^poD?Y9Pw-<1_qV=n2$@_1XS{uL2Yykf3I$pA!DK!OqD^* z5MWC$r@bzZ4oc3(&`!VP%b17${*wIR`(?GjpRYX#{y3@v{PPwcX63@*JOYE`j^{M- zv5CA~#o{_WiKG@ay?=R;@k+O5Gi&VF~$2pYzYEB1uDVkjkwa+Ix>E)Kk>l`l=`snN0%Kc zOts}{QRrXdqhUjO4*?kUBPb&8-pu7^P^RE@sywZ zn57Ej)(#8_wzQxpmbuYWj01iI0TAcQ98JMPu;q3_J{vMuXnr}H-(|Zf`8lSa_vId< z-yp0CQ*Ab?Gz5=6Fuveq1bD;Dt?>Cn#UbXwA$|<|npQ2Ji^|0A20ZEjBeIK<$I`$f zLV`_FU&0l@7ddWYh;%y#-I8-5D^7eVebtAsw8=|YtoMHkVc{r+d`GrImfO(M`vA~b z<{50o{Lw3@nOzelFi3nj!kpOe48UMmA;cj$;%m_JL~7D>(n9y}n(=aA2tGfCuhcyU z@uRuH>#DX*Avv&Qe0BArWFcKtTkG8 zjPG<_i`h%vGeBOy6TgqZ58{`LJK)oYL}&BGy2)~?L;w{7kRSt#ZzFTOAe#T3hz=1% z#l2`mh0@fsI(`I#kBec7kyIAk6awJVnw7V)l* zcCHm2~)YSD$~;{X=+|7oSLrOZM*@8YL>yyU-G#IYr!6~qEJJnK{5uAPay`zlwVCqg-d>w=R z7$)&W#$aM^;R}N;U7!S3MY}tw!eS^tt~JM5X++R3z+@C~;7ipq(* zV$u>~9ixs1zHZD32f>LzKmeght4eI^;~5y)T33t$2Y&&g)_e@n*d+Ebm!>WCj8os0 z%RTJWL(X#?gVw^JrPZa-1;!J}PTDbN|B3Z!RfoFd9O@_Kix;-=gPI{|C_em^zxX1A z*B zkEQTfOg-^lWPalZ?{ym)s#rnrmgS&06Ml9YFl;k^gfCBh zx5L!Iws++ng5e$UX#+7b-Zc6H7zVKc{3E6R;2h-QV&)njFJ?w;4d;Mstoh*^ryLXvAZ$4)$g zs}R?X)JwvM-Nc5lpGq+a)t{PFCl|#&T+xrOwN9vj^y8KPwu7<}<@(!oBU@8b zDfT>4R*W_!5U?;DQ&D_A-WE-KJ#zoY<|ZyZdVOO)j$i1-lIcJO3nrx1Mqw!e2WV^> zi>wBurMYy-dZaX5^C*tb+0pO>-i!bHF8APNr9`VAA zbJA7kEgE7oArgw+>l8xiG4$aa@i*+Amhoe4G`YKIwlUs6+nl?EwvsOJ-aXim1aR%L z*2w$JzIMCMy>6dBxb{!B>w$t#J%&*@La*I=q0>6KfQHeQ&usoiZWsOvMSFj#=Y!T) z99vetg4wSkV#(wKhY)N**m=(g0CfgZRUowQ_>!7Pjxo@Z=@atQaL@&ZtasF${B|}z zK-f9g#Su8ty=@Vk_d-RMtgM!UR^Nf2?{$8Mm-BU-CahB}!X(8wQ~$l4i+W_h_a%6kqh9JPSeW3gwlqF^t1!=K$8AKf=MSm3WM) z5$-W*t|6%SZJdbU^;WL07|C^*`rfZ2&e6yJIhfjxk(~N0e=?)7-~GU#>vuq*vI9p- zTJA+Z69cThTjU$Dls9^+o&n#F09#!GzUUi%ok?iJ&}!Dr(*9Mk*LsC{GMkrvtNFY( zCbLNlhO*xn_N!S(@g~OR)%H+lu8VOV)IJT%zXxuo14PuNxd3$*RgB{DlW&;>Nrzt9tGg!$5GF}n}ZS04816HsS9 z)q}c^J~!+Lsx5DhyzU&-4ieC%-}#HHJ6wp&YdDNjd0Nx(EEbIAE69O+p3jzS+Dkh> z&lYmODW>xP(2@Bvke9d5pToMbiHIAToba?3%YF(fr-2`WCBcPXI9|l|wirjpsnvhr z`5*)_Cz4Izf~vli97HQ^j0(dx2Y=T>2jzuP(=YL>qo5ObcUJ3FY*KIO-ce_x6s zl5SIDcBvlVi+%k$EOli4Us9&U=0;m=oVw8e043}n_DxZMRSr-U0m{aPB6$VP(I-^; z9XJjjH~k6o_H!*(S^Rb|Q|hn%FjWPx+rX1^r*0Le>%3RkU;Z8VJ0M0_7b0JW4zv4p zXhV^UZxP^T`C+}D)c55>BDsAe(GmX2;`zRR;Rw{g`|`OSTKP!{hSs;<%?Y0npC3u? z1Yaaxdj4K8(R}METCzP41Y5jlNwnU-MQ*h4TP@)TihvW3DDiLL0ruds1tNaYqeA+) zzGm_=bar#Qn`?;q%&wOrB836S>gqOuUS-(i8W;+I@;%8BK`|F*U(re7@6)UBBC?B| z_K)aNxLljEU)r+q2X;kszTd&WE$HTcAE1}0Xt`EDK?PSsydQ1l1~N?K#Ql)#K>a0N zXe6WzUcm|VM-S8Q+VQIrGzel3cn`5Fg5>N_xR=yhPJD>z;aMGM1u~$_=l`Cx^RB4A zYrhJ^JcolMueun9uoVYBqxEI&m3ufD04~XGO$EEf8*-%W=qCUOeh7@yA92Ol--yNQ zdl?P;HRu7XkcXg=Q)hyG2rcd#Q2b#taPA~MTAp}~zwTwiq1Uy|R_pYiBSxDTlQGtjELl>%>AYhP(X1A%_p095Fi>&{2Z(UTe48}uv&-i30 zay;OK_M$ojR!1(?i$-x}_Eyws!v+4iz)eV958=|cB-_Cmwh)9L9Et#+hUhqadEy?Y zv1~Q;*<*?U$j&%a+-;AXx=Y&+osW>C&zN9xX&sFzuRkcs;?hQt1nIkN8^~f6$LG{a z6V0>RAF&xJmDJa){->idyC3?CXh;*ywZp)3V*3;Jv_IK&LJNhSrTD-DOYNh-ohl$T z(Ol!@99A#T)#~2{JFu85aX9ecZIgkr@v{Hfwm(NG=YIeB+L=4o*$+jOPsLgV5Ui(b zB1rrp1?oc7^BGK}Ls2(?gWm<`Cd5l@_cApa?Q)XflrGhMy=JN~QR~O98wE+?foaUBmoOL^Aufl)Tt(pu zsM8PSa=FSjA)FZiDf<*Bm2E|f-XK^Ok_*X=z}*fLgpJA7ED(FI_3c))g1+60Kae7R z<2w2k5TTi1zBpc=!)QnSf+9lE(uKT4!l$kT%1A}CG}!VIAOHm%-;yITAVXcqPTYCK z16L=#5FAYLb$uH4AksNm+Nz2{9Ia5W0W1|XwF?DY+y@I{ocgV>(i%pe!qeZX z9n0;2KlwAvY5#cbKkA70n8iT9z!#GLwf=W9*92&;FfOPD0qv*XCY zi{J!iC)k2}HK_Ro_S87_&mgvUX9sdR2iZetQ_K5kF6Fd%D1TpOE!e`VZ^=9xBUj7z zLcTczji}%(m#h$X*K!x0F)YPXP<{x!VE-=$Xw^TlX2n`G;L10o!Kd>2#g zNcR1|aeH*m)*q_T_KJp(OnVEBZBbT!5bxS5N3id>PIHcyR@^ic@scRE6;6O*?enkT zfyVm#FysAk6noJxe&TtG*)&$2CPKmCPy)K;F0~&kB`VEG40a~{6fQ)>u*CBk@&H4x z2KfD5L?+5Z#XLlKOeg;T6ETDPyXdvBEtv3j<}8fo`;Cu$(ZQWLXzE7^A&4|z4Jg#E z2QVND66uk;%C8=$8P0mC+%Yp41N(RDQ+I3r0jFB<_uQ73< z&%&tuH0B^<18&%Y1eME&Of6sQz2r9VP!quosfh5cwaEi`bqg)ISaEmJ0rvN^Yn%`D z3m6F*qo2GeKf0%$*Zg$WZ#xGCbX?Lee{>3#FM1$9M{lb~&F}zG5me1{cGi z8*Ubz`6J1HBZA*oJvt|fckY)oaap-Y?7`L(NZpf_KWemaY&C-8lGcTVV-nsD^JsH&A+A|*_5*c332*0sqGFK9Hy?RD zSus5^bzP!wpL+ik_?ao;hSqj8EWxqCRysU<9{0Ad!C>p^Qt&to@-t#-?r~xKnDC@j7 zT!!@wPzvKkc>BmhZL3G#ATfFa!CO{nDB(tDzZR#X3zt2KuBnYOetfDI2V&zbIbP2< znaZx(I7*nP!`FhFTo z`3^UgOl(tPGSo`^##klSfkoM4m|b{VCh_?Q>^fI=VVVkqaSjH#3nzaB8vu|-uQz%K z`T$U?53NyG%-4)2l{nvn$IZL7?BqdJ14sE8M#1-7&B572VLip3YJ@d2V)@q71~c=3 zc22j;(XD?UGlBMeCrpUJ`Tyu81VRYq>+v0ghhY9ck08E|^=xb;4R}mQF=o9S^UL>%v!x24h#RuO&{c`I|EF3c49pv7}=&oG$ zfl#Z~t?Tk}e5!D4Q>hsUn_Cm#_%%%dfewI1wGIQ2^v!My;7SY$TZDpJB<0!uc%>q1YJT)sBT=3@tPdV+H_kFfhgNQh?ZtO^U!%q0>!sa#%cT_K(n(of$A$XQ!fs{w4r^1*9+Gi0r8SV-YT+R`!2BAUY-II3l z2F^siy2to9WO}V?pE&`qMflALez-6bsM~nsT!=leEe06h1o>_;p0CGq>NdMx=Tqij z{3dvrB`cPYqqo3oqa@02ef=odQq0Gz=UU4cSQd-%SnfwWj4V}I#&~xmPJjnn_8>Lf z0(*2h8prV|)j8oPNMzoR&Z8=RF6}{So1vyujS1fJAeMYH30L70Z1m z1Y2&vFKZ?oF1{BKY)RpX_HA<5I=>i4G+H;CGYZXf3)cM<9ixNREubpQ2-t>(Z1q=h zOiWAzm7@bE>T_G#V>go^)cP2>v-XCCviuke#ulTl2^cp~|Ayn`)TuryU&CH&s^4r# zTT>y7{P;DSX%5ARqYY4&3jjDq00vurM|lKA$ALyo(NXw?K%i_NB6z&fSwT1^dOTc= z@2Dq$x<()pF#Y)A5f5Op1(0Q`n5MU$e~m~WBz!4AMzI3t>%KC(+OTE~S-vOrHFti- z$5eG%Ty1$}oc$;9Q}uyyO$AF|K^?r~9GxP#P7tjCbR3_`TUA%2@g0i-;48d~3|>_? z8V`8Y0u4q9GlQ)(&dI;xA6|xDA(J_Aw6VJgT~^f{XEzG5QL8js3lpA+j@~yB)~3*! zj;lYd$pLF>1q{)l*2Mg=6G{=sS+zGE1OS}Cu>rh-rHej^;@Te>kN7@0arC|o2z!1H z&OBHYY~^`0oIwmeSv~r}oOz(WJlGOsS&nsnKHO>~Ft(x8sxM9S=HTGSKGgfHz%L<_ z6~WfOkmLBpvp2~+>lcc6_O+Df<-k7)l6P8jjjB z9yPk4ju9_RM>P5PSKv=sdvX();NrLTG7d2eL+JH}dI9N$-><_auf5Td3-G+pVUKZxd)TFf9(gnOgz}ULVJ~ zOke;+wMl|Tng~apg2O_SC=z_)%>M})1ApkGm*THj857pw9YkTqhWWEQux<{I$3Mq= z2oYP?vQp2wPa_1|Rb(~J!8K(Z%?Evyz~_%N+%12FX_SkC=DUZ z&ZE9P_rrA%L#PU|5Db5V)P8D>%%|i71U`Igv9(A})B)2lC}DGT6|j^b0$>q!#)tX zjqEpHDJf39+iyM{e_alADvTTbxzSU=2&Qm^`jao>JG!wPyl-9$ z5)C#9WpJu8%%nU>{zq66rBT2Di6=R03Urpq=y!iN6Gxvq@cyXbNnC}9eFp7*eE|12 zU0-UQRWT;5a|NxNgDtISX_c&mmL6r*6jZLi?l6|}AnTa4RqH)ixiLC|>0t8P(WXaX z4FFR@y~cuID{?#;ygglr%Tl{)=2L%+tMh&HjB`gv7&XH7<*~ac7I=3Ue&GG_-OtZ6 z>qa|7v^`7O?;RNm>QA)sazWaHe$pmQMbN+zIvoC9} zz4qE`uf6u#Yv0&yM?bR0eUvGiS%2+lq21I>gXy0c`7m=jJ1|}LD#Aum@q)Fmz@Jc$ zgMr1;MC)$T^`S&<0SanS#xV(f*yB$w^N2s~nY@A?JKq{#m)H`_5U;4riGP*T={pKn zdEy&YiUoXYL6SfQ2Q3td#RW#dCEhJWo7GyV*Ih- zBztB-q#?NIEZDtw`cmiGuVHU&2&Rvi{?PoT*r15u@}lv<3~vem%*^%A%{K}oUT=zB zhU<&&gkzNvo~uQA42GBgt2-2illi_FB>KsdzWGtd(iycsYZG!@EA{!YTkQIv4yI=Y z!)wd!>7x=KUlhB=>R!Jd*v?%5f+36STK5I18sSukD{`VesD*^D0_RSSqrfQ2hn$0@ z(zMB2SE3Z54Y0gW008wjPCfkQkTR)3|O)@rIyXSg|*6X6do$h+L~M zmQPWFghWG#&VBw27wrdvkq6JWpVBOMHs+3vjt}Ro{4#sek<&{9tr!hV3L$^;SC&P# zG!9;Gu3{^xZv?CP zZb4`A=C7u%rXLeyS^?cd7z86b@6EM#x;;5Ea$0HIhrv~ibJY~xN!}7@9PJEwk?;m5 z#t8k3xpLJ#yv?~dz;9l%E^n~gtxrbk=dLVweK&mjjdS-)$c~Oaeb3-uKew?ov21M8G8yg+f^Ul zK--P=`P!VJU9xglcGSjlB>1I0sS~{~*|nu41_GUdr!8RLT`(^(Z^VhLSEN0DP*( zV4%x|o^^2TjmOBDr3^_%BY`Mlc{4PB(9ke0O!$;cpJx78`&|m|Ykbsv+ckr&nvlI5 z@-2sa%OT%#$hREwEzgk8Jn`q!YeN+CbZQ#?XxSHj;0x+cZ|eU6-NOg}N%>zBB`W-6 z?TAMUxp{c#J??XjFjrOP%u6gQ?TuZF4g-ot7z%kVJF?`lB4A^doTLX8Z7^`i`EB3i zdg4>`Eyu1eh|~t}-DK4U)9WFl^j+QUFJp*Hkp>Ev*5z=v*qgj}l*Vs*QRIWzg*u*z zf6_Q1l0A!TlM#Q*o4FZ%0ls$Tf0?C+-`07oE1SHIdHQJ|f7j7sl)FRbKJ)o*q@F}K z_MrP11aqYS2jN>=GLm`TJ$z+3S9V6;TZ#gMIV2?bkFY_{77c4Kyye|%##1Vi(atGW zaW&SEhEU?Qunbo%*UOZ%tRQmI>bbXcjXl|z*d}9e3R;tk#5a?Ru~l$N6M1>jtAtwU zEVOuU{d}Y(D>ZPenJk0m3Q-1k*OY%9M}!se zOt3irc3EPc#9m}AE3&S!V`WA2tclXB3aurD_RUrBL*U3JqtH$aA}_63R9-mGT7vBc zTgnl&;H%dje+&S$OZ2glduJef#YmUzo)|OnL?FAcnqMG$jb@pP)!ju_JO|x@%mP<_ zP6$@F9;;m#AaR82g$gg3rApn^s9wt`^4q&x49!4^rx(D}C1n*lZ3#JhjJ-80_ULJh zasOqEgNWem+Lo{yf??|0T016&&@~}M^-EgDW9QmY4(L8ITzDydAzIEPe3m)+Xq-54{JCCpsMxq|1s&*B-)sdaxEU%`ziZ3vL@RMAE zCDp(-0oMgv|2z=|s!t?8&G7{LL{+cgMpZCbFc1wt^+y1#9|4w+2j^Kgj7SwQ0{(if z5$Nim15c+S>MNhy_1T$vkXqH-Q%l|93Oz4PL;GJ!TyrE#er3rMwqsKYWJB13=2o$j zom7tXOl(0%Z79c{R+2ZRRE7lW6Y*sP8swM)okV+Lf2oJKq28T9@TwE?0*+u%GVim# z$hb;PqEZ>%ftOJuQWY4F`si`k*kiRRgy) z5dQ%4XyXEm;T6gHQIYzhSOse6Z0pE|H?$L|rb++YG=pCaV&QL)(wv5L@g%ZLzYgcy|X5+T{2yV9C zfw-Hw08zHOK1K~^xSXYQrE`vyG~raW8JrBPkaLN_Nd&A6eAU0fAD{opJ+2XzjTMnugyRZpw zd-_R76zj?0k&}!=1&dg0n47>dbP|tGw^ocI_OJxlUX#vR0iSFSuqMtcSpY6-}?*_!ct4RkWTXNEQ*ex=HB2)iPk!2L|4QcB`~>4E$K@*HH$qyMo7#N{=s|3{%GwsDr_Ml_KQtRgTdGhs7r*U zS#^S2m)dd^EV;~{Sh#vl*;y31lRNx}1F=5sC(Hh?a&Dd`_r52h3* zi)2@2Pa!MbCm4dkM0j{c+3Ky1ZWUKvI};AVx@D%C)Fu_<={r(v!oich-As z2J;##rKTOa-XK{MZazi_6Wv8izQzG^6VeOD@aSLNN@Sn={U&_^H~)uvQLkB5466K; zfRB$0vw@LXnPe~IC6%Q=>+u8eW%fEc?*lO&J;tt75N`R37^A+x5JXkVc=S-a2u?Y8 zh4O*v{LPyQXA6H6_AwZxVl(afXtMHSI+hb~&xoA4AEM88!xcyN7*xB13UPr-f8|S*hfCb zgQ3>&<6cleL$(_^My4jz)Y*?+U+VRJbZP?MzWzrmw#z;>;TGK$%EHEZ5B-J$sn?b6 z?H8sL?jOjB$0T~t@~m5494Yg^v)L>E-~GxfXh_h|GKx5<3%BTTZJLSt)mD4eOf1GM zaxGN4;fvIJ^wC{!r%1mu(pDB1Vfk75_CQs=N+~Q55e}j1vEmTwZFyK3;9#0}r4@RmMgMF+xDsM|oi~*sTf;REWG6 ze>>wI0RNiXER`Zb+^K$t7Ak#`eIPfI4WyL&DThc&-N#6fSmq}_OQI&2p-}icZ@|5& zdd;WPreP{Z9#u6R4E@)rD*RVlkTUbPQE{QlQx{M>qn}PUMH6q!ry?rvDx`TGBWzHH z($bbD@mtF8RDQLdH}G4&?oY@K=W;cH%EOvbIGrs=6;%tD&NNJ-{cO&j{6mz3p%rlt z-J|*?uoT88l&V{bXJ-`M8DPX`6XFJ?72QE>zin&ELstC1Vmw!|0x;?<( zFo33}C88xD0b;E$zc}D(p*8RZvSn~|9Li!(ZH$@!7J@lbkdq21P-B4+LW4@1&(ZXH&vZ)pU z=(b%ebUp_mfuad#ZiQnx^v`(t(# zozY49GTSttUgAds1iF>7r)@iwOIHY9RON1GgU*&227R|sZAqrUD8In}>sNr_%-Roa8!{ zJA%Icf&Z!&41g2eM>pOJHcS+WFEmJ5q*nPS}{se>)mpGfApI2X)Xf4Kr@mTGE zD9dr|x5TH-Kei<=_FqYpWnS#J&e@;-R|tDi%44-pSPx-gJ3z$aj7vM#r;gu5*< zCX#^wC&plYO0Mr-MSp)r`2XZ%n#R+UKXAY|&0Z=PIT{;k4?&4PdTe}tUhEy>D76R8 z`FZ4M{7r4e`o>4+6G40ST&y^u^hNeXE&F2U9jm3*U(K^8Hey(b@wAKhDfWVy(~}G5 z+LPucXQMI3gXu7y_W^`ZxAlUn&*eeRAp{f7PrRBpXlFc(FE&Z>cNknluaI??{Rs;J zgiHBLnRp!FG?i%IoUn3!F@3H*J&K&H#UwE)-+CtT+VRy54F2@7iNm=~J$XyQ{9TiH z^+@71npjN{6e(%w;!Ct@S&Td%22@6t(kcoBomVfG?+dvyiiF zIg`a8^>Z21*QH)zz{}<@t1I9qajoW1b!*@y-dbX!c>L@7ca>_SL#x|(y<~x{QDQIXPCNq zOn1&2b{L31`MocoeEHB&Xr{Cgc7euW8uWB;lzhTX9};qH9zq> z_YV{Xv%PwsssFz7MQuS2bN`3;s5X}ZN-v(2gx5|UXy00h|Jts%0teBCj1i%Fp9X<4 zIS9b^K;(|l;;XH_SbFki791NNipCD}4uodzYnCG#4*)iWR7nf=l3f}78K)W!gA+PL zCf6(;J}uLQu<^0l;%NLEiT2XS!Ns+NH)Umh+n!Rac!`cP99l60?$)zCswLR5UGBp@ zv1h3ykV=dkT;ll~HLVz%6K>Yt-`y?8?|{E0G6&fc=2-P5R$RukAfqPlm3H~hKLmrM zzClwOb~WX`0AdeO55vuK$pM#7vU#C7(?9c0gvW0aW*expv!M!!_zzt9GNHlbH)Q7v z4jAU7UZv^&^3u0&&YnsL@nF-G{9y9N6HPsrgztZj3f!r%I=DskW2T4K{;h6iLe9JkIf9&CY;`g{2AgiQ$ZuZrQS`EBxu=tOz{z4@U$4q{^Op`EYlxdu>po(> zSnz7}hU;%hVFrbC-1ZEqO<&4Cp}#*Xs4&gb{Mz+%tXh_;ImGY7D9hDT9aO!e7oPqK zX7p#^x>D-yIuzIu&^qH@D=|?Lr#3Acz_{(FTyj})^*ibF`qrNT7#Tn;^7M*N9vc{q zy<^YnHoW%+k>pH{b3dC27ODY}r^x%w$o;B>L&C98gFtmxSI0ikg7c8KoM zn#Y+`W~A9h50qO&yearj$@C4(l44c|~6KIyXz1U7IKdNdl_ZC_ye^djc_ z^=v)}-r?iV)*9y^;qQ&4MHQD^2N_EcMO`+tKqLSkZoMUSGuE!#SV)U0yD&K^6nQ2# zps8_eD89?g-#>Zt_c_}8oZ9o_>)5sB_A-`%sdhb9bQFaKGt|BDL8+^0cMStEW?4Zv z5u<@)6QRYs9_DWXsTbeb^nM$ChWfR2G=8=e75OjLL0(vLQXfM;E)=H}VkX$W@|^TF zUVja}3s?B`t~?XHe?T*1mK82H^qwvY$V)53=}I%-O#Olt!%+zBqHbDy*U;5*N9qn! zvtaqF@C4ObR}M~p+SDjfjZt>dx>IXZni?h4m{LkS2qAlZdUW6VOYOwd1(6q5;B8f7 z7nM{0ZPOz3aPyp$PKly>WWYJ5>x;0Bv zKar)w?1vbYud4ltq15*Pw}!IjcoU!P$nJa3UDG+ytZSNIJxe|ycg$^-@juwh%J8xN zl|6I5HNDchV}ANSe0>af7XmLeUXqLX!S^72-wkkm^NQmU=eT_6zr&iq33eflSDHOkr zC8O9}w@!Ci-R3B#Q^o~0^yyCfhLC*$82y=)>g}e1^yAPlCw7(0cQ=8fT|dK!tr@90 zzKl+}o6@PP^>xI+`!xMA@E$a?0vXqkx`1rhz`svh5_wVQ6gVR=R=9fk=i}kEHw?7z z^m~e55aQYG#+6*xA>Qs$LXf^5%)1i&UWRMIr_h8g3IOGhBGB(!7?AR-tY>{wZ7 z$&mEqEdFEVJg_+8uACq6@}1+Pn9qRtitna@RHz+BNL1i;i2g^$Qd0Kf?ir^{x1ufGIbx7I+zQ|2W#|9Q(gsxr_ zUVCGH;!s}VweCSXR*%c~MLiw4;tE#SG&lc*J-NY}RAP;9@XH(c9BRqW z`CLJ_&s}^LzP>)c7}@b&>VG(?boB?p5=;-`N7m%1J^3y+B;)VWc~!=q1mIE%ma{AI z)eEe)1>9-~mZ4+wcgX2Q3TrE3y}x=A8`C^?DgMsI-4(m`iWxY8ek~Y?4@`~^MbO-h zp}=2{Xa@KhMNVc2Uxt6^yL_DogP>P|KP$jKjLq>^msxiPm${ zFPYMm+^WsbF!wbEdBBl$<1bY?HA$M}nd=v)zw0jCNvOt2QVfgl0oWS@8w~62kN~8& z*urb44Up#j?DAKwqfC267c)dp29stvnBX?!<5Tp$X%g(rpt?Y&~5A1Fd)n@>&WWbv9Ko_VK32V&yn^xXvcZ?|zko3*@iqEN}{oH*6} zG18)Q;v9Xku69nuDg@+-p4wFepkouOj3!pDITvo(i+aP#JLNq(>%NbG(4{d9Mt)Na zYv)8!Uj=W{qHyO_d6V=~mBRfBdi-xMnaV43&2LI~GV5ixbD=8UFcove2X?%$qkgR3 zd=b!N6Y}%4z|<*<06|~4_hc}f>0wwW439X!l&j9P`JTMQm=SKi97>~U4U7-98_F1% zAxZA6o17tDPV7y)p%R@q7_iM8ZBFJ3}tt>G%;7883ME{E73XorPr_qy$>x%zLOg^#{YX5DpGfDWMWD9+d3r++)%{u49MmM&fh1_ z1)pFBpQ)!b2mKyGVq*r=dH`3JutVj@3ibM2Gd@S0`;?zhgU~NW zjJ|KroMZm}h&2ZdqWY!0J7m1z^jDr4#8Y*?3AI#z0jTCUqeMG3O7!F-&iQI$=2TA1 zKIm)W9Mc5uQf5Cx1N>#qV`k0})%p648k;#sst8}J_>zre5OSw!aZR4(fP*sz^@{7X zdAz?fQIY1oae!gJkVdN+3O%TMv;KZee>*Nel{BS(Nll7ftE@x%`!EG7^%YaW9ad#o zn=?GHWoM5BzVq78VEP*hD)yxAW%4r;fmF9@olI3wyn0{i7QQm?fp8J9tY;#>8|a zIcrkK#G1U0iPz<$;p9-j(^O}#|-omMN_SDk2sOe<0* zdAim0(D6oj!hN-Cn?{R;(AoE6S+IDJLiUx^=W+S6(&69lF@V=mR72a;Mkv0=-GVA6 zMaGkts;W-io_d_B{(GCUT$Zs4mbSFo_Y}s09TTn#U}On|zx4?1GK1lSu?o>zvbjl! z9C7{&G?f_sY3IF1yaF3m(&O+?w=BA3v;K1BG4uTlMHLRIWOLMoHT#SO2AZZ~g*0|e zb^&mM00rL532(z1l=vA#oSH$SGpDaB{aQ3`A3b4AiPhCSn)qPo(%l~Kv`Xx^TKmJI|JF(jnTWk6*YDl=E zN9)wt*!t7~Hg=+}^PTG4oG~Em`by%mJQIMF z?>WvuPSt7Du>L9gkLerUq`LGkj-(JCB>+ia$>nv^+l-`2{g9Nt`QrQQX3#C+Jq2v< zYV&;{Wv4&(d9yL(VRrGrP-W%a3T3GBWk|#Mv`dC|EAB5e_8PQcMv)pxy4|F zzI8UQp0jBOevJzsJ(nXa;Qyogk5QlQlztF3ln#h<-MM(F$g`7gjfoaQ96_Ftd%-`1 zH&^%=MxS}5%(X5s!+IXa(n;rEIFSLYhhN|L1yxY9iwA7j;QM*VZR&uHk42+^Q zip=>Ohf}M1Iw`vHDuymOK7jY89%`z^{cK2qJwzMHrI!&AjW_ss!j(r9vAz3z1{-(a z;6PlSKK{Z_I12XZmtFd^oHeW~K|OZaRIS;-SH$k_UdsaX8 z2L8sL!MB-8d3 zd(h(7k;lGMvdb^Rr^zEi7x<+Acn`TN;a9YtxF;C6Pd6}~yTF0D z82@v1YxS|foU-!fR&MR%FNIt!3n%`C!fx>Fa)fYcM=+P`ZoJ>Xuo~I4YHN+5opc7H z^-#6g1e`>!KiKL5jQ?JBKG4V<;WENal+pG%$kgnmH_m+IflPr6zJbQQb#oS^`ML^J zgnQ~73agSCOu)U4=thL*9RXt7RBymx*ubY=^b2o!>AS8o#*b-@*C^| zewqJ2`BQbXFE7@Pbf*V+IYaCF%Li#G_|t%4Au6EPmg!%I(>TJF2*mZi?T+>8QtAY| z5;g4UbFRH$x6x1>nS?RejrN3I%;+5u(dZ|i0hT{)eM$TYbQXwS>a_~no3-6J#-ijY zFsH1azCD5a0cRSIkI}(S8;_^6$73W!!NHpMaMasQi8f|+G`R4CXij+30NB+;zhqxK zUPAi8a&u|_>ZZoP$mGo2SRTO**|i8_y~bL)PZee0<`Sk+F?r5tz9anY-bb56v1|l- z#u+-8_r&H^7%muS2A_5295!@DYv_}giUjR08bZ|hO|2;77Sb>vU;d1Ymvj;9CxTSK1m(O*9K`cSd$@}S}qt0M~x z-8~%C^Q;x_(eZ+(0DUGNs$ca+wMW(Je^B-7e$|XVqT2{GO&3pJ|5*#rNEnw26EIa| zSgb*(tkVv;K*H-(-*~xWHJ@V6kxR3SWY#-*@421*4-TK)E*8wb4Y(b`LY>VJ{2i@* zjFCi&zyA2bCMc_n^DG<>LIrm4sT#p>cVGfy&1pr)NkuH9INc3pA_;XF8$3O(>)I}^v@7cba0kNO;IzkjJ}4% zabAb^{U*QF?p#x5remHz9SN8Vmq|cnbAfqpyCYa;wzOp8|ZQ5OiaF3%?+*mmqI1(pP!{)XBsG{0d$OTGa)3* zRPj3&CWDUMeWp&oj=HekEYEDUoSRu{R7y34JI!jIIcHzw_QkA3eBVB_x7QemsPnHZ z7=1I|>z{xKa{=*JwQj-+oC)}208=?1cn;sdmAw*A#GknK3L5QVd{V&h&L53@U-h<3 z2e2J#Taokg3#rMQ5uJ{r1SWa|@zJiCORt9yg6V9oZYLW9$0ih%hFi9=aLbB3m>Fkv zkE|;zTD4Ws%!Eiz93ot`Mo7?rp3{B3S(S@m)xzY$Kyu>8Je%BTdj34pS>x(-wH`Sw_&C0`&dIdO;!s8W*0u-ukw>k(e98ybDv5BqFs*z}?@ z5edZF0UQ*1(9PK}LK7~or%x)A4S!C&_Hq1dtP|zVh48Nu6Wvwe=5K>r_4aD{#FukH z7-NAG`72%8#4`^8y)RHH1A;DNeVUSq?kmF0!}x=1Gu##0@C;PsJ$g_IZyHQs;^ybg zpEm^}ILWjLQ}6~E)CTA{oQ~4-j=JC|IoO+MWukuG+~ zpb24y(wsiGsb^~ZS}-ld0?zv=kSFnRuXQ}!tnm^fJxPn~O*p+vz40-`qo{de@Jcv2 zz01Q7_@SM^cLqhYC(1CKg@$w;W1MPW9&p~=5D<^Fn7}0h)MXuaW&(&d<3HpEOrc@o z=2{wJy@wD23<9PD`gMMAZNCPDjyoH=oR0yd^(A9}^#R7$s{deMrv2jc-QPQqnkI^2 zW zxfS^{+>CkD6gFH|?Cg4<3S_uUmio22D>Yl~Eiu)?&0i9+0b0G?9CIfQ9ZYo34!1O@ ztjgU$IW7xdxLvUTxFG%AR)y^9OkJr0PZ;}x;R0sEAK?IU-V#J;oO%h>-M}~t7^!QZ zi^0B3HQnXSwf{{wa=OocH3$1=Vr#bjYO)|@?7hfuUmyI#J6T0x&79P5ivC0WKJ%jG zrA!Hb++79aW%sR1*tx{HM&hu;o`~5i+$_CUV+*f}Ta2O7`CgG*--tPsjLm=cp2{p3 z!%!Y;9PaCb9Ax3Fc^JntGe=jP$DzTyD^d`n#O!}eIFqmRsJ-J|6gAW7(`ui)Cq(6Jx$cD9R0IA}KH1VQYp#A>&_W?@xfexPUbt7yp0>^X=C3^c|$vHbNg|XJqSt*t1OF zASwCFUA<9br;fKmFe$TNeSo3#1o6lF>0j_CfBd4!GR(BW%kD5=uTWt19dZ>&oVXzV zCr@4Pn_sdj;m?8OC|%W)1J5^(UDZ>nl_vPTKi*NB)A$M0%dGPkv7L~424w7Uqbx+h z`te9}bEO}71D~4wr~C3B%FcK9`_POyWkE4D0P$ed6*-K8243XXno{v0e5xg*=F`kg zk1^z($!{Hy!0gUjTw#=bW&q2ByMv)R>aOa%C{j^p7)__2G@HmzLPfdY8Bz-StQL=t zqZm)9gFp1w`)#wi{us3H4JGdjM2;_>yy_&4u3U0svgT@|)oQb@E3juFm5Ib{(B5(h z4NysW%R*KjRjp;g)x0g@zWU&fGUtrhi9D6P7hIgb0N-!l*h1{lyyz_h60z}c(4349 zqZNuRVmrxU908@mYjb&gs(UOOfD!4e`&%sHtgKqIZ=?(g1|{N^8^+Rmrui@doHAOA zIt!3>PJD+|P)2#@DuRi*(Eb$ZjO8AG8AdUN!gi7I0&>%9Tzj>!E4D-7O}UY_*g4@% zHwAdQZl^9@v6JCE^%1E3q%fKJ6YgxcV~fk5>D?blVp` z<$POt>Fo^8Q87xFqYI-M{9YCbiipJ2(;K_Qd6ukxZC~8K?e&*3nasnx0ZN+wZoAIF z|BLv|m|lwQLI-uFKb%Xm;T&rUOsmZ)WVDNg;k;`#(C^pWr+FIQ*jVA8Y8bTl6sJRq8(@QXXUT33*yPBsOV3`RhhN+x^4636>ep`M{$;bfZPGVZ-Halj95u;byEV zy_-Hwnt9m41`cz!$Qo$P;^?9Dwsnf+jlF-pfN%J$TXzDQhJo)s6K`tp4uf+!=`Ler z?3u_9Bf0@xZr?e|h?%;wGFB^f$NBYY*r5YQ8X_PQ`q--Cs6Lo@CMwtc21K9<+$v!> zG3r;D|7Q)6B0yGmNH2c1FmA$$D7&2PCp;WNa!iJr5qA>rm$k`q0HJ^j6BaBM{51hQfmC3_)RW@M4=uW3|=ct>^VCzwg`t6Pq(tAp6#X4&|C z;mieg$@3W+1$bauO-{~w-J#ccr}Nl{0%nfYCICLW53y^qc<@|nh-)~|`ow-&{T*Vw z-CX_~JqG^Ul0t`f=V!V3rV{#7@46}Clm*HYf8s&g6eyxqqYAqKFc3zACsx|AF zHNC|1MIQ)`Gd;>>NRxG=b#*f6?1Ue!0j!*^#g^{<{#quocah2CC(k~MHHc%`8he;W zvt%s_`pWSAD_9+IgezdBcG++P@AAmMVU$p;?-QXsmNU>ybbnBD*?STmx4E9ZkSkqs zH>z&zY~$Cn6(U*4bB>{9yU(1bY!vm=sm%VSe;e;|V>z1?iSEm3qs1CTazA7)Jq?-L zgiIJ@5bwBoOSpe;OY=?;q(Nh?VOF04<;C3o%~=D|ZT;K%dVhq5CQgjCh9w(Ehnp=h zNSq-0#95GVBYc&UDrC6&S3jBGuK~AuxcR3*-KZrswO=b;zn<+oQx&&GY9&tap2ZWO zz41C#f0*hF*1&EF$MEVI)MXPL@R{lQ*Kph4@pMEA1r{r~Rq?p$~`v)}7qc@u5)=clpO zfQ^l`6>ib{(#e^lX>=(D7HwPiHNF0YRqYpxXcNeE=W9P?8vDazJg*eJJ_U{&uN1w` zre1#(?(SbjWNA;W&;n()wZ{@#4FjS@rlzE(dHeX6#!SrG5 z;r7hYvNuWp8jSwMeqbE|A$c)whvbW-+@ty)kkShcYa|+@M&xbyk%Zt8X9K8v(c=03WzV(FPn|7p>7n$eu-RxYd=e?JahM4DSIGlqo#kb{uB_q8 z+QVO)wc9iDv0ocsJ%xD046z14B5X|Tj|@D$=V+gw`YwduEbD*zsSQj+o>))HxJg8s@c zcJq5xP2VB+dxT%U`!kf6cdl37;Tw1gA7jdQDSsTZ#LM62=C35h)qj=$bwsq6|ETf@ zq#pG1f1v!mL$)t?#*W`7_kmI8-z$S6$8J z>%FXTT97VM*4bpa)jsLv>AZepsqz$W#myV&J2)owQyKaNn%X1Rf zU9qv40^yebri5wq8M2MEUe$h~s{YW=_=8vPN2G4l(*voM$~xjWm=xiYme$Vkuwzcn zebx2=(;|7#F}!?TDk-P_bIBw1eF!JHI+qXVI7oSIY%GpACnap^Ydj^&tcZ_`uZ}oD zwb4(C9H6D_*=J;zS(0H`oQyq%j;r~+iYR?90B|@owH=6w?iHFc@Hwvf0s11?q2!G+ z5fz4;zjF#~gdzc#u-;ZoQao=xR~O_FcA5Ge9vjG6FA2zVjV~gUA9z7y?cWCqZ{qqI z7YUtO#)PU>kP)`Y^_8!#+1@7X;mK)cw0tf4}Jdy-|Pv z*8ThU{LSF4K=N%^?Uxs9c1Y5+oxA8GiYFGz`Kp}{@PLxF=7(hwPhB!I=L-d%VpzAZWAVS zRmSKiNp4|xIp>RY6ugk+Q~Vn|`*(7BIpy9(qFc44ZgpdTGmuy8y0@Du51{&PZZ3f z<0X3*l$9KW0r?%~Jm*#L~{T+M@xijgry}hrT?a&(A8@1#tHnn``hV1b?Q~i*s zePRa^N#HOMoMAPE!`FslbA*y~h=egMy0O>@^`= zU$l>Pn)h>(dO^sf7KbG5v|DOVXmp@L!e?Im1wC?HIe~7vCjpF@# zd_sPwACUcBBGP};Ncupwd^inWv4_tOvhbiC}oUz?&XTU&3Ck^R&d)D29P{8REziO`OIYlk6Rp+==}lgE*vV1#y3ZQNvP1 zb@OPH^K)_tQND#Ibd$fKP0a{xh+os+G1k%L%#a<{Gj#iEYE~S%ut#+zxUNP`EIGKK zthg)xBk*_WG3pi0v!TT(}*Wl(N{D(L-w( zwfr6?I(k>_7DT-yoX;OCZWOrR{2g%bUr1FCRO)54cHzH#P@vsCx%RUVM_ZR9e@gN--WG zL*)Cm_ zFYoye3KNa2fP5+&A}!@mjn7~ z@~(WOE599Z@X?;}kGK)TJOh0$qV23?pFYwjGZbNw&`>W#II^w~ zkvU%O4WcHv6Do08q1A}vjNa$^yJ|6He6Y1Rht80HrvA)k$Y7zXXH=6#?o<1q{JF`HPW;6tM{qpzusYaE7q`q&JWP>UW))p zfLrfE99$tul^+6WxC>(L*<(3y&RtS%Zep*d^}*r1t`j$FCz6$+hsvk$880a5OilK;kNEiN?JD9mGW}~f=TxHAGatQKEZPcKf%kpac4&5X=f?___?+5g64;;MbYEhR zz-MLd{zD9@tQ~Kk)IPjaXv9!A<$}6fcLvOq6c9|r2FO|@5kt7xzt1v{sY|}GIq~b? zpvYWq@%5+|P>lq~Z*kK*!f-&WF+1_TcLkhB7eGttSiKE;)u5M}?r2Nt+IZ z27SdPz3-xavnCsaQ**vp8b_MGeY9>oVu*NlVr!WvK)wB--?u2hjdRFxNMMw82I&N1 zTet}aLGuewcQH9_2>fzB7E=%p*;tH$fXvO?PQ~`$jM5Trxx*!*stA-bQc~L0jnolm zqmUGfWEqG4-Dm)rUY!bhDcR}oxa(KOUs8PnzUh-kU*|i++yOlY>YB?tnJWN)^VW*& zp1evLJ;^+ZT%uY~>^`F*Wc(BR+oQ7P*Q#-5em&3pvY#kxfRdP)OSOHLxtU494VI73 z@9k~6E+=+Y>Q0bE-@}oWmmqR##>D=n!xqktOb^D;6RWb!`JeX{c*E)lHy}Seb;Pdz%Vkswbud z(RPR&?{rX$l@M+kj?7kQE0t(~CeBF4Y}M9BC@tg88X%cH{$2E^FS&1je&+pT{cxmf z4?Jz{ZoJ*}51mI%_?&+;Dx|)Bj%YzpYTPb0hy|795A)Eskf9yDiQNRB8FVE6hs4%G zH%gSTpD#axy<>4Y{X=g&K z=lEW=RVZ@D+XWK*f=IuEIN6yDuRosu&x`I2O_pcC7c@~?2)C$dsJ4Xpq~C$>`Lppb z7z>eq@k;t~`zP*<%+UR}u(BW-Vs~nm{Tf$PVmnTR6|49*-1rrZPM7ltrOZ0xibAbh z&bRx-rRm%Ps{1;FXHP45&_yEj1EDK^qM6tTqhXk3=toKi2{k7XFq=FfpG`&8X#jQx zS-x}lPTfT*P0X{*ph*&qCnd!~Z0upomzRx?WvL)$kD~~701={A-RqGq&D>>Rt8y^2 zfUgD`^vooB1XP{!0otjRn)%VEf2k`O#oz_E%R!^If$HDfr8|?qLtXB7&2iT$i@RCR z%!qt7E5}_WU>zg*Zy?7AoGnnmdY>UWn*+L*R&#wIMsz2Prbe6Wo3EndItHCz5k!!D zk~&9tM~6Ba)bwrE4s++-96M%##5Da1pLD7JzfotH$?C)QAlG6HBN?{xrSa$-Fa<$GKg4;!|FRT2eop zg)H^p?@3ozYWe_F$dpH3&ws~AfEKfE{g_l0>eny&@JaQ{W7cZ`EC7E0egXD=pMC8u z;VvW@u~m!G%9c>o%;YL5V{a%nGA#Z#SIhCUoU2}gm1$Aa>_W!SeTJ`4^z3p%N>C47 zu68@_?eG4fesLwMx%y^0uFJt0UF|$_P`%oKK2)uC82ET*hEF-))NrnL*TR0xqV!h6 zQ*&Kq-AgcYEPvf@@wAyLLFXz)97yY=P%Dx}#-8Hy6WkU$rlC@-A2^@hZ^0p{%b5nl z&~is?Gzq$!n`CfVc8I7P=%YD8NB|3^*GC(&y1prKbdZQ<7B1}UCy@+!d7Q&COwculYc!6^aUEo zn}ltTi>>0V!&XLiK=Z9YH@%_=oyo+X;nUR?yzxA>f7H(egE?D-1XejjGDJu}zUCj! zuNTjS{3BiRcNu?PL;SIRH{nUM*!_Zy7^853KMEIstY(K1w0E@gr#l9zX&;I=`c!$v z4}L1=igCC>czar%2c8nU!pv^ae$`#eGt<;h-|nUBTZBJUHO_Q%l{X+&bU^7)-bnBD zp0xA7??W!BN2f~2Hl+NX{H^YKV9ZJo&lvK4!RerC$bCVOfzW_j@E!sE<3GqpWc(?|bbP+m}GO5EK(4)2LpqRz*E zL&K(5^ZI)4Y?5lH3t>@cvi>Um+o0if7BgqpZ_=lkY$~x$>53Qb!U=w?@9W@Y4{j(6 zZD*d~y6t7}q@9Q9xR)NzE`N1jdF>5F6LW?Bp1$(uXO|z)S6)0td0*3T>%9p_dw7a0 z&YQ3J-x+SH0iH8W%Yv)jnQ{;B6QgE5ZSBQtti%Ht2^F<@?2OaPN%r!xsp0$OfXCwl zIbUN`eS6yR1DIHjA7o%AG1aEB+o(f~M!g%0soUQ|#&5IsdS+hvo4Z#TGyAm{kMAaG z_d)*eNxz1_K81CN>&Ji6w~m7ei0|67yTiY43;+H=pxxSb{LR4L^zUf8fTjzz+?dS{ zl6&Txn5;~EuQTP&{|ig)z0gVW<@rlaT=F+urk#}RHEXQr2b~z?e&6VRSD&bMzsKpD zuthJK>#tes2YZrE-h)YexHL8$`%{gSHAd8Fy^2>D_>Oe$C+>0c_Zhj2*Ko+%6&vbC zIwFkaU|tK^5;(R>UYQ~5*?6jXU;JzSV=qqkYXK@=fUo3-T={aHEkmned20s|VcOWh zpW`K3JL2!vTpn(Iho)*q!X~Bsk>iF&3A8mus$#>_XX{`jGk%Ao>Ikq>u~|@ z4cE+$|7Fj+)%zf9Ihs&qqAj<&6?kQWSAA?xe#6&cf`j3;_!6Zr3vb%>%688QlyG{7 zt7LT82Z9H-AlgH`LT|*aLG?oG@aVm<^6=VSZiT|w^rjP4@gUmbXElXS4r_c2e>Z=; z5v$ic7D#XP`6cmeDXk?A&r1Ku><<&*6i7b=X!X`8QS9J*_jjdp_jf`3GOGs@ZzT*| zzNa;C1ea$RpO;TwKM23nw7r?zbfO`Ct9mWEHPO48k=*jna{B9{U7{FQ7AyC?*voiD( zr}9;oH&O>#|ICPN+w*SfB`GF1=7LVH+BV%;Nq4f+z$_2ftyKD{W)_`Of;3 z=q}(qrHX%}!}tFNbhw~08ku0mL;aLDia%Zl+Vs_@A09}Z^1Z$P_x>52(&%`cWn~DIX<19JJ(ogZ{2VzwBmNiqCqK8+qKVlAmRwn+s*~ z@Khv_mRA1QKY)=aO{@s`_HS*aLX02ihw2B2N*?@<7n+0nc-$y{l^pX zCv^dO{AwmEky*4pG#DtcO?19Ig`Gv~5q-^zKbU%vFT;=a0DGpoB0FxGxv(Y(85($y ze(vJaywJtRxI(3HG331upB63+1kD&M{r*9bAdAno(u6b1li=~}_Xv{XVFklkees1? zy)DUPH<#fwoVB8HLjW$YzipCz_-9<6^yrOQo+_bhW_jW|eN9!k`PT;Mj_{@ z_J>*&6Yt9WQmW$onpNm2T^32S4um+x$J%pQjG76JBnCIb?9uz~y@Rde$Nxeovw+bn zgwLi6!)uR**KQKv*(=L9SVh;Id#!wGou^cbTs^5TY|jc;C4MXzSd|4 zM-%VPO8*W(v{ea;IjNr`QLG&vSEd^EwVO92-U=DPekw}gmLJkes#Hz6Bc}27w!h9V zx;V{;-MlOf_yUr~Zlj?kUt}s36ASKEtU}2JWfK$K!Fz9J=|9J7`%#wlL90KX6JI>? zK{G|Hmz`mI&;oK?rhsKu*NvJ;K=w!Rq)|nVTiWtmnul9_IH! z6TJj`YTzSlYOt2mAI(fFRq~zNL z4&*c~4-U(T$-#9Y;xQu@S5E=CJnr`dy;l!wiJ>sZaMK#+EC>oo{t32*9yP-fow*%# zmBXsi>s@)6XHO6M7%cKy^CZ0Up0;b99L-_a$oSX(UH#}BM(s5H$nEb`X3JdGy1Q8G z=F=~u1)BEN$xErIbDsarZ{U#c1NpAA)TzCIs4^)facWYYj!F{2m7B*Nf zKs&HbIkma}$47cA_xI}y_76;ShV~bGqJ+_KF8F5#n#bq4%i@?z_s*rTQTlt*2YAiB zKtaF@+j@q3Q{QR`rnh@`r>TiyF<#`HF!bKV23nN$NUyFA5J%ve1k2g~yig z+Ps>vtdP{NiMlp8!P7!WAuj#1?MieGO1u+xKH9~(;l$&&-5XofIq}3-@A*n;$Hd+d z?4}Bs@g^9oR_bq{5jnj0)#QX;m0)8me>}#=*+))C z-IcveK`*$G(K6Pnv5LbT6LV=UoU9uXOn(03L}#7>J{91&q4>am00`^d)Wq!Z6F-8_URg*b;#*uJ|Rd;oZJ75;iLm5sT5&N4uloHM_(|`ca<&M zWx9=*V@v-Mm%UyHuh!zG(hRSRE6(Sh0S4UQ>U}yRUDZL>^%zPLy*W!lZm^lf6O5+l z8e;+rG0yw}BTuH5zu(F#)cQ{p`gT?!%?~?P)_@(h!+pRKeF61T$Q+`ukeNeybLGop zGxmROd=t7GdKl^^Rz0|ison|(E3zsYxP{Evk1`i!g zgi7e6Fq6LJT*Wrr4z`pk*Hf0ixs%Z}#11+ygH5)bv`?OAw|`o@!`*hz5GOTXIo^!D zgoavLUHlA)tkAJvH%ClG>hcrj{OKRI_j|d~8MFAGcNmy10khy;d@8&wf6LR*pX-8i zO0y{O96NzT#*cblKYO(+NEqa6wo|A(5W7iqhPbN`_7u@bdC`( z;5ndCP+KM-omV?u#4bo5cC~(un2}ec&o$+}-gTs(kYxRcj%V)=TzcWTkcEPeQbzD~ z;&sfK3u{>Zi_mQ!6HHG7$IdnWNTAY3e`i^LR&e9p5H3USU6@VQWDPCxW7~;RBnQz@ zDU61=5Jcy(C43M4tso3LD$f4jD^4D`Th)< zS$~k#PB8`Pf*cR4WcBL0s&o-31YKkKWU3m43bEC`hVd^q!Rw*tA)-GbflWOlvmnST zrXk;lm-QT&8iP^l6#3sa2R!AOYlNBkY!BXWi=@a!TmiMG1vlKT3SCZt`3!CNg8TU~ z_dQu^H_UTC-_>V*;fAmAsjvoJ&MPLRXv0FKtX{yfO=71>EZz{$6#E~OQnKM2nUtTJ zl+u>grIMG1Xsw7$4aiCgsSmz@9Q`LlOa|FI|BBk&S5gU|)8=)EGs6!|BS8@IU7pV5 zAH#nyyZp;rIXd2M2+--df^<3OaDv3G1_s0sqc5WyEqA@<2YIE2GJSckC=Vu(5>aNz z)R)(ql~-np??1IFKCT) z&+!!S#K+#5hg9~`)f=U^qPjRI`(M66zcl7`U3xTYQ{(RpV=MBZ>O|dT!THMjBzvlk z{on3Jr*FSHrlByd3j~gy$x2|rcYZ;)Jbgs^!>Xl)5Rl zuRQBRhqa64&e=jDR1MnoW&nrafyga;68XW+fS){bF00MBS%8f`j=sFxJu|4W7gk}{ zaQnv6`WbG0iA(pk@+-%Oe+7n7SG~2jjq8=C>$5v^CtcR^(&|Z<#Uk2k+p|OV(lYzD zI(wvD%x!(1olFy3XVPWiwc9Ip20lz24um&P{d`Wc;B(fT2ZHf8#A#XYrJ@h;9wkQ_ zrS^TnG53X5TxXvH16Nrew!In*Jj0`J^6DSY`$O0pE?Yfb+n><{hL{lwDpFB>FtN4N zSn7Q%=QvHFqNy%(6!xw(qg?=>YmS6$6AHr4)$n{_2mK|8Qa^hGT@p5gHw@VeN7;FF zZrv>aM?VC#pEB(L*P`7Wcu{x<&o(x8_-F0AMTmJ;eR=ZcfVE>}eVH+5g}?I&IBCrE(26SvX*oSO&#Ia44<;nlZYjiI z`@u1vUX9J;$;R^ZW64@Wz#sbr+S?MR*^ zCzMjXCsu(iZFb8e=oK# z#=WKMw$$w^<(kj^{k`5t(}-bFiH@{yFBq$nmvA$u7&(#l#yjnJG!Y5eC`920>pGYU zH;l9=MD2@K&)JsmeON`?yb&DF2%gJhsUum&R?ixl8K8->_GgdJrT4R-zpQ0ug8X!g ze&Y`ht!j9rq8ldD5KYiFUPp>tf8n8G6a6&yJWSbPfyo3-p>i={q)9kY%jH|l`?D`gq={XNMeOq=OBO8D0$5~^ zwinmg|0L%@y=7QrUk$qz2M&fe*EA+;R*sqR6h!+Sz?GS-Y-EKkPM^Cbym|TUIm$2E zahM@bq_DyIP?HuQd-Epqi4H)9z zqWF))iTB7UY(Zq#ib9ud6zQJty(^D(M9&WRVEXihQ(@6u4mLFXv~y7?hKqTwU77)Tiks)F*Ni9lC`Msh>QYG;^v_yi6ym3|0@Oy%>GxFeA1~S&(&3 zAUASYshrk~*1_N0FlJdHTMLWx2UcgFL$mO)o(7|rt)rR~OY7{0DxO1!70Y?VG{A$O zlM1e#TGp_7YT1>Gz9eyks8cR3opxAQIw%FJ{-SQfW)tUJK?;=W+QGV;(HFZ!WNJ3Pzq;agBXjF;A&o zttewCc!3j<&vLxPU&-ZT3Ykcre6&s^ItwF9j>OLA(8{5@FE_Z2bt>dk{<^yUI4 zV9Dr)g2flmYDnR|IGaQbaxS|_heARjXmzh<*gkLuf;DimG{?+-x=-IILCuloYyW?Y zy$gI))z$w!0|N{iJflX9HA1Y>28lM&Xfq{fAmLI$jSV6SDy^1cL5na0C@};kft-$m zShdw&Y;F7WseQEdX)OZvLbxQTRk?TxSOm4TXBeRos|IMz`~B^6&SZl6e_lV5b7r4? zS$nOu*Is+=wb!02Zi|g`Zd*fNT}7%3jEe<-cLCog)~05crRq&^Xf1&FU^|JnJZCSP z5}?jVV!3_prCDbLwVd+lH&~BSN?;~p84Ppk4WD%!5II6-P*@zZLf3G&!5!&VbZULzs$XM zXlbQM3D)Z5@u^EcNE`|-xUyxt)$$-*#QhNjlD(>wwhdwtWFWV|IUVF8Qgl&U*hly^ zr;tX5=m&QW#%JjL;V%THmim%|UB3;%MK=Sx%nlOtUO7d=2|2fT^{IT~aIo>uy$u#P zx}Ss(1;m!f(u-1Bl2xm5RWQBC&6B>Ap-(pdJBTtu$L*%EvTadcFEcrG5kJy^4#I01LnLcc% zo%Pz$ATL1Cnf_y>vuts$J;GkeFBmFjze^f^<;ie$hruymiUT30^L4;9KgiKej`U5G zQUB1fBgqNjHMR3=0!?>>La}nNRv^LY-J?ozRv`xL>;8tIbg$S}s)pDdzvhVA9Rs;A zaZM35WHubFKWV-&^0SO^xgJ|(dqxF=1upR!S?^)nLNmg-1@pVL;u@HTyWnXE66L#Z zEX@=cMU6XqIlybzl(~h7=;fDF{IP5~u%#L(SLv7gjVV`2IRyY4SLiosSu5~Eq^J-^ zlM(lgqNRS(TTIbX3Mr1*xFWwO&}x?_+iGF9)e67p`KD+Eg$Ot%Jr&(Po4+XggVwSR zi9M_V?V2j1)YcS1&=L3!xv;^RdLwtW-@rDL8+~rv2!>d4T!`RzOq+g4>Z)Sr?iM3p z&D=yOX9*=fSU8JSg&&Rvzjj_^QaTd>jjvB*pr-qY;QfqRG8>4wVMBq z1(U${R`Xx=!jAb6t7Wm6CavK%wlVZl* z*J!U-o^_A3TAl<$YW)&gPjjSSg4o|LWq^e7>c>2G5nJq+pJQ)Ew}OjMs!+Z(tCS|I zBYeJ4vRnIY42V4POyW~5>6c?`DZWe}OVIqZOsM8rZ6kqc@-L68!_G+vdpfaJBwTkA ze`Fu%HlMzFDk8i=HFU&IvR2npv3g@>&9L)tHia3yA7U~!{dPY&_q)k&lAM-)n(eRJ zoT@hISD7+tjosvAr1;Wq;95sIdNCCe51-Kb;9YBgWP z-%&&K+A^Lm^rHMDXB8{QrHdotqPUg*E-Z%rK>rqzZg-;7I-l(4O`*{T_}o((+ilqU zzsN1#K@e8MmE3ERf=v!G-8v5fl6dBzvxGjSzaU6@`GNWis6SaBNzN}zeUB}up2VTk ztrfq7hm3-Tci*5uzap#U9$1_a275Z=P5>*?{Hhbq5GFZm`3-7czkB?hajW@U(wvE$ zVG{{_{YQ$5C+TNIXlro;DE){Z7Kw>IP$F zpYv^4N)kjzK4bew$;xRpp9Z*QB&`+74T+rNGz!J6o{n}L5V-L}{q>RX9hTJ&etnMz zk^IZBA;4A1n%Y#Iw50sxtb$~<(Z7;c8f|)O`hE?g~9a5a#o%+4!abl<_w8s zj`5-x_ki%6A%5`M$@JM2| z!#(Ni_yfV#64NuV?k8#&a$#pF<*7KFmoos?%CfueQGM)mMk!&464tm0r6e#jNQOKN zRbbCjt3?6bpN4Yoc*OGV{GHVtS#I6OL*p^-<&Eu0jr|Xe6|NH!pe{qwDIu2vhwc-m z$Q)M4(G41(D9zi}Y5&6c*9WFu6XC{eXykKVQmnud&d8n4tcsJbSg8fhAM(|J5U3f* z0y!#zM3xvAc4z6PhatOUOtYp{5EiS3x+=rF(v|& zSJG-Cd1%%kLgnp4zHOq@d6pK^IyT%ZzeNA^f1|QWGP(Xp!c;XS1I`{+;OTQT?dXb< za=(mzxZj5zGKrY{Amb{lml?O2nBEOhR1ND*-#F!U=k8^_K_YJr$)j?G21>P}}7 zaB6lrIXR&=Ij*=r(`It8^=xQ#^3p06=c!ONW=EW=(mz8In+cwFe)$Ns%WQraTc+KX zz6_Rj8kw2XJ9!f%OO>P3xfEIJMkJtH!lopjFTkD#d%E6n5UNe}kl1%LlAl$E^u5$V zZubnqtr{1j!;%V#cAa@P3)jDj(9%q^R=$@y$#-?QV@$8<0zPzp1mfnB*|&Y3A{>cXb65bBEdE#0V6MzQlIi_zH4m1_?giQx&UJuP)}e%+&6D0|E~GXgo&v zV?L@LfIs{|1WdBN3>VE+EBd(m|a%hlZ@jq zHb_%eqI-DkiczPE;8mlFc~~v~R<)f9aQ#JUHN$NYj5Sbbgc#3|gdT=NaFOS{$zTK%B{sW8M;Ud^4uxk! z8ZSX!UxCDTs@`Y7ZfbB>6!3>?9O{jgrXK&e@0nXvhTxS(bC3MU7B{j~qwK=C^#x}&IvKHp9CDXVThQlAG znNQSA_r=_O$rtPHAtWZczic(nY3xzq)~_0pbi99fu@;>?`YNKIs}_zvFTfA z*&T1Az96<~9;w<^zD$Wxr<;TdQ~gTbN8zVHj<1j~O49EcDFasX4*qgxEOGeEXZS+G zsnogjaK6d>JHdMQD&ChK9%NF!W*Rt?^reT*vab15QkEXpu9(%*Lwd(}qzI#IJl*G^ zVx+lq9sIfRmk43JDX;;Z?K%isD<33JqWc`H`7vH}z1xV`CFu~Qd*`!J5jD{KbNyX8 znZKhHf8T1JM~kBhczs5UWwo%EZseb}y7{7?!#`2@qv6!_4eH41`vOX`+efmPvsOMr zR*#A|HcfFGT2ZWUnTU8m=bWjp*d5+SkavCiSCo) zcOOl&@{iI_QH8M|jT&meU#gxA6Zq1;I1)jp&DE!g?(3~)eNA*XJR{^;&BOKW02N4n zEi{4Pc0_nxPB@QpP zS~C37;dSRhXpqjZR9Sjh;>v2-#+PKI>5f4(cOxl`c{9KAl$NO9S?O}FYGDSN3|k!C z1&tM(F1UxJ`gV^teeO%&DbTSU1k!Knja676{fgeC-ld<{n^fNPdc6sf^lH5cL+MBL zhQ<*{|3YsA_4a_?%oRc_IxIqTIx|qS(r=?z z9o-QPKyRp|w^G`BKRTNL-(6F%`-X7(x1XO&ASSW9)fa*r`|7-Oqw*qFD?PC~{QJ4; zi*xPX-0^1ip3ooig>;J^*azu=d!Ly`iYMdZ$4G3WIIqL~nS(Fs$#1&+iT(aX>cAm! zPI7A5(njN%f!mfQO?Ef2^c}|dFv9MN#f|(-j12@`Rl3WGP={o^4sr;A)ieU`HUmJH zqxc8=4ShJlp^^JD4u>kU>I=X-y_RZe&wC7!r+(Rm}& zBSz~0<}C(`fxXmfzLQT0OmodKUZ|>ct-84GPE~HkN=!Nxl>yZSDAtwk29ULU6*<@# zo=>CN5SaQIpqwgD_>?@Q?eG1P^U8t;l0&J~xo5NN@uw_(2N#UM;El;a_R#()$!9Hq%4wj|MA5-R}i(2btJ=uYL> zAK;trADbqIb9fvWp)ixAxs|)r8ATsZ0Cid*iw=}N=d1vz>2y`k(&DuxlymNZ5cIz? zd3`ul_W`?W3&(L?`y^zSkHjTJwQ`5`r^bkxz8E9UY=G%g%Yt=m)h}XSxO8|Ys|Il> z+r|K->)pk=a`-S_pH7clrL}v{PQ5#nv!hrO0^{0wl;wBp4G0id{aWRz1e=lKnO4*k z>M{c)J(QkHZOLJh8O&L3Tm=Z{*_(Ui%_LXe01$V%LWB~lS-v6OI^YLtztg#H54Fx= z^Iti>8mqHbrubke_6KD)(|z-Qn>0q;N|lm`W(@y=)}hNjXSgJ%Z!_mZltqABU;J^2 zf#EDk&B}XkXWxv~NCAjhXhg|IMsGS!CxyKw9%sCn)G#iI4VN9?1a)!Vpb|GIuh}0+ zY?@?r`>g%SgRZuJPTk*D-O@j28hh9S4`#Xf+hFSCzuWfN;BYxUPkTPGEt%bCRD^D+aIrx9g0%2~r> z;{Rg*_QdEGtN8&#?{NGb>)DBsk&}w6<2$V+0lm zs=vPtppCvo$Oa7uO_Jx*n5I^KhaCqmPEi?5n0aCg#}krMu!gc%_4QkW`?QQ=S#zT> znYt`UpLRLTAV0m0Kfri`K(bn{1u@oYdeUBVV%UJyI`IT^@Q9k^LI7HAcjjVf+3+c z$@cfx zkaDaTT)QhH235|0;$;Y}GHq#&FLUP5DjlBT@@UnIwN;g@=KEU%SspFf9pY|5KP-cOq1CzPy7< zYqWR_CH8)7wsyp8q2l-==R{au)=G$Vwg^{@1(o-+`Vg*28xOL8OO(Lg5UxNQjh)Ub zZx{ld3!P}e?1eO(Z1zE{m96yI-3w_p3KoMW4stjdd@=ekib}TKWJ7V)|J8QicB{1E z(dAsV+q8SGWCr_R3rdWtPD4-8kWV9{zjQgn$?GSrl5o_02WA>Z_~`c{erKL>?Hige zm%jH`dXW4{aTgEq6paLuPZS$l8T4K=5g0ne)0Ldq9mhxU=lK_s%5z;EnHh}D#q0H@ zU&om6STBp^W%>4HWF7B%%+w{Divu*^^XN2InfBNTq;^xPV_YGBc^CoOF-~eoz<#25 z6OYsr#ZCIvT>KOd3J6ZHrDY1L@&s?-kfPHe|58>-+hbUcVdzv1#&Fpn!{cK8xx<(+ z7m@jKRd{76`Dn2uFBM6zoWZNAn4F@1e&1w%PcDwZ9d$sVLL|?EB{a(B=rhl`Cfj!= zw2uk*OWs_FFAPmxr1mQG=R)O?JdsyS8OoiBcSKrc*iD<>K4wsmxvZMBK5Cg1LDH&C zSvFCp2 za}$4M^tPhp{0RC*r*joF5Hp^8Ikk=}GYp7tbqC~=cmr5pV44`~&V^Ufifd=`zH3uU zoih2DJ&SlRnLwIj*O8aHw_WzBGU{Bm4AYp(sBPyeugvKzmsR$|+3xd}23e6W!GK>( zwt#c`N`~h0CSHAy(4*vEJH)xPitfC#pS_byPA|>lsKL?qxta4O zf=W&B>_aXAGwWxJi28hcOddDHcT}4m&rH+|3>pl3g!A-i_k1Pjpa39rj4`=cHI{k% z5p$*PXOXKWJ)Ap1nwgoHJut`x=3VjEFlV3>BxnzdEy~=W+$l76KB(iukX8a1M#II$?9z8Z!>OG>+ff%qgph(6^|+M-J0+{ z^D3T3#cT*BQ8V3r#N5X$J=$v)1v_fyxG5!WN*-Bf=+*w8CjI?$ zv;O|^-~9C%bJM+OKP;X27e@XSA&|_;z=(2k+!l<`w~}gwWg}7$@1?7fqXSL@oo`Q= zrLdh?L*~@Iv*=4l;y&K>Uq|96?n_|l#=FdyeDLmm(MsNZE6%>n$-c$BxAsIiZ-d$s z=PRKjF*TcGa`vq%`&N;CtIWP>N#VAmMTYxUmwl6+z)h3*b>F6E-{i1jD4alb^}fPp z-rG&QZJ|g zJFcpIbU0kTJ+Zfc>*&GBan<%{jCFZ-W3|yACQuw7ikiI0OndY(#^tADwBcBO&rR0M z?HKK{@#tAX75ho^?9s7g{nTX5P4;d1_U&aIqup_F<@AoxW;8GbjGomo+6;$|(Pk{P zkB03>m#BvJ(eV4|8G5xx&qupuT;*a{7-2v-7At*MhGzYp$R0xbO;$IgucWkho_;duom5;LeLguaFIJVj zCa-*b^n=(ySHdLPB641pX~kRJeCZx@F!R3kWFRgIVl=zHA;qAOG@n11G4g4)02iV3 zfby-W+k(-9^GcG$3LE}B?#HRBW3hj=wY@cXfg0(vDl;Fk}8d^!gpyy+uH+(0TkS3 zt)6_k#Vs_?14RC?=xYn!M*q#nYTiD6V9;1CX0Dn>T_!NNC)QngYL2LLG%q=^h_!CT zowv|%1x}o!7*x2b9su7;X?v?5C?X)8=VNPp%K0Fb-&ux9fbvnw<0jj9PO3ttoq+v3 zKvZOo@!G>0hJRE?s7&7y?V;#l_S31loST(Xb9)*`k|CA9CfU!#?b7l2FLD+mIlCY^ zA@7WX$vO822+A=lj|96G@9iz|w`da!V)W3G&1(8iT@{%Hec@O1>;DP%3)+-rdx3oB zW?uIs20u-wQhaqM-Yk9WmyJe*pf1rKx>#$f7B7YNmNsWV`3s!0kG?$bOZF$J(tg9+ z2_Ptiscr9owtfAAM0lyakm!5m8||*)FGbrHyd!&5a&%GhO5u|5J;5_NQx(gS=e6vQ z%|Y&$+Mn2aV5OqW5O4m!C67;EV-tK(v@8C8YOL}0@Q2Q=Y>*;cc7bvZLXG7>+0|8v zuKtOG{hK#fElr@jb?g91ImfUA^2%Cow9gvQ5xlJrFIsG7?CE3vD}U2*C}1#Z!#qAY%t{7IUmD+lBUdiR!{& zPUFU&7FGwgIa^8F&Pv5`ts;k%i@#Qlv6q-xvaxIZk-?lr4Z{6k)7pk*u-+Nw?VIC};!oeO~I|WG-H)BlliilE2>tKO>_)izB(_E zAx)-gC8TLum0`nzw}rxBz3^Yu{X~0bjz!xq*2zh64eByOYClV#cGuW z7!c~pKN^0dTpD-2{XRp!&^}`Q>Vowkn* zZ##7dAZijXri2OahZOMUBULL;6FI{a$Mz68&3?qKdh*lK@pPW_0XLykK+~@R7Lq2| zfF~%aly5rR3Rr} z;HLt%R1nqCJxex{vk#0ua7U-R{Oe8C?mshM06XZD?O&P0I{=y)& z5O0buUdwflk1A~#xTHSXweX54bu{K-LT47(Vu;W%5EKD zWn79)c^caS&r+MA_ZC32Fi`|+HZHRI)tV~Syu_pV{woBE+k}Ye^BI8PN<^D|ePvr*%MQ&sFVK2F1uAcYV>yOx5}X{B-v zU6zTuhWX{-u8&{0R_A}UH9xFmupfPXp<{CrU@}AGd!S|MCN=7V(icBQ`-F&}DPR8c zdv~kLlO~|10eLd$4}ImyA(vIdlGChHW(0)~{dF5X0rLjMWCj}E4c{9AYJLi~3suhKqYHV{p1se= zm+mD$&8#u@c8&j+t%T-;obmrHdeC?L*Sme{JN_>w5$b6Ccg(*Ti2t7`m8%l8MnkKgAG?(}*xGv>QLXUxa>oI75K$28sJf85Fp|Ic+9PPXVi zbII|)>r3knXPDTJ?!lf_>YT`-Ql3!bli6)?zC=kwQ&Nhpl_l=#~$GL$%Lh7g?o+h24z-VuydkpF5^HwUMGKh7kOhicQ_w4jrzwZiu$QY?+ zfEt%l=k{NFgG8Q(CFmLjJqd<^h6u;`89FZxel_-OsxZxH*0_7A38r63j;i2BhSBo? zR;(PTXXN5sGdcR}npf=lnMao#Gja~zS<7#8c_1{_orIh(6a07SCgImieBvjdb@z5W z(NRoAMwFoN2biqf>^Z#b&o3`PIN??}1`?-#lYi;VPmiLfC(kzE&H8`Jvr&(Nn@`EJ z@c{B!@@ydiu|8X#js4Z<$}{giwTPWx>|8_zsR=(z96Hrn(GQu?Q=FPXe_Gy1j;fwt z8?f%%Xsv!DaY@i>{uex=?i#@YZsrJ28&Fa@z`6t9$cHxpAUy{>MHqe-1p9 zr2lUIJ3lY~8NKz(Ioa6>G3oDRpO>Gp>f^Ub^*`d~KfOJ^|R^yPB48MA9D&N z_J&ob`~}SX;`y6#A53A>9l`72Y?%TAv4yF5!RUecSY56SHXS)DHoobOe&@!{h#rYu zVIMT#=KT%f#EKLHQ=%*A>ldjp{iB-~bViRX!6oPG{iClp4nt8pnE8vp?3+he@vry8 zdOC*XHtNj(W^17e;;Um!qgp@+q;CgEv)(UCx+_kzk`;JHk|Lzu{BMaDX)oSDGs9Ur z$|ikrN2*EdaK1S|n^H_2&iQxon}B58EV7}ax^N5C0!o2>M~EG0wIA%V$7pZ3&^|xd zZI97D6QG4P`A7gfzK!jQ7jdUfZ0fy`9sed@-}}Y$+(j*55t2_Br4NnBd1@Z5YFp9l zibzMID(52BA}s_VY#eEp{NyV}$FkeX)(_qglcE^jBC#xU0411HoaXz?Is+ z9Nly0X3&s5f^pK%K1W_cZ}~&ue`R#m>+WETak6crQ?IvP&!`f&O5Gw$k&g7<7oZ3h&r5yUqbWx^!+a7&n3$^ z{E>+mezcw$ihN8Q8NBcdsY2V1SkGLl>u)v$Q-%uF6taYlw!E{YyF`X(5$3FJ>k-Lnf*lY;4PUyj^ z#&@4l-SrOf+B)i4QM?yP_OqTTBm95jlfet3sT%z1tOY|&xN|q!8UTnb{whMz+k3w+ z&fxeYD9X7{#@_1S6@yZpdCJqrRsTz-enm7r#(E~)F;MK6x@K?Fk!u%T%>2+({L|V6 z9Ctu|bqo}5nw#28d2f!&%7+fcBXBkC%sYs2yl5ez0Q(X(2(ZKVFtMwWjKEqmKyPc0 zF0V0@`6b^wbW}I6Mi6E0HNRCqexS?U`O1ZdGmZ1<72mCAs=;dMZq9z9Kcnxo*4G=fn^s)1JXCQ@8X z<*O9*_vH2KID~2pqhD4#YnZsqDy=$kWDpT_5LvN_c=XBQ;H7pTAcU>hXoHa;~mmB!|=Xa{fd)a^ra`=PRGex!TJKbjJMDiyzniGzqnK zhKdR>v631=ZaKRj{sfGlWH2tVGpD$M&sF9#K3ITlHSZ;_PB@^nm&#uT`BYK9-P{%C z#ybGDXyRr4C$o-k15KrgbSSt(@r-5yeu?_t=oe)30}Wo196_E_Yz-{A1Vb>Tqn-1g z5v>2o>850?#P*9TU9nAj*;W?*NV!j1)Qdj#?3c>vwjN(*cbYYc7o#fdv@@6CqSdR$ zYw4KT4cc6MH8A6>a#7V6Wx)Mg<{DU}6f~3xm1cT0^HA7X$u|Kb{PFB-MKXB`SoD@T zXa7>;F)mh^uARvZcKF+|SC3^0kHzvW(N7p~Vl#Q?8Jxl_0bfWCDQbVTX!& zR5_=^S>UD;)2&i>e!MNXHM(VCIM_K7a2J@VaH5AP4{+!96qurn0RKkLx8M$u=?KCm zH9na5j}}(Mg}ob?dWs*5k7LG&> zz3VM4PxA}xe68IIogwqx5dLP_DQCIV^btY6gq#`*r^fdKefgP{z5GpmS|nD}m=Pq@ zWqOWXtjpQs7;IFe@(S$DsnGGlfwf{MFa>wPtuh>&fD0OzYGcoBE_ZqD*e|5dpf{#I zm%wT**eRqte#Swk z@PC3XB@JZ40gF{;%v??Jav`Qb^)O6o89P-RyrNNlc{G~jyoEagtXyrTg4*DQ;Oi3h z>p^qvlG4l+uUmCN`@UjP5Wl`A9_YK`|j z^GEPW(SpPgypV#{ioGBlRi*HDra#}_3xKX;C3K;jaHkHQ^%IZ;k8gC|;4CCiPl#@f z4f8SxxdT)QhBReR^gxAp zsHGhaPjgg8qW81taX*$MLj}V>*0O4ZYc9G6P-&(>X!#uenSgAn)<-&HC0>J5A!aTY z=}wL8v^{QBmU@}T$Y|KYqxLzl2J5|QI%BpG&}o(oOXclW&#lL{?%4NHTTzTV;FuA& z4Q{hqWapv3+Q~EKwk(#kS~8ew{fEI+RTdj-(6G`0=tR7czKuWT(xrq7s|j$}JxEY2 z`KG@kxIK4I@a-LY=`9ga>7WfpHnLVHk%9)Hg1_4AxX7OSOy0_?d=Q7(mF9jsDd*dreA_v_xD?S} z%5$n&IOH_;NKRwdsWF%-y-SF4(ISBUnv*B0Jl;4=ucUHtCAS~?G7}z2Uo1i4%QLN= zQ`ZC&?-lF%zq4XjR85PIXu3UkeJpO)W6`0pNd)0fO$^40?H8IxUKih=*i@XV!C%R2 zd+;W`{SQjT{;)SAo&}RKT2H3*Ce)B!sv0cckH0Im!e63NsIg z9;s{kWs>wLRPAPxDnO=_l!^DuACK}k#h#+W5D|h5Ul2|>FgGrQ69oc+)?`awfliye7}T!%TfE2koVsQ!ua z+@SPSZ$6J+^%xkq`K{^5d9jM7BhzBTWGp)-+UZ)5r%~P4gVWMeaH@Cb-)V_-FumeE ze!BXKJLhc7_W$ZBYl@hP>YW?cc;@voeyS@{cUi(1Cz0jfa`kjA%d_3=z(D2Pb)UP5 zVmi+6IWrIllB~Qxj-t%!C40Yo^^Zr(fa-)7&^cWPkFGQatJu;_0>PgRb;XX_*aTjk zrjQkj-%iOWrp~N}((1;$f)iyo38MSLwR>Wq((k4t2VKxlzv&Jq@ts+S@MW z7q{@XhfXYO5A|R4X4~$3-D^|i>{3My#TQ#oa`Y;dH}Z+RnKV$fb53#98>}99UYulI zlIR|ss=Jz=6fNnWsw;c*EfOcS9*+e{fKsA}f0Mi}QE{2ITw99d($c8ZXx9Z?Q0E-{ zHj0h-t$@l1(imtB!hgF5ICLKezc-(A0pnhYT)_S>s0uu&S|^X}$-&&h|K^TtxyZ03 zsclKXDH72>fM~%zLZn?)?A!p~@wFtV;Hbf>(eW!*we+MaMm7%3@*h{WY4yX9dHY*z z#?&x6;u%g#dIvpL(PLvxdYg*HJ9$)TVy#kL>E5E#> z^7+JH)cK^2%rm~e)ZYKxoqM14NNeJ7i^N(Q8JpKS7(hfX)iZq(qxUHJhW)hx=GFZ# zgh0adN~|1yt3#u&Gdh>m= z^al>`p!(c2|Jx`(!W=P;IASRYJ)& z1=d|A+RQUG!PNYq{Q+V#FEawLt!Mh{vKI9h5B`hqfOg-x$@pH%+pR0nJ-}KKq)OPs z-r(8yR;&U9&RB8_LtT)%UA9FLsBUaiR2j5kX+zMAh^-BEaUd z6-1v2Y;GhJZ^J)mXCgj}=~669Uq&n63?Nay_S(WRfz-7CdqQf=vsGWQR=f$LxOY|V zrC#w@)8X^%UGc{_4jlBs{H@6}reEsPetuH1fpbj%#D@OqtEClZ?Qy-JhA$MT-h%8T zKuvFk-Fm-=YV{rP9%T{jsg9Fagb-wO3_);+ zxd6aQT>s5r0N$#Ioz~l`yD;*gT0+a{aMeQWdEy6Sg@`!6ryy>Hpv-D6q_U)xOD1g) zZx&QnYZ2bwTWJW`deq{@*D^%9C^##f5Q8#bdgI4y@lIAZtW^m3Bc!fuMi$E?&@!8! zDa71obnTcMs8d_OW}F}o%dEtA8PIS)er*Z?#!z7u`bDcbO?52rBK8ZJZzWGMJ9Q_p z6E`NYmz}cpa-F-|u-rJGwyOsUkJj=B-R5Qc3*G0DWgc2TAXSK`dCpM(u7?`DGO1RbRC3+YsJnwdmfDs$;BX&9?YQvR9ahl2^{Us=G)?7M^Ytf~^*9 z$ooCBmVG3Y9Zi4K8|6qVAke4rISRw4$Ld<}NZ&6|1AmgX4{lZkw~{<7{REn}(JzxO zJx~PXfMBS3NIHKlSi^7M?pk*b{dZ1sR|^s9$Tx#a?54W$a!~zOdG%+0_8Aq1sSr6G zS!a9!x|}V4H@(z6ChzQ!WVkAcc$K(A=m}$gq5svUob!E^>dQU9cP(`VUNTcWmJICI zAG@7RYw3XUn9k5!Pe1Z&K#vpwp7Mx$;qAU;G)f!BZfnIqAdZ)vtnNzLLy_#uDUSz^ zarNg}nETlzlix_ijn?v==>2{U2b%HqLoEe-@qU53w)L5Hy8ppS9HW747QTq_T;24do5j)S*17T;`8Su3!}>#uKRFhlLTZ zo8Mhz1gg5WDW`qS1vd2B+GIvzUz(gYRmxw|O*{&3vFn^ikqD{p(SatuMTXPZ;I^1Z z5h+u{E?bH9bX%`D*g52-@u$ z;Is2|*NW@U8zJsM^q|$e3SlQfbC%USlst_MRfH1R1WK!h$CogF=BIAu?qzNH#EKFP zJMw$D;pH4(A4)WAEbNJ$hWg3(`1@j~R~EAzbQfvop}D6jHrm}dCLbO#j4Eav6^ zE@3HqT%sltWYJ@o+e!(2U@zic z=R)AoxVAf6IW>CNS;L5t^pvT+X?A`vSAH19^qW@mufUIW_YG>UZflctiz~@(J+n16 z=4D}us2CITiM4Upu@e1bwhA$3!6}Y(k#ju0XvsMn3yGdM{BZPD%S5P$Hs(k`vUZ~p zw0YBANv?^7`{|lj@JzJ#OIK@DgD=&)z8B$7W1~)=%r~Dtsd4={6BXTRC3ezd?!5cz zxPGk&+W2T|^{xH6L&RvTOlpPh`cFrDUY=h>Mmtl^CiSYroiu>TzL1mc?F}Z)A$gC28m11j>kxl$N4{&_wa+ zNnNh!G%RzR$9KDQtr4YG57N?y7%e~YQV%fVkq9Mxgr!>E0Zxb!f#s~kp8&Faz5O4S zFZnozX?PyQ#QC!>RTw)K%%IDToE@6?H@h4CJU>Z6yFK_x;-C5e^DDB_H)ud?HJIMW z_x+RjyR;`}Q(NO`lQ}RG(xI15@+1(xZ0)A-i59-~sLQr1Qxjeoa2Q0}BAo(>+#8e=?@` z@*&Ew?zWn{sEqQzR{3r>(A{Sv=5;o7dJ%Jk`h>yvdWXSkGNdi)p*l8j%xuXo^c(B} z+!wa=J%*KL2Q9YDE+an!EI|?164PO)m|2*YBEFl+0cJAa^)1Xd8VsupPqPc@-UQ58 zS1yoV=KO+X4JM%0FO!Yu%I{MJge)t60|(^9jsSO3eG$=S%wba)CwM-RGiM=X=wYpV zkyOeFtWv}*j}q9cqUAZOC7@5!u`pmiXu9}%#;Dy9KPIt1D8GL4sQTcCfH+}`0Gnfs z*0rP-QA;HrvWiJrl{pz(aFu;XQ_J_)SGHLRdH32o=z697zP*bj&!m9!OXeAP{S_oK zMmekbztpzQb>XW_Eycq>pyN~l219L!jgi=S_9`=f74wBVwIPvbF>`*+2UTDGT={nA zIhN>d=M(F(Dq`a@&b}{Li9IfYOLz#;W>GCvc>QnI31#(>Z|M30#mBF4|lq{2TEP-4VyUMZ76$>)I)iZ%}@q2AVrPd40Dx1WYi9!N-3Wil9ayj zGAWmQtOO)Ak#!zG{Sim-DYvqBaFB1hVzt{v2|$Q!1!C>Rr%v^zKGXbGUY z=2&;#MmcNc4E~b62*C9$*0cN#7r(eIq)-{{eGJ=%fb$;8YRh`fhq|9P%8Y&vPwKA3 z5xgjvU^EAk4aG58P?}kmvs@l%wP=5gie2QvRPRnS<8>C|V4rg;#$rBVFfo~YJQ{JR z9*YY<#FnKBU|YkL@hdbct(J4WieWgDehc14pjYbyWQ0TUu(Oug%10oCJB$u#e_(%T zFc;T6UlFCx)?LR_hqdy@Ktb9Z3ab_>$SHdO6)WfGm#K=pMUr8H)Ta$Px=l+F8fK>z z#xb@$!^32s6Ll6mOx9LlAIY9G4=XVl{$u^4*`2LcC9S@!M_bmsYJJ5KMt8o0e*m}0 zTJ}v1vac&yP(euC!}r|uRw0qOiyk?T@~&?W zNIZZH5#u-Cq0-+{$hGg>l+z$yMnd_(%c)@lXQV}eN%UD!xtf{4q%BmlrmnJI%~YEC z`zSm-3i|O2^m=aJ<>BHuaDds4iRGsG4XN1afu@Vkif<$(HR*Iv70epxman9Oro(5& zihwG7mdjG1Ij(R+5t`uaLn0&eCmc!tc>_|~G#`0&~4$x&IrjVk(nZ#JRJ z+|Fn0zmr7bBz6y;A+N9sY@^@lt7(~UGmr+QK^BWhoEhnvC}Id54kWC&pI3TQb0eumc?(N?eR5)`y{0H&RLVND zNQe!H)`a7ypt3~gN9ONIY>Jrs5dHIxELZ!JHqBjFa18oKf1~lNJ=8l-T(omQ7yA~# z(C7Z?%caG+ZqbZtLoRj1dH3ttbgyHfYKl9JnnB$B;tqAm;Biyq@3*!ER-dzHU4vUwcX`rpp3m=2m6b?|7S4#u;1vtXX}3_dvv3slPea zepxWkIb<&&?Huqo{mt&RE&Fc}yK{g;qPust{1-}SC?0A(SzA2R-DWCe)2nb#Lve)X zP`EUL%3Ath`PN)ecD$XswC6!}?vQQ3aeYF4`APqhCmUqAJtU^5!1v)^<@djQ`{$!- zcW34pzrNj_EGZhGd6xg}*XtAO2ib?@B3(Dw!2pe(kvY-l_v;IZzd5|^odLl&b>1Ge z&_2D$xe8K-{5PfRQ+I41t` zM>XN<*mKGL(eaV^h7pYsJbv4H2Bd1gik)XcS@PCAyMt>}laoe;Tb_&GlIVzJ@_l@# zu81TWhI9wwQ|y;f(xO}E?dO)YLE5PeD6YYde?+^j)M0)lZ;jZB`jUzbA*S#ULLJhT z*m0R#7%Xi?$(x;){qb*L<%u3{*q`t&fMxx=KG;!X26;zKSP|^){zL^z=2sF5H95I5 zWD^!_a%I@AXUnoOkDCE0>f=%8LFft$aiJK($ZuU*NDcXR4Od+d{VQy)BFtkL={~{` zv95s2TxKmI1*SG zioQSZQUt^xbGBv2JE@61XNWEOU&h5@(CZqF$Ee2R&cy8nC&mvXZ_7_!6DfbKeBE)6?AZ&hB9E^{DG75`}w?`@mS1y-ecnuIy;;>E+LNKSMoi~h088W-be6+1g|=*0MSNyBb1g;$T! zgS8w?Y%1ZX3HxjQ{qkitEF%v+^CgQPq`iqdAP!;1GeT`vr5XIirp{fC?q71NV?Jql z&h$9`j!7}_8(OAi3pe%|_xwGfOyIBy$p+L>;?8MXN7W-fokNJBQIe5_D!M9QN0L{C z2nmzCDonILu4A_A6o$ko@2OQ8jSVi4)4A^O<}O$m zN}75^74RJ;U0WVz5YowzI`v10Xv!_zvb3RCNAN5^_K>yW0|29Jl`gB6p@On9N_(TV zgvE=(`NCRgk`<|0J+=ckx9m?f1S7W($<)fi^v@z}c(G`5d^aNCfT;yE^MzXY=)8lN zNnRa+JXhz7JXaTpJXaS|3JS$L;PSGT?SwuM1A}GYp94xXqX5nQ^Jk^oxYC{ ztI|ij-&y}OY%A8{+&O%#EV+gRB(_Hg7u;D{6V(>){6(9dF0m2o+%@1f5D~r-!m#aDIF@fm^;BOziA|hC=$r`CY-|f`t4?x$R<95ANrVvNhJ~E8H1}mW*X& z$2%0w1ZnWiws!{*PRykbNr?kQKI*ZWJB5Prkzf}A*FgT?5%Oh;^$|=8&Ok0<2vSjI zYa&yWoLFGrkdM8$`RDX8x@%r0{SkxP<1fBowEH^=9D|Z5L;;zS54!Df1s{z??>gOF zjCKlN-Mi5&nw4O5_Y3W=rJF>p9C;}v!VD3{mN>w9fIB-R_8upnhAS*lp`ak-EAeEh z*rPZ-LQnv9>hg$F{{ix+D}H?XFOWp*NvU={jhXF#aNSj>llp+15QESX0P01I-W`*8rY=KZ~E; zV*|S#`SK-o*AC0*t;$BP?(?*y7q*+#wUT|&+1ek)>K#?FAQ0U=kDah|n!@GJ8K3Or z6a^L;qCOlPzDv+^Q_e2?O}{5;7W6%K8a(8CLqLS(OeY&g=lu&9n2B(|_4x!bUl?rf zA2U;v;n7$Ptmv-!%rP)`0Qu{QXiHD*xZsiKjs+6in%nY&>l1Aud&9PU(bpF4@y8qA zP)!O)@ZI!F3Ypt`iWnb@gj*+8uI@>0t+ zeIYiJbNYu-<1a2>?~i}`;P4Gx{eg=OV5jm2Zrhjop2_?c>xpBTD7iybq}}ReT=+(2 zUh=#7sq2H(b6n=8r8M4i$-+hUo544vCuDgayV)v4k{O%vomu!?Z?oWn5vkG(a`JB5 zFYBXoy-G-g#ZIvgcv%;|N{}C^uV|0lPm#$yWxtjlORGlTe}>T*Af}w}zpb4cbe){4 zox!S9bAJ47>Pe03F;#g{tYr(3!?gU2C7&s1)Bv8wz~xM=MefJ=X3Q0RzkQi+2DD!N z)5X6+$yEymL6=)4a#CuZvw5~_)H2p}qxPAz5YB%tG$zWG1r!tr-goCiOpu0M-TnN+ zD5K-f6BCrwZg*PG7f`Whsns-Wt^9$y@gYoB$Y^w3&+t3;ai$Kwf>*s- z7bMUm@p_>AaCz6@4e{;v0j24i2as??OKw=OpHNPKxz5_IeoJQ~-nj#9y5=@>8F=*Z zVnj~EFQ~o1lvtq)Ff!loJKnCky1a)wCqB|TL5ENPb?^nQ;n9Nw4+&DKw9x6fr1wj1 zt6!mn?R>l&ofFX74h>_6fH|$P(!gu_mXlopwX*&D_h|ZOj1HLX50^V1ZwDs|52FYN zl1n(o{pDTED0rDmIJ^rJM_)v(mwk zT5+zb5Q*a^W{;nCn|kR2<=n6L7;+C|lKP^uMS!KUc0J!Pa|4w|R@%Ov-~M>yeEsX* z5Gzt4GXRj1`BbPmaj82X{7-E7J8NOL#DRWB>Qeo0`KckTrXJF}L5k54DCG}Gf25fP zoYfk%u6RGh$Uu+!tOwowZ>)#W=aCqN zkiE!C?3Vfi35|ogYZsUHSEcRnd_#KJ#AzGJkU$gstX!pDt`g_R{hbzR`NNXqQr6UG$?BFJlP7_ zgG3N?JLdzEyE$z#kAQ#MoIz3C!#b23^HdacTFcHPpRxHe|5Cn)z1G5Q`;5N&ET066 z=^WkNb1ndW+e`FO^gM}_E2aGsWj1`4!$-fZJc=sPXTZ@n;URaYvD=x#@#OTARBSpy zx*R1;FXn(yn5u{mMI-0}Ln7jKBM}8tPTp67e$09fqaJr*Fknt_)S0+Bxv-xp*eBD( zr{pQ|lkL}}BNWnUV;i_yRPP=TyV;jZQ{XH>9{X{JdS_P7@%YDPt!cGLvr7CU6su)r zq83+ra&svX#&(c7A9upe+%Etkkin;uCv0qtp3r-6h9nVTcp$*4k6)#L(Us=mEa4~j z<(I`?14T5T1`Q<&i4SHPi2ZEl)BOVJ>s>bUU`lvJ_Djy^!1Ur*TroY1-083IXG;Cr zLG;Jn$S{`7BHWl>qY1TSXiH10Zv?i(frdqPd*hvY8EUOuMlp5mKAOtS`y=*(^czWK zrjx_;i>UI(Dux@s$?Jbxc|+g4x3XgD2$@Ya`+Wlwz+5ANvxz$qbPNyA;ROdxq#<{` zxAYT0U9wNpK%X$Ny^|Lm-^j>sV*QJjMUCxi-xwWQ)x_$jFenru%8p;}rjlQo#lQX z8Oc&I|5xc@yjm;eQAG9Or#!~+aO*6cXsUK0y9*l?dAAEb>_i6IyX6gFrJ|H)28?BO zch8)c<;GUSQC72*N54OkZ^;ItORw)qZ0{K%EtZwJLdlY&6bx0M(imPkW4L^4Di{ zl;mkj?&Qy^Y`oY4uN>79m-UmS+v(gA$XR9G^&fbsF)Eb)!b7RQj5rVP26G8-RzIU@ z@lTPpVu0Fsfg;D5j zV*_y)H(R9`vfp4d-!0|425-RQOT;@8uTkQ3=wrkWz_rJIY`m4cc1yf*N2ukoD#J_7Oif zmP^XwYG~T_Yr`Pme1!J+DLw!TL#bNLCS^6CKHha(1fllrUFBWnhtc&PO3Qsai~q)N zicYWO%0#aV%O<#WrMXA9H~;6M;U*wb%jv_SAkA9KyF}2lDU8G1@~8QcxsUz2LxBaU z^n?6z<>BYiH-sMH;{hZ%f5Rb3i$d_RokL9a>(2JGNa1qF=BGiPY?3W|c~Kc7%qUYm z9nxs&W5{o%^j+8xR%|Rk!|biYx1735PJ7$QxYaIJHjS#l5g*G z^SlSaoK<)sc#EE_J$=bB$TpCl58iVr>*M56%A`-=qt`$D_a?EH!GG`T4S~Q~%^qf? znUjq(_@YZ5odwu}Fg5A7524K>>Ix97m~QTUuO~FQ6RTN|7!Oz~?=$9uXO&<~ z-rC8FTmYQqFAm-u`wHcqyD77DlknL)PeR}bQ%`}lYynu$EffC>Y7+?xNFM^AP_fq) z=Slq1Gru$N_WH*(x#;cVA9Eg)J`Ib|(uzbI9s#GFg@c!_-%78hxO2TmQ6GO4?0+~k z`sw^}9w~@#Nw_A$ zRX)7*tHebq_GjItXl&#IXnfj6#$T~P(2l*~nt>$2<^Fzz?i16lNjS-xNH@6dwWR5e zBveN1?BtbDdznLzPb zy2r+bCA!DQuBDY^sO6?*oSgPIs=e{X2J75{HDlG}N3l+NRU~At2bs{zx%eSOqlc$I zyk&Zsc-u-G4#iGkn>_Oy>@g=M=V1noZ_fPK79&vbHf zTv2iuds$jlU`;Pb-Vm~LTxN;v!d@GZ_PaW-u)Y_m5qg(&(vjA^s{J9^=*mFl?HCq2vEvNx6UO~O^5lf_^-Qq$uQw?(SD8gXW^eWmNALbd zDOb=kS#2cvDOae=aZg&*hu7|8WU@GUc0@36)Omc?gN6}U9@nx@Q{em$6w!8W!O}xL z;t=ejvG1_ozL>xmi9;p&z2F?YA|!Je!FN5#sMUU89S44BVh+UNBKkOw&4B@GyH?2mto|AKv4ZUi(ZH4>SU9jBjN^h+hNV;~f1a5BnAkts% zldh?*75CC^$5>`q(sAHJ1CkrKmhh1=T#%|FN`sjI&Bmf+w|>*}JT_F-=_92e`w-64 zT*Ny+ADn)NMg+d?m`*v@@|&tkJVyk}TJc3yE+#lYeWu>FcSG5#F<}xTlbRo<=JM@w zMkuvsN350qOT()=Y9pqEHltsQzmE`>$*6#sg-@9C&0K>ebP5+#O0a*&(a~XpjjH^G z6+Oi*-6EGSPdrFfr}H=&g?uKEQg%|!*6u)i3ioUWrQ60XNY<2Q9`Z`41wJ^7{o0j< zQieJMVtMyRdv56X4Q$8Au6Bo|kwDirNXu_m0Y80HKjf*)s*)H*(- z68+~_JOAr{#wVb#b=-jX6WO{9@b~Z?FiVKm=yAz4sH&-u)(=vV`f>!@-FO`S>~I$?RrcZ{(Q?krRX#QI3^my!tyq$r zU8SDEY;EuM3x4Q)jkfKvW&{Z&KDz_$eU^NJiR%wE1O#XQ`BnBT%)t zuT^I@BNtNsLB%0&OHbpOz4pjtO?9fY%d`)!Um{QR6B>{I!=EI5mxI?K1I57ABV-~t z?&|6g-h1-e8y8Nm<*T8mX;GX)#%eMWv!H}3w07A&H2r6;^^i_b!VFYw z`U^BV-Cu0vh4VO8YEIb{)LSh#QNHiTd%cewUb;pfRq8HP`~&_t-=Zrf>8DCEEFyfG zq=&OfKl77*lTEtIPkKU0MhxBVCvm>mOPc8=2_zG7*$DxTsB+<=DS^PTh!d+tZboXb zH`5-LojV8on`%IF!7jyUx?^$t_P!lkMz>KZ z3pt#{+jyc*Z%|X^&pD?7T4Ga$JK--t4(T9SX*$7-rTMReACmweJx@~@g4LkpZBm@_ zGfjv9H|1MO8J3%JyHbYaro5n(BVP;#vf7W%1BfHIm9!F7Ac1B0W<1f~f)(xrZrr(o z#0Gz7ebbSq__vI!LHQe*6OkI+idkmAnE3m8dtcMxruf&|-WkYQf?&_!7e4N&reyq$ zRNm^uKbGwH$KXA3J&ptxo|X8d|B|ASRe$};qCW@6P)(C`94H^pw6;Nt5#Y!z7>;fW> z#N7zfVIj5nYJH*B&(=O{t3VYoFO%S-gohd)QN-7bix^Q!044w5xihobMD*W}*6hrk zd(SA5q`+-@S?q&_kes#69hjWoKmp!1x|5t#b<*YH3#lX3yOp4$#mvXX1 zveX!I*b5U_f~kU!qR-&&H!nPymB3v0FkW zZk+y{kAx=_)74@nHJ`^4{OD&OWXT*T!HS?3-6yYC@Y+NEjy#Y>uGFJMk1W8gRLAG} zt89#s!+1(XD)N=zWQ0eg1N(9%=a?Te;7qx*tzN!4<)~Jq8gPDnq7ZJmeyW_dVmrX? z;JI3DPtSl<-zKBBN=^=lVh|L^*daLtH_V=$h|B)Pf{&M-uEj6l$*u1KxFys`J%ZbE z!s&9Nm9|QJ13CLT>2C@5rI<)XvOb8Ci3EgH#b`dtbxCzv^k*qGd>2Ip=rBX16_Ou{ zK!kCfVw_qNhu#W>UH+J2ZKi{=Qh4y#K^U5k)sG>2P=HsK)TB|3En!KyOA8-byv#kH7^OTUX(xTu+uw- z0o&bWEsU^&lHmHkh^B=`b-e50{)XdTh1|2)A^kFCERzJaHGSuTfjzmLc0ZYO#1 zIBiuWd1*Ky?AVE}nTedoY%(|7F%RT@J261p)StsFD&DPzl4wnNB;YivxB4`4y&ZL{ zysB3e#h;lX!AG&<-RA^}XELWnZG+v~SoA8$VfqM@tmrS#ASuY&8)O9C@PptuivH%X z_?AQPaySxqamFP$3-hkyLSONzIqX#5D*joM*j_U!e{ECHF~8N`ihYWR+VZdkaVT|& zy;b^=KAe$rGZnL?bjaeDmiaO4Sp{3?J}1=Z$n1g49%K+hKd9aHG(uPFsYHkVHf?R8%=*c)QZIId0PIYNw21`IUC;rW~hHnnoLdPw!El51RL#(0&Inym{>X_;26(AlSRr~h3o2=!N$Sp%X)KpIrs8Q& ziUh8tTyZ1is7H{kmD&>bsrJi_iPmNsn)I@FZK8;Ewfpu@9;{!vZ%gExnD`#?z~p^f z65B&Oi$)`!BitRc;EYR^Bctvm)s>&&dmMz#SxSIG3FR@q4*9Eu3MY255qcB<=^76( z-;qlP$b83*KbP|gjAzvag>;){ML#O)@am1k-)7T&j|izPNHU*lzA=*a+qv|6RmADV zc$$-hdg5(E_`u~jraV`{p^AC|-_;#(U>d6DF+=3<`Azuc`ZxCdgx&ocyww@qR{*M> zwCDY&!_9U=ajGv3BD_p(#anihOD+Ud=0x3OY@?$77={w~NlYBMq zEZDN_JbU^?c=}|j{^MxVhNRapr!%)L4N5#CX0K9$h71Z#7S?A_UN3KhsT zsYP5uWDD}5|Rp0U?YEO=3GJ_k=m zFcT;M6pXm77c?*s(%qOpV^U6`CO%hqkcY)v-j@pwEI7{+db|2lnfj4qbSUHcRSonp z1qZad_vDLEo=N%Cb=-25AD-^t(KCe^oDl;&D3ncm_kCLHQC z4-jaKcAMXl_7$HRWbst_LZ2@@$Cwo;U*z+}=LW-*j75RODS$WEv!|kD$% zNI~PY@;iLKNRw=5OT5hdy0dl8g@-&w8iX2{j$%V_cmOk9dMzh^$rM$ze&n>ecg~@{ zv8`FW*j7tUfX$Z1U~o=$P-@J&fF9yRy+#-p{t=T&40Yha*2pIGd-#drQy86R+fWn; zwXo2c-+6~6qRcGF*^XI>-DT|8{z-3&Cth;&$Bu`9Akpw_#u_qJ^||cwZH`P*IH!lF ztDVf-k-wS@^hGWa!6dO;biQCGxJ7COx>Gz{lQ@x$-x~k*fOe z)9quDgXYQb6)b~lJNu%v@E|A}kJz7w$noB#87;lCSI9p2ko@2Cx&h;yv&)vxh^o6~i;^P!@@FEsatb|$6hrRmHk z;Tn|UBuvK~S!lGE=}qv=I8>P74Qoz3%QdO8g%8)nxO;`ue)#d|J~5Ym^J->G#insT zD0}WfqXPJ-R4q3WY#`XbjHXV37m!I3wPd|xja zX3~NsGnveL9$_!D^as!|RVkMpeLwYOgr}y4AK=o&lZ;Xy@oEzEYnfyW5T|kJaP=90 zlN1a~IDsMr0WXFPOD$F_plW1l(|in^+|pg`kF35~f*43uJ$y{vKfbApzooPlm&elq zH(ctfltWf>wb=7i!H!kqiY(@nG7epykrpnkI4V0?xjH@e7#J9u?l-Px;?-wd&BQCu z%*O^AMrU{q6|$dofOdxq>x<}<5Zf=jQ(0Xq8EaAxT*pVhAewEe^E!VI*K9g5UTfEMO~)hg)X6QFm$Fzu2J&t z&AzZ=pX>`OR{O$=WnY*}weqhekf8b{yhybbR*4W%3PMs{3s_p)G4M)poW#dp$FW;0 zSwy5&B2u!x_@Kg9SU8E?rA|dwgxs$F$?7_Zst7?c>QZ(18sQLW7V8C5_gA|1$==P( z00bB6nD zs@GZ^S%8myqS4Qo=F?(*sZa24&G-fdve43@K&BL23Y0UQB!ZA`Pa@{u_3myP*`O3NHtp%0EP&QmR98X`CUl&0?Uh<_nxaU;Z|Fy5P>uDoCx} zU2B~onHl}r3HQ}n14%%$RamflZa#jAM|H{dzGuAJ$~`@)yQ}pwWKa4f#2imXK`j(#rV_96<1WVoldir!6RJx^lgm76f(>ugTya5o6o~( zwJ-%WpQbm%7ef^MUbgr#)myDSTx-2zD~99$bSb+WboMRE{sx~McF4%VWk+{q{}ph1 zwAi^f|6jO~v20*L&4T_Y^7jFSvhPxLIDT$E{!wx}I{koTOwq-E-;ZBv0uzTgi;8ID){h zH|00W<-?b8z6S1WU8HYP;m=1joQb9`MOF4by6>{+k&_nqJ45$uq>rc~8k$kin~SE2}f`#L~{kBE0&|>PoSC?N>f{e-?GOkf40Ki+dfKm^L*B3PPodBkz zGD_`rI~?4KsEK?;1{!GsP~y9;KcYe)7BgzD*?~X6PkMjgWR6rrV=eY4av>oV8g|RG zFPtpg5=$@mD0?2baQjZOCFN@j#yiO0eZff=jPohxSwEM$lKydP@BH1Z8MYCB0iwqJ!5~+o}_N{s8Hw2;^LorHu^;Z3cfVOI% zs8Nw=yMrI6v#EN)qsD{|0=;TQV&pf`!(+9W#CM_{Jk&|{$!#)j(qf0?Wo{Cpw(0;0 z%KXG<>;19P+ctF&1ZSRvWi-^0%8W235v@Ew3>O>HS-GP}m`NSy&gK{S)h+|4KXXhy z4I|eq=Z;~tC^tS{)`FR4sVu|Yq<_pvBSaK@`*BbLmz-w7#`+cV5&aOB_GXe@;yZ9c z3A2$5B0t5Ei{!&6*)T*!7N5phQqF?YtrxY)7a`!cd_jQ7)FM{rw7+QmY!xa?wy(*1 z?fM9Iae_o!xBB#=y++X&deQqvQHNe+8bx2}Mft<3E;mf`<#vc;T}I0-Fq1ecG)fpq-aNGc#i18RcLM= z#r-~49WVz2b^uw%ep;+XlEqGt4T;#>Cg_MMVh`-dzK!frd%>oWF6z@bPN2z|5%x-_ zQPp0dFAOI4t#C~z#Ww%u;; zm&2`utTs|K{ywI^{>e)>>ACit2`d=g@1;rgkUF=2$`LUCmiB@m%8#_ZOh-bZ@GLPPbXah zQKg_W7UYHyC?^toglM7=H5j563{>c_7?KHDCs0MnAwsH4rfB|s6HtdY^cv!liTvt5 zuZFiNf}8Y@^N-%%AUm59)s&Nt&NszDsBRSq%|{<0EDKZupb`X?Oe$a8XX*E)PTaNV zk;$>7Y0k)eijGvw;AI*h#>Ui254Na z*jH#r)C}sy0d4)b)1N92_Zd;nK&nh1cX~~Nbx6AlwugPuahYhP9dN98&r`k36K<39 zR*D%*+o`sial%whBCX=RHVxyvD?YwWznT-w+VsB0_%HM;eAKL8q1JDYP8Oty-dgj? z;F=G7dQHyO9Lt#17PYc#4*T?3&Bm-RKvSQ!!hT4r@h$xU5o{)f=$M(%(Cc& z)BRokfgGAMA(K^l;?NWZj6&JTKEf!HE+S8|UGCG1h)nRB>i{`aI47W0PQ=+4W6zF%0t?!!jozKm-nI-=jLx_YuaqJkh&x>O!|x2Mv!PQo0{_q zCVL`h%48->AwSb%X_P8o*h$wFjO;Wr?~|OyKr)4QJA}|?d?;Qn{nJPt3;E2Sahz)* zWUM|qpbu^=R*Ro#10_^F61R9ZPhT?oyM?szi6NrT+@la}^c%hkeeAH^H1_IvgAETcJnK$O9`p9#_W~0bw-G&pM{4Tnnx1b6Y?+Il! z=3qrZSaYa@Z{7~X;WAA|m$Hul=KT+=vc=urcN*>gXlIy1pL|X!3b^C#q9FP$%53G+ zZ&$HD;KcZXpcV_k1WxC~#rm4=ueCVX%E`acWy8~3ZwNLPXUR+u-k186&8Jziv7mKI zc4M)+&rqw3$fw>rH@|J6Cz88$sM71AOo)lEyx-^P=+q}8(^;|+WWHp#G(Og-*+l2GanJyjal2kR z)`0(`T?9KYpV?SM{g;_mwY^F;mzH^`o{nfHD#7r|ZtCKf2xks)YfS8id;z%;)$_^Qp<E`;^VlIIlB7F>6cp;fp|JjZ$k=~DJvKIRkw4?=Dv}@c8EjEotVPG^) zrb&ubua;roRfB1lqSL?kJ39Rly_MU(falV`{afjO`u|V=y#0#)N)Nu^H&7_}UQZPE zNl%CU#Z%$1Ai(*T(z87#9TQ`9WU6g5jy9I$#* ztKtv+O>BfTtD;~<1BsgKB53QOZXf-Tbszo7Wyjw+a!g6G1gqTuGn9?4IWU;h*>l<` zj~nN7QTmjCfYR}r&yanS7$*ubcvD6<)6d5|7MA*@)AuQN!!Pc}_<(*zz_^mFY5`V` ztXhvS3u@=4$49e)&#oHv%w#_)>qVRtyP+DBrM2XB<-!(PIYg7Y*O~S_B*NcM}L7sxR<4 zR9WYVwxhx+C_Nwi4wNeR*b^oF_$Zlzl5mme+Dv^g@wJ;=UKabT=Th2FO650v7eDfj z!;g~VSAM@+c|TQozwVW@<|iq??!coRuqu zd#g@F9BNH!Z>)eT2nnbv{V2{>D($qZ;!>kHl=M#Y;z>sFaJ_h{QJkw6PsjS|#f6w& zy?CrLxZ{<S>5UW<@DUavrTw{u1P$F6 zay+>MgUw}6U}5|e8ua{M`4bAe-)Gd~3{ zQmj{(6}m}KkoK(lpTVmCeFFU`fB#sw{?~5F^Z7!XEP_~N_YMI6t;e=y{PWSbK73bW&m^?d+|q_l4_i1sP=J2_x6z`?v-QTy4Sz9 z?|0On$4BOuy2P#)eq2DRvV|jfP}@{zVzcmj=Yd0O`kuw1nOs+3PWy!TjO)o-_qzUq zV_%c~1+F6kYAo(Rmg03s4p_e=Z}PipJm_$;D>!a{D@Ob=IzZKb%B)-7IT734RbFh( zF(37a3z*Zud5?6e$A-4QIjn*D=+@C69NAT;N%zj^@FX!cbaHxI{$@mv>gMLu>K%zb zs(lpvXKBc|SVo1lY-B*Q+KfeC=nKCv7Io+gJB&qN=?lLqcy(Eei~|c^)mA-(|p-#-@}L2me!$;(5&}RT=>~tU%cOiTh(!K`<;v1njW}S z(k-Jevsvnz)RWt&v`3X!vDoHYn@B6&@HbU-FR6+h@A8n!j!AZvu%WBUquu=v86Av$ zCg>nxjI?|9aG5A#H#9I#SjO;7ng?g;DSu-G1GA#=&t3b)WzbU|O6}a(|Fe4M&cv z6XBWZV_6at9s3IPsR5$IoT?nZhJB)18!OE8M-RZ0OF6Axd<2RLeBB@GwC-IO< z>U^8jl2qmWks#2$%ID$Gx3ct3KK5kkD@=T)*7F0Y_Zv3jg%4Bhc>`07Nq+%rS*T(z z44Y6{W9*$lBQN}`u6i7=pi*3YT7=KO1m_F_j+0=!{fSk{{zEiz)*|H-i7RA1kN^cI;MB$_-+CIM#m9zbNmxM)vpyt5 zMxXh)Gj}+GPMB{&HE3|%7-(?&Q`^aqYOZ-vlp(09c@lR*@dwZ|lc1gH>iZqg17MY>}>z9`}g4oyGp0=41Rca z%4N5jkW^Wf9b4I}g6Y-+BuRwl`*c|n;i=4qCL>7FJ+(2?HPWp>cY9>Fe})};9eQC0 z&8-6j-)w)sJ3g{9!=+{*&)>qY{6j9k-k=Li<=2Z_ZGN3b4&fJFLU(@2t>$hG_3-Ps z^7vH}{@;7RpW(p2&Vf%?&>emt1-^$&67D-0wn@0J@-y+?hT=@$qhii!q+6|$mSp-w zlDe_{EE2l&XaN@^ciBIemSRbj@fo0!`MtZWJ4M2d_^#vmxb*%N9Blo&f$8E@e*UW2 z=I8IpA^emsAa$^64N1}PLLmjeUd``_pFED-RyjHd$XRa3ak33ECa#0B9_uJ38Gzrd zhxx6O@vsa5O1PqBdT6#45O3)?nQwA3za|>V)h{Uza!;{(~V^5N>t&<>GL%lVOR=&^Qp}<0O`}e0_`wI=Ztu z^K+iyjLbYFL-#URaKiWX_tJLG{FIV>7sFyWj)wRybUbSwPw?Ypd9Vknjkrw7{x)v9(M-gP&r`c4$06rV+!@Faeg)mTF}$oup1B0*A4ed=WlH5L%BVhZLQI&W@KI(W*I z5L0u4YoiktmJps56XcwWyhI>DH{g=wtP|sTsg){IOa7g!e4&@PnD+ORw7;jv18GJ^ z`x#Ci?<;T!_`2l!Z{Yvn?H=&2mXaCgq!TYbWuhBvw1JLLpVH;ii9J5a1;dW|xY7K= zA?Gk*-r-|&Ts)#?h?1fI&t<|LSDCTSUgk=f%^e-kR_{B&64lLC4jTFG+BP(9Yunln zsn9hM%TYadh4}BPtzW-qw;N*URREI^%*qQv(BA6UzO%czqEmg-I+@RJ*H}LzyTLX- zx|}t&){&2B8#ESsEHUVAzS(1mU6>@R952fqpNw^BpU0d>A&p1*|IE#qngPBtNmpBW zNWZRYie456j184&t4k$L$^5 zo->{gcF$#Pkz{Gh#BBwY_vhNEsB=xkpfA523v>z1P+KXNeQT>HLNMnN(G-8olQoA# z<01l9YpSi)(lN>1EbwI#PC1KWv^#I1221*uX#HZfL`|i>B4y?HF_$T`GOh8b84Yii z>o!l_Y0{{sZ@Y~3wJt3_HQ?Mh7bB!0@< zo1d2-*>zCE8v0oR(Y9#h@D;M2Lx8MeV`WOR&q-d;J$aauJd4LpL71*=Slw?GG#+L@eY~&4KxZ3 z+}NmAwn_9uVmhUPp7*=RwI?HS3-WLeMsP6Yb!*g=qC!n75XbG;^0g?3Vy=iv%qqQ^8D%#FJMo5iB61&+tPJ$!vhhwnEtD(`l7gP8 z%x|(!LT>F*%iCO$kwN)G;4?y4B1OOc>T6ue$OyhMgJAdc&aVs&M4eO_0WR-S=9YJ* zOjx!pCBL~?E&)s7h2$@C(38V4iyTyB@2$9%VhH{G-@|_LJuY z`L%A89@u30)y3NK_XriS{A$!nwi3re0!XySx{NGNIraVn`&~e)_o4Q?)TZ7w`#t8q zcLJ93r&Hc$TMwnY z&9YV}-)v4>OOpvqoLF;G-lkhOro2tHA_;-!lP773gQ=00IMXK0%;ZLz-kpn=0o6R2!ge=e6CfdPlwBI6sC1&2+R`D!FQmBg2}W^# z{-v}!hI5q_cHcV_g_m>c7W11&7gYZkV(pU$?cn3s@0%4CN z6e@r3QGUEr{t+pE>TsH2!8=Q5C-vXq7$$zy!{#*5O;NHE!QP|OeV)Dr-pNTT$wu|h z9@WgD8khYP$fq_|bQa9;FME=`BFf-~Pof8YihSmkfRoJ`9_ueyNAn5#PFzWf{gUmD zA{Y6_uW#eeMk_v!=JZv0|JWhs&K;5!ay{yrm(Hb)?qA|;~b^nc7|aK=7;Q`r1l?zU#5e1(D@BGze#%J zUG(CyopjX=n2$xN)Vdw{v#-ck^L5Zjp=J}WHZ^NrSJZ^Nr11%G1(IvxIC7yIMUO$h zxdZ?XMFWH)__@%b;Sx} z$3bBg2B8a#4`~W>%%{Y>I!f7F3AKSTDQsBJtIdY^YpFv0x<~yxder|2h?|SL>Q~1> z*-cO4dUZ~5L4qcw9JJ}|JN&;oXiaY^2W`Rei+8F1sf zfNnE6MShMo2WB z{#DQ*<7CPBmYaGXsfo>cTm0rP>`g%S`H>a-r=v?W@i0H0rDv1<+&DmHkv$#@iF+Xp z`^)}h+V9irgx6K%WCeKF*SAu?wu=Nn>d#JMgINzE&kqNx-Pb?ItIaUu6|&aSjU=`3 zED8(53dt=BK9%3pru_hDnPC9f46}{UtG#*mh1Lk(&j1p&6lz2bNPbq5*OKfInHE0N zc}frGI#1rn1>|gzoWCZgRZNQ~!M}=x>m}ibcEVUmm>>yf+6gNqVU#3fl8{m{k1p^2 zbb|2CPd{2BJmw#)lSe@?CEr>*AF0FPvMx0kGCYF)*Q-yk-&_a-Qh0d_uQo3)+pKt* z;x~<>rc_?;0M}Gr3LWNf0NA`#J-*G*MfeqvpS2p|ZU8Q*k8n^IjAVFc^Y${yQA7?o z%!P2=KYWhsldQ+?_Jvv__x_}soi8)1)G$rT_o6%;x!B=|j4B@vD3*z`{T?dxhD3Ic z9E-bhJf(6F5HK%Ni9Ws2yaw7**fg3~n@w3wicOqHkm_RI*n?GJ@Jf;Z|4#=+^K0P* z8C~yg63&sfJ{B77APzkngq{njLej@}rN1WWr;=V)u~Fr(K1r)wK;J3vl5bBht@0PV zCpmPZNN$g~UvRpbReL~xSD?HF3fj6@=*Kp6Ry@T*98Jy9w<|}v${`&6psy4Y#p?w76pps>YIC%qL2)!i@ouAds^Vo|&@=xI zfK+Z~pgPcaA9>9LAYHm*)!`ce77zzCz9uw6`WHf)tj~6ukD>t?U8hhDvQYkvBp1&V zE=UPmUH>V-?*(`wKvnhfR_;_K?4+tIlU1=|?)dc_>?16ZdQMB$lNrb3bt*agw}8zD zZ2VbO_e&R(@NWuvK7UfXuU5OedSq>+j3bLiyfj9>WOV;hV%`H=QaF7VuQsQrzpOaz zctOz~TrL4vs?Oe)g2Fvgk(}Gmg@RUD&$~;3wyFW`gDHO|r+F(CDFmCOoYte9=npyH zlAM>5Q$+27eWLR+$aMIyU%uz?U36U1JG~38FgJiz3UPnp)h2Ek=+GB9#I2G#Qu=|+ zyKzskB|3t>2bhVzm7i#pPmwE8=+dxMgjz*L^J!pVSY6GS<5xuR0SH%vJ9IsSo!S%u~A#3fwORnkWF_sz-?wT2E8qamru+t>sswln*a9hkWr4&+Q^jKTV8M~&lkrxDBBPt2My`R1H1a!wdOVv*iS=_h1&LGT;|Emj zk{CXV)cKOSh1BCv8ctRrQul;UBmZwC|0Cp2(S@5-K40bTh~#)kaxAfPxZU;nc8(1| z@kEb(tySVX3r^2U-fN_GUueHP7unCDdw4FepJ&VSxjd`V);*M@?r@sjD0p-$xu=)n zNQzGY)W@Xsr!~rUAICqau*=ZAlz%XdK)SVCmbKWLF8Equ62G_Zu9p5aaxZIrmTl4RK_st*U>uyp2#icqV9Fx znymBkWSvx*tg}y#I=|{s=ao|DSv~5M#tNcC%ycnn(#vGYdGL?}@iN;KG3+N^6EUd0?-Mnv4ia_J7^Up)==c91(S%eL7Sw zr$XhvGd*-RzbgIg74)Q1C{5%@p~3%Up$nxDJXVGFC5~UyZq757no#jj8R*HN-`p@ z5L+acto)3R4UNWAD&&zH9Y%N}7YPLL6-Yj;n?n3D>+4Q!eK>S+<)Nk7V%PDw0>Kp} znWN#X|xTc8!W&DsuHiermQ+aS9#p@@mtuexuOgw)+3+f&ZQ! zDzzD^%_k^qAxy%K3f5`F+&+ebD*6-}zmme#@%5{^!ig>@PXg%ab?8!}XJAqp;>=$k%VKhiZaG zvlxcO$9e|Tm_DYo&BHjgIrWW2?~8yMi-<}q`34({2yaoWMlX78tpJPeEhMn6H+_$@ zq$)o0RAb{CgN5W+(v+Mpl)E1`UDa8+S${P=ul(p`TI@H_udRL-NaaVruf-&~TYmIx zEjCv@oUT$d}P2J1EjZ&geeYQ*Dul25;$%)_Q^ywR&CFmnc$OtB8$M-61-01S;G*W|-Lf5m?+zkMx4DxI zT1*5aN+#`04}{DO$dQh#q+kiuw328{ZifC!qU;{MBY&GCKx-CLckcRcg{v0J5!xs3 zP%HVOhnHz%|2ieS z)5Cp4aIs>6HpbhK{(XfN1w59V9#>YSQcv$n-AHQJq{{f{UO)Y#b&_CK)Y8yf87fMP z-47V(-C{b!8LvgRc%{`{#x_<_M$W%;X`c-|DVf&2WKokeW~1meu>*dJSqCNKe2+Qp z&&=;S@hiR2lB1H0B|B^$u{rdf+CH2)Z-q$asHo`_;_Wf{sk8cl<%17ir#Dv|^mwv8 zKY8fE>mJH){*ydwu|IThkf`#F} z6$$|vVNLtI&VDH;bE3idK#9b5nNZ*To-?toX4k8#*7`9FhN$7t=>9-iRcEtG;cx`G zD{qi|MTxCwec*F-J_$}U$ka|yeBVS-oOK;&ymdSr&HeK%G z&O4FQ^6}a@2);egpTJ$_G$O>ui?UkhdfIyOpMr z;nL`ZBoOs0L{Zw`iAe6N%CGJ&4}~9G91nu#eaPK7wU9^RE3o=p*4L^_0pDB?wuD?7 z%n@WkKmitMuvWxJJf^eRnC55f@`ej#r=1zB=*HHL1sVl<*V$|lc?x<&#bnSTSeni3 z?5nKS>%yw{bii=TD(vE%RntqAYaOI?g`JyajNhD1Wo(bw&tWo1e*-P5Gx3E8*5SX@ zr*JU1;4#r^ap`s401`|#(k%01sueexXSPs>6;$PzA-fhbHa_GLZKHtQ5>_ku8 ze@Z{pm<2kr__bUYb|aYb$*Vv*yy-2l4{5dge*+!j?bhg>T^o zMwX>T_m|)#$zj0$A%J!BPa`XqL9CvHQUEtH+EEzh3@KmabXh5*W_U5)i~dE%`Vuu@ zOyNJi8n+!}3)n&dE4MA%?NyB@eG0s+O|q|1l_g|qZRrp*2Y{pxi5@8oKPd-_%W1sX z4ghIKd8vS2fL20oE(XxA7Rd-HaAlS_d2*%9+L=oK!>;~sSn)?@5qe3g2wwvi}c{`zsw-?q(5(hAflktM&R=e$Sd&U4c zS{JA|Dv4TDmm((`clhFnqR?afM*eE+Ci>&cAw|daS$x@sLSpsJtWS5rXN1ox#w<+I!AQ5 z_RL27M9lQxF()GRA4(H`%+*J2{e1$kta97!85OS(uBU>MHK1*j;sRPX?8RULU>qY6WQ5&d# zP(=A90SeV5t|`6L!&EHi^abV)s<7la+Q)OQ{HhNN5;-*_O#LZlR=jNYJgw=hK9EDw z)yd28O(x>uEV^tVZ9i&PmIEy?yruLqcA2z%Dwn9_>YYu{PQ^RQH7< zH?vsMKR+Y?lY)cu*1agaO8mX7iiN-Zl=aBpMzu9;>Xlz^mc{ZbJdF08?NqBySFl(S z$2BqNidyDoFIqm6w3POl8`_W!Y~9K+x9<}i^&{Iq?z79F5x&84`<>fA(rdPVtnb8L z`?r5c2KJ0?PxSd*Z)umKp6c3f3Iz(@)ZdzWCS$`86#KXDE2y34D>xQDQEzovVI4$% z%D%?O$fQ0Mdi0mAJ(Ak}pDiCbyiV>$E=4|5Se?q2YR)TEER>@B+?MZr?@2;9^#)%FKVA(?#T7gpcK` z{_=n$94*j-&?U#4k%0xR^REZgaD7*MIK;6ziM|E9=I090y6lk7&VP&NA^KsSL-~#5 z%vLFa3;1wO2lA5x6u53g-@4t@5BF)? z{(=5Bx3s_=A#3{q{qT0Vl zfbS_{pjVQ4lK>b_;#XX~Qk@R{v+tu198TYx!|4}%p96Tm!ZIMeQ5Bm#p0;JO44Jo) z{0{HZ_ow_}e+6G)U^&|zhSOivQQ2@uc}VZ*Ozi5)-~AhHaFYv@-x2ZOUVx2~I&1c2 zRZ6yyfVFSr7 z8&t<T|pMkN8)^1puOxxS9+#rT_C}rvQ;q3H&sxZ}oT@eCYs@mBaQwvH0bb zsrk4UuEs$x=lwGP+{9w+a87I+-TvWaxX0CA9L!Mk@Y&(3SvDTNf?S8Ek&DBLF;H*G zf?mhJj2`tarO=GY0@N0To;%V5fY#XJ;FP8Rz zfAadZ6SYkvqn$If*u!8J?L1dM90^%>^Nc;*9gakg{(xgZk4_KYs=uSH>#w&J9I=OJ z+NPcHIo{~e8R2W9N6(FH*EUV{mh<*YN?lg)4)tnr>GliWV%QuWDD@E&eFpO43p=@N z_n>Y?-_6$6WsIWkCDb=+S-3v|j97K#<7ska;|w8p28X|LeTp~n0r(fZ6}~~P)dU7N z(a-n1bS}m8wtvsy2ec}0k%swkbYFHtv;EC#Z)|h;pV~TqIZP@mKfElmpU!ud3*#LL z$OrG9ALzeygSEHJf}YDdRgkqEx-6Y+Fzy? zyBLAPZW>8ue37@t>=kX3r3zWvrmgV>#2UO3f|^IBayCT7KBeMvbUTKh%EQ^=>koQf6ZjCURQqP>`2hok2=JEBJbfZ^Q&oqZ_u@5;!B~niGa=D@}(T5 z_#)RavpLQTAQ;9)CJ>!v_1dN>Y7=OO5U|8MEIb{XlxaSW2c^Hv3~B5QK4|ME$Zg$L zJ8~@NXhtozOHg|`@uB`^&fAu3MzZ}I?h_q#UU&j`NSNm-T0ums{5!?0i^xQYLL(QQD{(;h({) zOld6x9DQbp%@jPoMmk?l8nrBPfY#E7*%dEe67R~N_u{vDtusJogETtpQQ&TvCQq_W zB!9QXCYjC+mq|h;Pw^QX_FI(B?UIbZWYd7&Fj20f4{`!$`exoFjhr9b7izk6+`(p`FOsdxiH1KEHckcRdaQQmu>D+ffU7u5!m(96Sk-UM4%p zIw`}mukui2nDV*9z4e188=uuygMU$-J#<(4z?Yx$CGn=i4?AAWY4!VO>yuy8Cp;=B z789%@Oc|{XIw9gW*_)eFPe&@-zmm6xG?7iRw+!UBXd_`ZCx~obYs+q+8%XPtpRwdM zBeGErw>7u27YDp=pqzfB{6FP@GN`}JoCSjDAh#ur@s9d|79(EZ8ATZO8Gb4JQr7*f z7?6K_W4|MLW#NRpHeNyg-j zP=%YLA9nq3b&?G#vf}d2@G085G&E$twr(`X+jvtxMLy6+h0G?gHZ}Ses?U*;+X)~Z zpWLE1nQ~u-HIi3@+Nt}?$7ylu*45=;sf;cJ&EdKH$PXf?TV*^s_PDfDZz55PEyISD zA0gX(9^&IW3to-9%b7i#dRf1s=n<6ekx|pbei&5wIT^Hdkw=Wl^+d}Wz*R8+0lg_~ zTT|nIHS#e>Hcpme1iJO2W>Fq3_E(A#JZ&s$5@zb}L_hNBOYYa-A+}%6`;r}EAC@!` zziksc1sT_$B)Y3Na{m%VpiRKkt4Cl;j=xp7GIU27Cd1@?W&dRp4n%c*fhTPkst#(+5WSd&mvT?Ki&%Y6j_+pB3#z~<5J&n15w`TwD@H3N$gq__bxJ9pPy&MRbr@tJM&F~wu2$7I88e=U9!_He z0}F^)$2P2nPG~}tR=F2;7)8~>v%g8s8L#O}p5d_MLRhww5XzRspepmdwE~av{gu9@ zr{gtov8c3fwM!P~HS)IkV^yQdu?**%9&?YeJz14a-NfM%)1+G!dEAdwjmgz)3F~J}_Jg5$FEeA&qGq45q}eF`O5{2lm7|tYv3sZYU?vEs36e{wLoA(jj`YLm;UySj^zaK#_MOa`^+ax3rQRNGtP^y3P z`+(u*5(I=-GvR&n<_>}Uz8WamggXA63eyD%6=XZKaX+ZKsnylDaX#Z(qL(=I@gWjb z!;R!j1)N*MmldrO3uBgwOglRxAMpVV&$c001teEZCUB#6%Iz;%D;q0}B|#M8;o3ff zW)m_bK8N}>_L486hmE}?RsL}h_X&%6ZtS(tNr_+XeLTi#w65R^khW{6N`>|p<=#Kb-?KYFfKxzh*QGj^2Ukp@O)1}_o6oISS` z0*s<8Bf^D~X*P|Gy=1$a{6pKBzl+opScZ4>ICii02jOUuEK(roDwQ%7DA>C*+t+*b z2$uPW`V0*9Yx-vdFkX%A)^~=_zBtR6+!P*U4X3Odue_L}nk8IMD)W0Lz5R8xa8X00-F30OLW?+PO=o5Bm>rT-pHzyvTKQ%5Cc1myF zrmg&*7z&$PKlK*0=rdl^RvSQFD`*RO&0MdBe6)30GCru~5fh+o`dq(I?Um#Df}$Od zOJ-Z<@zOUc_I(ZE+$E#(a!5I77kWos9LcmEBuUy6zJZ*8{TQz!>mmor7kMw{EZd5~%%gJc7#c=+$237eFseHS)a>Dz`NT5J8BSGyUDtMGXj5d29x zuzDl1L(ek?Nma%PqA$$BS8i7NtHo{r3u7McGI#NSf%2YFOZaX~3~+vIuuH|6pB~@2 zwtG9&mB3&;vgP*Q_)Qq#oUQuJ&H9Aba5dt-IPNe9t*f;a53%VyrydW5$QM`OP;)%< zzWi!E(&XBg5qIh%qNr6tQ{;0X8j&VOqy$6 zdeE4#!_HW_d1+QWbG<;`VT_3CBkmNCHOoGS6W;&mO6hD(Gj48{rnwG_Z=9eQy*d07 z5zq7I5^6Adm+6x~Xej!~6ZSO}eJH)A-<>V;#WD8rIfXLNj{Kgy=>&*;YwR9?jDdL3 z2a?~MDj&xLl;j>4L0gSd+q{7F62FR_u+Q3v_E(L%nBzD&D-(e_ZnpIco|FC}n6ZZC zN)&9ZLKe;Xg{bP19n!xSDf_UaoHZ9)JxL8!6+1>sA0*Wm}lWodU+n8;^!Y8=atMbQiNS|Dd>5#+Zw@{I`u3wC?MZHiE$rP>qw<1Q2 zJbpsa4(y-(Eoz>F+j^!LfE7i};dHX&P*DXQMfs9u%t+CWNN;5-#3bkkBf&&TmqEA@ zC?jiZgAnems*Su%ZZ%1VcwrLaWzmEh#-2e}uQynq@PoA#79_SyAPdJQ@$cvzKAQVu z0Hn9lR(~mNOZ7@g3zdQgrz7Dg$HV0pJ0iCA(dhk>Xk?kbtnU( z3`8)yZHil?*q4fK6fU8Wk z-LgcdZ=w*bIHd_|s~5utOU^tO|EEj%*3*)Akm}N#m!20NaSuL9XWX}%j!>VxBObWO z2u4i~UhrcYzL1V&`bGZu=uXw;BQ@0}>#Dr1an{cO;Ii=aF4S|6gZgv#{&y0wP7ueb zs9AL~!c&_Yla2%OMnI}Yf#pHxtS4yRZZnG3rlqzD-EI|Wk=q$;;Dr*w{I$~U@GPY! zoV7xbX1Xy0{e1)FbyRu>DoxTDz&DpK*+Ez|MT_)Z5zQ(`4PAu}4?&p^O79kqFi5eh zxm6+8l&Dsi8mEd)=@NUFD$tS{w5je$i`|aONV`sw|Ne2v|2fW~bu~F9YC#{EsOa8w z@Ubv0Y8YaE#6e`Voqym$cY~XT6DCTQcoLRN4^vd%g%Vv`uhf2R#*SpyR`Z@Oea34} z2N%A?P!q3}(n6z`3Wb<;?3`nY${LG4IQLvJ@ml5gNVBr!LygzkD8H)VS_oY=+)?77 zsD_K35%aS5>rvk5?FY_8w-k#UcRe9z$)ObV9 zhe&yc`~Uy)KX%K@j7D-iBt}3`b|9Hi<_~bu>cV|>Ou>to0=-W1h&kf{Jo~$?} zew@b09I_~5DOu0AvkFvm60_~hHPC8(Ygf>x2+)xfe_XxT^K+_zeE2?@CA{I*(=P9f zrWz@rO1mTSvMT-NJ#LktKmn-@cKOWH$*kA14s@X7t9-Usd=&}sk(1RR0Xlk>vjgyq zM~YhLA|yy^+{v{X7**)>)cU9!((PpB{i z)7DSkN2KEv$Db*S9+|E;g$HWuOVi@x(^wY}zMQllL_XBk573+BbGV;M7;MY4I!#+2 zl!WjX>f-?^(qD?}jW&SDO9e~b*P^4rg8Jgc#|oO}pQ){%a!i%VkW!IBTyywAnfR$P zp<>*;M_uc9NzwcEU?P88nO;goC+TgflD<-uojic#U@mRFzbtxKA#iwl_yCtueHK03 zOIvk0pNX^82u8!AHEB|)Ouyz>cy?KICVrEIr}7}*@a-bo@H}J5`zqY7ca-TGaD`JrSHpx9N5#x2 zL(%v`FU~`kLjMBV^di5l)6UW#=n$2jM0P6(Qe_3#f{Zc4Q&HlcIH&6) zp!MT?qI&9zR&D)+eM%G%dw9B5IaadUI#yP2O`1;7Enh*p#wWrE2Sl2%sPYsWu5}{6 z&djC#Lwxn9&}5=6SRL_DC_hJ>5)`*1#?11H=8ys}Mw^M=VQ4y_As~ zTkBY^h=~%OjFbjWTl2{$OjVpa0ibm}^9tOamSJGULQ|t1!TH~79OuvK4#jC7I_HOW zfi9Ey|MqX;eVO=JT-cVEqW49CiTfYMWqVM5>WH4RHs~U1&&ja!LA;MgTsp_(qb!ZO@_J^?Snfp}z z(Q04(x1Gn19c$k@?3Idr<@^g8|0@kn#o`J*T_gyN!h2jRMZPQRmi5Ss^;S$jma8MOH=mLc~3|?kp9xVBkrm+ zD@N+g+3HmSc)UJm&QPx+Q(m8xK4&5b@%(#7UzsZP8w_@tAwS1Z=!h#-t^ZCiTROl{ z=n~vtgEN3flO}t6{L|`8p90*+2D~3daN={o%K~0D@Ip>u81*-D%aYdWuqHTcF$9OG ztQa+40G~#W0NMbJovgEeRt1v332#sryz5qU6m96gu}+XV0=tw zJn#(H23GqT3%`PeTunazRE8l(I>QP4YMteg92co3A|19~GS9!{6d7fXp%?gmYc3G((B-TE(;3T2Elh(*qy7bl4G-?$1ddR zFRTuS2ux){>r1MZ$F%Tm+|6xzBU4zuHHo<-=CfD2Rzj!gs2s`LY&k zrYO}67fi*ETC`NX%W-R&LB3hCxi2YSy{6`HFQdfB)E=*y_fPyW2VMwx`pc&^l4J>0!Pj9o!{c-DmqQar4^7m4OO;7$OilV20Bh*k#zT_HL`v@h?Fs}9&)GS#-%5-~5 zEw|D0I9bf`$j!~)=sBIF#xcSPRX9;1oE5$fqaumw-NJAFCvE`+eCgx*D+rg1MGD?r z@;_381HsMJ=qUvrm&eJW3cblts@x{l6zZtfFUnP2(`iSUeeyN{U+EDfm>bVfpSVhP zl(K*0L6aCPG&N3QyeRQ+Gw!LGEBo$}J=MAkn*6WfvzGYYHJ837; z_lAbgkC$eOdX1-o-xRzuZ(y|6*C=a2sNt2l2k8g;{#%gE*}46fUq#iP1WLHs=Wb0T zbTs1SVPH<2vX!h{cMsyp^*rKV>;ZszO(lZLlU!5iZjtE-T#gRD>^#7BXO@Gje>~PZ zkF5`ens`)miE`#x8!wzgRLu|3h4RDP$GQaF)7EWeF<}Y5ANIq^<^Uv~&4I13c03Pm zSz~4B3*OMlAi1k~9~ zUkdumd5Mp1j&}3`#X@cQ?o5d6%>RU4E@4(Oo*AF?S2Ayo&%UM^i$plb<=LiSd~UP8 zHF~Vif~nD?{-tk5k7~>I#4}%#+>5ViPBfQQ34YR^t!bbG8Di7AvHUL1*p&~CeAV_= z#a-(%N>pJIa%m%_+NS;muV}Fe;Lpf87yJ$Zx&+89po;E&C)!b@Rh~gj(2(1wqaPG& zu^*%gwO1QBgE0{kj?S%2Leg3@;CFAD}!g*JI?dSJ`AZW!4{TE`XQd9N3IHIX{+8=kGE*CFbs+w zxsAy_q31zG7JTykn1&)o=O>HAdTFue1&-Yijb}q&$(ya1P8&jk!e6D3Mxiu^T#-sf z`NhMv*tvtrZkN(CC?`!9+D6J`fw-J}D<_F4dgZqMs-9;h$90?m9^IQ4eV5~%m!?NI zr{S^M4JAA%y1CGKHgC9-s#OQ)fL1ZB=#d|5v3mzXl-NgGPg2^ulhu)ey4KPqZ*gdR z&Sy?mQF6M#61h16>Y{to^@f~dGMOF@%?@Y97kJrBq@J0Lw%3-BZ#L^_eTIEUPc9=# zy(pNZ68`& zaFg;b)K)(Mf;{GG+Uf`F#}e$p7V6Sgt;3TO(MLN@(pG;$5}Wn1rG}WQQKb45{K?<^ zxwf%s!-b%fBRzRZtNop8WIHa5+x*rZuHF;)x>^b^4$UU42v5|s16t~L4X|zfu$zu{ zh&j@6DQ$3O6X8|S!YNn=`qKmQ)!m;WlT4$gYOw;Ok4HOdA&W41On%p!oyMiY$XAF3 z3@7rpi9wu1d=x$@YbesPJ|{t2ca^f1H=x}Yk7v^3Vfs$B7np{co9J_KCKJfLvHSFC z+PcjCvc6XTkGGBJvSY?J1+`cw8EE2SmBczl5BJfQpTVRu6NkmJc&UWA3=DJ{0xtCE zq!rxs6E7txF@KxY1{je8owRttwVY?q%?Bqy9wtr;4|4duC-AZ`*x_b$UmLeAGm++e z%|Ddr+qyH6(YjN0o3YRaXvNQl^Z*>*DBNWDZKmN_r9Z3Qk%VMIVtG&{Z4L+4{-pmW z=NMZa&qQ<8T8WZ*$x`}8RZ1;9wKKB2Si@Hbjp>@|RFUS%rvGZ{}$%zaXfqj({uJ^E*W zt~orE^o6pSWLQ(XY@wJ$p4r1bL)@j&y&_)*jUMYx`XHS^EEh_sWX6lYSz z$MXnX{GC%&jUzB$nJP^%BmGn(1&5amV@xos zV5QO+)<{6T|%E6`4QjgR>MCO zlJ}fYC2f~0m3CIQoEhVJXYJ0t_SNQh$yrXVEzSjo&+(#e^rcpy$EuN*ivhod)S`Uk z2MFg-gVLk8{hX_#I~6=j$mw=TTO67rH?ETWn?bxz36c_qqa)C9QsbFwG_TYPAJzQp z?PPM;$3Ae1O{5sQYp2Dp4H)C`c;r@P5lcJ}rwft(&u`9^qM%3nOi>5I%F^<38qo`S z4s$GQ!-k^L+6wN1mlBiUdue=B7P?Zx>q77LbI_g~*~B%gVAoP#&USB0Jhyjzh_|3s z=ZI^4XTcV|gWo33S zkvy&PG%#Wb75H(We4v+1{O9j@20MTM{bDsAz z&I7T#ByH7PC~>r|{cX1wYM4!dqhN>@mqa^1W=ddXBa@yE$?YwBMyM__ZjS>Uny3^_ zL-<%7gg%>Jzx8WQ#}YGh8fHd|z0F^xH;%P@5y9{5RW2>odS~y$+MPqvrG?7Q--Eyc z;{RjsUBIKNu7>|J$p8sN&ZtqNrZQ@%Nx3vp+AD; z^M23&d!7$H*=P3Im$lbkd#$zC-h1ttQX-1gWY_W(2zV^}$m`!l&9>;;oj1;S2nr|5ykD&|sZiCobR7`URBaSaPo>s(P=Z03?}y{kc$VZB!x zu!c0=h0(|zMu5^SWmxjqSDByl=doHNsF0F3 zGVgM-TC)Nqk$jYYwooF8Ci94aeFUob4QQy{iY$DRRA0-+WYf5=1sFtHUe;i!z_J>~(5oX>4?fFc3MsZo!455EQxy zMFnvgNQ&chzDSD0guv*u?XtTqc1|*(NWYm4={Hi>0^f_4wqg;lv=0}jEEh1XL_-^9 zPe|yM>}6jI-`PfyJd->sJTk|Kf4ZIe{=3+|$^TWW45kDA{rk!VI4exR*m zfQU3s{ax6!=Os3jvN@OnmSEjK>B6mLN3+o?y29Q84Kk(<$e4QY5xT46rH&Uf{!N;S zhe!$6rIb+96TAULS;sT#bvL4cSNTqJb~C{Cn6NDFh-Up7(h;hvZ$RVX;@^&rgCb=u zVftV#k;htP1nTwTYj1Bm8gjdc*AS(+He~Z<1b|AJ0x&@OozZPx29L1E&)yDOR2R|S z_EAfu6(Y->`o1$>SE z2imAzgf)3JAEp~@c(S%QBxP%iF$Q6lrGkYKpLTBu}7oG1FLh0mD|gNh4JbpL6f|~ir%|k$ZH_QD2sz-n$YWexjTsrT>{mqWXJCxCntR=$UbK-XQCjy7SR>lV@tmU+{Aa2Y9b|Jq9b|uh9pu0%I>`B!4&rDa z8yO`Z>GX{hW3&yIjLp&1$hv`&j)=HogGO#urmwt@@o3BA4Yi_zyw=fF(rArAO9gpe zhNGo|^aekaz2%c=MaN6#;=b_)Hl~qEGw&ykep?{uk$lu6lw)RtpE$}c=LdZzJw%+v zsQU~12k3l0$gpAwgR_9YqK}@ZJ=zHLI#DK!Zr@w_qxW}lL{OJ#^c1@h_N+Ur)wXY# zKLa9t<)A}^4op=!t<_|?%Ih{%EhBh1~H4kZHa!EjMq|emm zw@qyym8f}J-7W9|Y3Fz=9--4j*{*1-`W{STbg2lS5Q?@(5C98ytg+>1ecWXl97B9g zjD_awAVhI*#kj@vSXKZDIfJmpOwDp6I^=TzgwLpnnnGOc}F{N z`XhQH>YrLU8%eATvZ&yTlq)}gnEDCzIE)CPEDLRbBLhcrIXGu%E|9C!EPR_IrRGNz zp>9AlYvK#Qqao{F%Gz#D0$(zzl@Nhv z;#DmzaE_TRjc;;?7WW`=FXxAEbIl=9ARj*ItQ|m-o`Xx|Hs#GSI zP%WT!0>AoVVO9_rnJ`x17rNLWpUn3}zbng_#A;Uk7jOa7l%0mK7nufrA`$IGxLRb# zbKNJ>0Ga9ppkQ2PxLTQDO^XeVl>Jt7ed22kTtE*;3Q*9K7R4|zF8??(X1(iZ>;p0s zpt^{kjgc6n_zqrKZygN`Vkz`2A4<6e5qE9GoyVsF7(f%?<@B1lAkq;@_IM;|T&!75 zlTl_j%lrWnL2a=%o8`_#QI{>ZeEsN1hMx}w2Wx?C@qL}9+SP=wOMRLwQ^Yg~9oASd zPId(zLR;xaG{$wQW+sX3L2LF<9j;2ms?nch>gRyw*{9N**@dE-bJYAkOeA!iYy94# z0XCWS?>N8JvwqdHW>8RJ&3B{$kqN)mj2)4Y6T#B?)ZGs>^J0jE=+7u$h{0C#^!j6` z)Fb0fs6tFRdi@DMXAO{Gs`42 zYO?twv=C@^qgX*ZDt&YI)_Dae@J$*o@L-< zuhlItq{@ga=xMb!N(iNgwOAqu5_bu#Y8_xi3|n*v12U!;#+XFs>}INc5YRk8CQOvc zDdU%Ia%Ff5ulrAa=<6S@1r%9-ZUlaD;`ER#`2)4b$KD5hrFg;g9jq=2ogB1$_Vdba zg6kMYV_KH@7)rO#sXgzdG-5h9X~iM<@cA?;RV*xQ$uN$~(Y2OcABvZiq~uSHsXcgX zNyIL)xu%oxEEf-@lite(i!=3yCQ_r({en~_tpHwG$G;VFBuxsiCv8AjYp|S5S!j8c zcQPhbe@{T1zCrSlFo}d7B-p2bni5H`CswoOPVJcbl8k1qu6!k2<;G*gX18%<*LxOl z?Z$OIMi<~E_})^$rBIJY0rsHWeFCU6`}AM7U4?J!fy??nHwt>HyR7+|ROQ=N{i*a> z*x$pFYL-tt1Ccd&o+-_9_DA@ldfm799s0!0ZG^159^5d1%+B_KMwTy8_)~BSlC-93})zsxxp@Uq*8G2X8yJ~VXdj^J@;;TT-mm}ppc1qBkqLxTK#zC-} zV071>@YbZ*1jPHI&uYac@-SKDduabVwI^ok_4o0+c5$Lte^8d|Wiyxf_hg)D?MDH$S#2sL0^@kyw(ZlaVpwu6{oF4+lFv8Y+#auv_LYrEAroKQryI=KMd%wjOpG&>?yTTp);O$sC7TeE%4Y3T!nK@u{EL?2!%(LDY?49N2Sy;ef|t_m zt(ILdnj({ekKJ}cSKuR32d1g5Sqw9!$&plwiC(CZCIQN=L}?7R=uj&+KhxxAFZvIK z@w4_toKbGSjhmzfNM6RF7IEJmac`4s1_h3>a;l1Cy+q9*7lGxz46#?#LduI*keOm- z^P*enP&Pb?;W7dBA@HHbjaL`v`iYn1KvEo3}9Q7F!9|T9%f`CaI*~{=X~^C(yQ>rszjdnrtkyo0eKH zjWyD(;M~B)R&T7A{PJr4*F3sy-B;ze(|C8W>f(MWt@@_V$azWmdx1CjLFy#g<8Z9G zR~Bo;lc+y3Qx;Mt7<-BEa8)w_5fPb;rRx9Hjyp4t>upyTp1+8cjVx~&U*z=q*e0|b zHy2Vu@~45Xz|GUIE=XGH<;72Ax)FFFm7#B3=V7X5dvg)85ihD#B%kP#p>!}^vL!Gs zGD%F3et|9p>$`F?A`!59gmemd+|kUriaYux=Q?u2W&N?0VED;?{1SS!htTi9s*FiM z@-joFgEWJ^IM7@_`nBZcWX9_p7)TMD^un_|zI{tm*!aE=9|qmVA!A#_ebvhXbgo_}=X2pbV#y6RjCt`3QP7 ziL)c_wFKTserhCl6>k~7ZUpkk>Qb5ob5@r7jPQaU{Qpd(3o`*0!xo-o-R!@6Q^a@l z*!&(c%4Wj!oY%qw6L~+Ecf75=ZS0EN<~BNVcB4yrkv%nkHg0xPY^JQUXZTp2t@$yf za;@#Mt0;MFcyX_2m??Df+B~<&`G(H-KbXodY_`XCCUVmV&11eJVJ6A0x`L6vfg zJ;s8+gGz)I8ONe8Arat?u{DZ5-Sw-nVNoV*O$5D~Tt($lWNO={*XP3v``jxjXmT^6 zf3!%U#TXRWZ*_6(2UgWXL}#~K$SDeIi0k#|2}`v=h)%KqFkM!h5Nh-@vQc4c;Nn() z>OJsjn}UBSxUy^bed_@ECI8qKAO}Aje~!8IN&&qx4JAZ87ki8&%_j%2T!dyu&xiAp ze67pQlJ>fq&`Eu*%a0kTvCFMWAvwKn52c2h#BjP&x+RjnO5wAg{?Q&3{i7iC;V=}S zbT+L~Ph{i+fh9@_5(>`Z@CZkECuewL$u|AqKoS)#Jv=T_?M5xy^^yGaCU+ax_k^!Q zY4g2Nv!}iZIvj~h4-SoRM^>mcfu@LlT7a7ZW0{;{h^_-vxpCOq1=&Y0lu0>ggT6P6 z@jZ+19n=4JO=oN!j;*aej5U*ODuY%wc&CK(JnZJp;;eTtqj`Tqs5zC@`^dC&Q)6rv ztxgLaaC3Mue336L&~;%`XuC^X^nyR-T~~2thu^B*y}+&TAHLq>n}{zTxj_}KCS4V| z#VYyy)Y#yXMqjfYx{;6l%Kumol@No1DwKf#%@%v5vJ)E#G$A`E**ANGq?wr#p6H3p zPL1508o4VKl64gERH=%j-iSLykO3eO_X^(9L(Oi`6CU3azNd!`8n0z_U3g*y87~&k zQrp~=VdZ_x$nOb#Ve+MU z*GI{3#m=QPqd9m{PH#M;94YBn>8|~D9sQHUc1!-)8#cctg%BSdoh__8T8w=~j4iK8 zTlcMa4_>p}czeZ%sLi-WWWhBsaK&H5vP2(F&UwkkIcBE6?7|^g`vVyztVYDfxr?5$JiEb=?pg=_ZsKf#x%^zN`nUq3jK_iS#C{?LC= zotz-O%f)5dNvqYyS$jVx>~KVAt6R+ognw*w^Z7YZpN+SU{Clu6j4+b~8zf4l+NkwU z5xFi=|6#N77kHrlecauS-5z|AJl6FcPoWQ}%#)qWjpJ@~1xC~!U!a6hAe7Tod%TR@ zcCIEfpyUNZ_>KNBku-8wf||AHb>i>D$q{k;)lTly^!2H1H2ioH7%Q-c=QPD_WD9|e z9=3bzE@QZ2Z0PvlC)obmk8X7Z?mD{FZTWQ8pCuJ6XRI_g=e6NlEkt(*mk=jL&?|(e z2%$rb*`kHRy(qDWP$u+q2;~yFv4kmvQcF^F$XFTVlkj=2xH2^bEBI7@^7V~HiwieOITwDthc|GLu^N^+;fV zW*kzp--*2(DH2CfzGK0Ip)yp@*g8Rr@wUO# zo?b80Oj&CsS>O1y^ULY`e))qRsUu&;o95R~#lON&ivfmG!lfzopDbSPdt>SS(&BAP zuELmSwKuX9ZSzNhvCl)>n7ii-^m$aFhDlb`)$QsEeh?d7(wG&s!3&J5|AcJ8S1bq} z`QfzBeJXs?z7#cljW=Q|oGktD!DY_U9{lx2F+S1c;0LOF>i}=;SpcQP-q?oI#+%Kb z>zi8hQuy8*xHeqsjx5PI3pz+?;TaYBz?*YaU!Q(u=)HH6V-4xw!iPrai^Sl^kr|0u zo1?oawjUcL_pxna;|QE5xkorf#Wq;+r-BBYzJQ%wuhr=kEzMU2t`N`_e=X4TqX^`@pvUm&$vXC<^)S zqw_pnYvgwZ&J(hI0|-|XcP^*J;;W7M*LGu9IQV{YTi|va`x&n~^&1#|5xlgSL6J0A zNE`?WwCD;3SEwnw;dh%IcHeJi;=_(y!Qgs1E=j^K;tLZfR${`*wB}g+v4-^^gRf_Ay?0OKRB=@F&lGQcuG6TN^tCKvlE-%>c&J}KT4EO{=k5A^SpJc7^jg3XK$BFd zBVtcehu_#2SR<`Y^u|`v0mHR{;!hrSs@Gp5ebNV+zH$K(Of}Xi`veGS84s$sKc{t~ z;x*R5b@neG+Z}onCc##w!|Glhn||IjUd2;_G5!6V*FxPD5RU%DX0br;KfzD6lcya4 z8){07r0*RB4)LHN2d`&!ijOxozu;?v!@*miJ4JDqwnru;;0^0_U)$0I3=(mYdu5G~ z94E4k_ma0`jguCwpRxzfGM%A!y$!^7HcaUZPiey+QtTqwQp3z%{kLE2I&`$z8*qyy z#5kFJB#@4qS`Kx)F8ws}z3kePzD4b!&EFb4y|ba9mpe6PwfVN_b>gr=(T2WKsqUMz z-p<0=p}z8JupP;@_oq_`mqlg!xG%}~PVj8T2RiKFmOW`>kM`W zFWpli?Pgn%x^hVl(fi#;x57;S09L}&@zt(3h#*uFS5|0z@6=3=+==U*q*%3`z16Qe z#=6T&iaQ}znr8OYF#)cBX(Ro~T6*AY!A$+p$bAVd*SWGA1~31O?_~9OJSP}maJJv+ zZ-@AfFj?^(sXD|UCC{C`xS0zkp`U!J=s6T~MR$^dOLJgM_Vq;4zR*FrQ3eNm45E9# zVjydU)K;8Ow5GfdOY7=J2}mc*y9lHac<`)$ML6)3q@#HQ_%2slfUy=W+mxgC7G6#- z?dKL=g24zZ0ggjUW_234nCd5g9BA<~dnxeZtfjtb`2o)4he^6Ua!;>CU)!@ zWK)QFmcZuFx9UK>;eO)mTJn>Q`UkiJk4gGXlD?cj@$^O~xLh&c-OKF7d<7v9N&S{I zWFj*YdAi~q&>wat#UGQsG_Mc{8!UKjiSJ{jC6HjE;Ou8}k|a0a>T zT)1C99#r=%<%*@^9RXnd`D*tP&Y=gwvh-<3Kd&(IN# zHWRd3SAQ8@2j;jlORwKgHKF}}z3xIH9WMP_mTpZMoesX3?i|75G!-M_cGcG@ z<|jgemOLOoim4WToz+_N>%`09${9&<{5s{Y0dv{|~;Hj}fN;s$<2Y*Bs9u8%%!NzNi3VGC^}rQRg7tk^KE=XnVea z75LNW9jrCG%4Le1W*nBuLG(r$8gYN?oZP)0e@*fBShL#+oZ_l)T3m&6Vmc>NJx@f= zqfcWF!s;_&>TWR=V9W-21Y=0zCX~6ERF+Gaq9&=)9qefmtBTRG;<#3e20N1D4a@@3 z+@j+BoCZY)P6Xtw6Y$W{Iz9!?p=}T$9}6Krth61`BXocy-F>~2RMBUDc=d*r>8#%*W%)+};J7$|BHx_$NTbX`8R<@gF0&gn_>}av zd4Yuy;ad$~5l*7qJpS)A3kI!4uVYUa<`LKQOJDh|#Wjl`NFBjz z<>N1;&t>)}3qk6PxD@;h1T9}bn-I?m3c-TCHRyBU0C%UjVmqw)$|?92n_yNqB`Syg z7XNb4{ReiP#D3Kno{ButS7y@_c-bDGWD3WVjGPC8(TUYGY;$?VCUwK`z$E=k0`k@$`Jc?C`%_AjxJMfB05IM~>J*9SB zMlit`5@HEcEpu7x&A3*?hSG*1NycS#HYA2xdDSS1`B7;9AWX2`vekoC=)fphxaAJI z+WTFJSc-7??-sfcXC(A5p|zxK+gHRL?gp7(g-%QkynS>)9&0MD;9#{!LgfjaNC<3J zKVyf;Z|fhep^umBUYOL;w0mijG7Oar*YZoQ(b&?|GC&0K6y(#2_q1Bx>!WnHZ9TG+ z4dCQ9$x66lX1R5rYGj402}IzbHn0D$tFH6GVxo3 z^M4wizOEs`=t^$4{85P0d!0qgrE7k~wMEmP$~nw3qU;x5IxM3FnHM_hN`5o=an5dN9#>#fp2UNdkmvMgeACy}45cocjfp~JwTR|K zCT5%8AekDUD{gVu(l|4Pp)13XD**7RXuO$>cm1;gL;B%k!sn#BRev&oUS<``#Ef$9 z;SyuklVW=4*ZB)6$?}V3l?Nf|ZvaI!4DvhIWc_}aYl8#nL>`+k5q_XY{(djzMozno z4t`+i-+PF3^lx=lpwe*H_G!3Zd(6^sU$ig5h{(c|9CJjo5Xo@Y`NGWfm2+vCtIL@6 zH2cF^;`j&ewthPoFqD2f>*;XuS~Ycqew@Zk;44HESK*a?#X>|u^a}ZyzXsYA3NVhl z#D25xM^T-pPH1eMbPgy6H zhHcU*`ERx4zd0K33rvn-Pv&uvuoIIU?N({$-xTOS5Or5LOa0d<)LtJ0UzYwWDbywm zdjgjz5x*Cj3*|rQGT%lq+S_g%fBpkR3|m|#KrCjPv;}=x-A2PVQv_0bG*iAwS#}%E z4@HX=d*M1$ymlB{HY70GjW>m@o0sxY2pMJyE7R+)B!!aNYP?wTCFkghj~}72xcF_& z|1$|Fy3Gp2@Ct7Va<_}18p{z3CTY03RV@DrBY%51AM;};;xh54xR6ivt8S_L6(d{U z=us-HlI#ikLyrjqnU#v^pf&#~Ro1Mvv9pbR(3~-AZSA#aYM&5Yd-d?(0p;a&jc~jC zwb5UzrAaYb%#k9NuGQBM%FWR0zKtL?X00~1#D+TZL5%C`hv6a}fGz?cEcNc_&#o1q zg6}b}=m^hRoy+axW06gf+uBf3YR-{78wZJLIXl#iPGRh4B*DT@T@g_pOed&}CnQ#u%*#^h{OVaStRIW=9qw>;q+(nbW zCZ{Q9cZrdnhxGGpUVfzZ+rtCr8z*TZ32Ltf#dk3zi3P>D7RX-((M0msMJLGY9nQX* zd2g~1!n)S{4bn#r7nw;Ptz&!ok(X^t$k@b>i|`sF!*h@?~*e z*0)3xi?-$}Vp~5Yq}RPm7S#hrOY;}QLLUxt5hh~LAp6R#Qr`5shAGcPraXgef2(2o zZ=+|66@m+g^0Cmaj!e$OKd290KM%N!t_GLU-H_*sBN>UHx0UtgasmnE1@eZzm>d{ttDAuxp)V4G+sK*{+wyZi8Yun- zxYM#J(VQimgh5xyB?)U|1JKvSA~djnf8Tnw-QO}A215x+LmNmPIz9SWN+jUruBf{e{`MH@u8 z0mM0W?oWgx{PA6DIBp!+kiWV=Nvs=Zlf>#k#@`Icz}dc~Pc2O}mOd4^(`7cmr5kIH z52wp%b?jrs4{gpA&VMRg+`y$D;UH%4RAcEQw!GrXH)Cn4zLA}*dfiXx|4{ev;C+l@ z<2dUY=d&j*YG5)z2N)Ed(ije`=m}3rMR$zzQ=7Z4w#L>P31FhNKE}eIAw|7TP7Sb{ zZr~Pw*E=4wLX0^GJR`w!+wx4U2da`gH~S*2a!fBeT0ci zYF~PG1TpTh$sT1z#gWBa@n#|a8`PqZ&)#)hkZ52?;of88{!>#4C{Rc_Ll+@_qcPRa289WEz0~_MW zW3Ptuw?7RR7*9#NM{^}qgi9Xw?PlB9B{EB%o@y?l6qU&6((4|ilHHl43ALn1qAWR~ zN22ejL~CIDOc9>A8W-SouM1sv$sTcsuZ5?)$aPg@4o}~JTCrgy>uc_BncG1l)G#w<7MP0p!Q2zH&WWw z58&;nMUr$4NvWe25JF2=CraD4N{6(#`I*2RHh+VG(maGXF?uas?J}mk$mIw$iXR{> z3Uu6Q7N$W{wnl#rW0hiWI28h}DWiVDLW%-Hfc-Zy#E|q7k~&q(BrsmJEd_uekSZ1H zbsx!RRqJE&b}|^K2Zf+hI*TRx_GqDqObUI8(Pfi=cwppCH?XObd&WNW6Hvb)I-}D{ z`7=^lW&WC$SoLHI#-+>n2@Y6c)a!1w>P|G0^!mHWW4tOGbQinLJNeNM*?Rq-XprQ_ zRU~jpQ+M0QzDgy9I`n$EAzJzt8AIQSVH7znr-bqZ9aFaZi5;tAR}ot`mDi*BYX<1` z(?uJ}e@a+^=r%I=AA$HpEnOj>U;qXSOfrA zH&wl2H3G_ltVI3lPgbjC5<%{O8{Q&vV^kXi z1-)DP@J^VFd6!cKcgINubW4(jA7fwCu*c8Y3c%HN*M*`9a$M{|pNxr9yRpIQ#oyTt z>wqaBQJoCGp;h#H_?sff2Z08egnTfDa5I!3+lHexcFv!X69yvSBK?trv(}*kkguLw zbzwV0gj?4=!MkxXymXbBg?R<2e<&hlAb zf2+&jw6KERB(jyYXWyoRS*UZ!F1Z=oTmd5JbkHyiD&UP{?1N!Q zbULWe%r8g;h<1Z!a;{7oB=qKM)gR%y7W9a6V`5p1?h@ ziV`EqoJxB6y^7xk0#9$4L~{Y%E}Q-?qV!1qGn+sZH9jRZqG_AS(lpFRN^OmfV8DrD zyg{$8BLQf)DHLVb97C5=$#ki-!6SItBP7WdVpu1u>KlydFPfb)9!`y#LDciGZEa%@ zdaU^w!%^ROo1ii9-G1`-EY)ogkb})n%@e|hP}!9_E>}C5Yq5jZ{yBkR3jd-3+s%t; z7c25e)E9{%YJ+(P6$*{MKz7*BhT#&wG&Q=Eo)NHz12#yzgn-GjAXaQN`7fHkm9m~a zr7VxMM;KRdJXwYFz@m@IJ(8-^K}CLlN${(> zZ_E3@Rv`?H7L0_%I3;eklhtJd%?*x1t$J*pnkAqzPNtBGqjjqo(e(R8rE{w*d_J@|PG1 z@{!`%Zn*^km*H1;0LUKyF~l@X$QX6Tie(MV>ZzpIinzV$^rTX*z!-7L`L|7l&_5od$iyO%J2)dIuKi9S zlj4!5;{7Z9K8;L%FI}-aFq-;gG)@4a7MWNq%ul= zwn7VXl66`=W=t?2OfR{nSF2eFQz>Y0seu9t<8GK)TL#!P8+U4D&;cIer2yG7d8_UMh)0(t0TFI+Q;x^p4@C!-UD(E0|O)Tr>S{L6bGQ?)OifpzEK8CX|g zNEJYwffZxmo`$hnkf=Yqo6b^W=?=@L9X&2ma;sOy5%={4GA`jTVSK$s#tYWokEPN5 zdkC^9h;E{e{&m*yn^v7=j|z`;T8jm*3=hG~w6O9e`vJIt&=?V6-iV(`z8Ppp2aUh7 zy)!*NUR~_xtG%BK)^Ft2av$e~7YTQi6C%QfQxL5jTokmsqjFOT!{L<;P#O)gPU>)+ z?sKWu7)y*jF64Ks^bTw~mt9h7u-NtqAqF~Ro)M*m=?a*0T&=ZB+@rL>H39Opp`u^@TEt-JHnQ`ZxNH4~X;CL$%M2(Ew zn1lZv+Eu$G!KE3k!Owhq_0YG8r*KYDLelB3ZsnddlS5cEnqwlvL)~6%1xR&$eFsM$ zn%w&OpGez6@9DeVOXmJp-`?u;^z}FOMyh+q>A|)Ubg)EL#jImPba)z5k`Z?xL(b=i zSB^p6>1lp%0G_L4IA;5f=#P$qwA687{gE!K&EgC)(^nqgbA4~*Zmjix1*4o9Jx7qm5iPd?=Uw6@X{%wXel`v$hyR&4g{XHw7Dx=e znxN9ciL&-t>zHIIO}8slM|U&KWU0-O-^SaNoJKb>Jk#v;juUj%`xc>iMgM_dG6-(skeG69_1Xu=#$VU_$1_wImZ_$b@&$Z*qVHIl!v1UROlJFv)QS3Azz4dG(_N z6J;55)MX63J38uyW(G5D?mPJ6QZfm4>q{kLu~$rC99QYP*1$0E}{eM751jwN>^*DF5kCQ>XHuE;|_Y_1_mFVMn!t z0Sxf9$J6wO_VYEej4`qZW3vaEV>ql=1M{%#<6eKM1EQiXn#A)dZ$2L= zkZA-9^=vZXjv=9o6D%(*R4>@{uHnV0FC_JqpHg3eQ=ii*<~U$gH0Fhzlqbf4>V>ij z_(WL@P~!+kUO7%H2hZLKy~A>=(Y>=fVC|2D`Rwct9v9w|vxyv&Gw#TF4acr7W3gx1 zxpLm9F_n^fN$1-YJZ!w}duN&c0yx%;j;zDGP8xSKih?3eh-N~q#=s5Y@6fypK?b_j zc_l?}=6+_aoYdlk(r=j3N-MLDup3>J2(bGD#w-$ieB>r^oRq0XyYjbb?AX;Q!+pXJ zw7_r~Y5VCp$*mMza^9|Tau%ETP2kV^Xcv1YjNb+R&AT87MRHKlR}{Q{cH1N{UF%L{ z$}fJH9;blN%c2UZ@dn9daEGxR3{#?CZrz!+h5M=~?PIG2bA&C-ghtFOp(@t5&nI4i zKEgWfH3yb32W{YKit&aQdko+mvMNp)Az4idOM5s{eD%GaC24e2;2I7bZs<|_xU;%A zWa!(xRPLVe(&=u}YEsC97m$hL(wutAaPcwY>g(aO-vQ|_Tq@}QmUMoAx?xchi8Vjv z4=tJ_D_!4|hhD%9DY8^L~9ls-JsCF-5GeI8&=-*U@+Ba^ z+j_n7qrhust2nFC%x9!^lfeYE)JW1;J1k}n6M;5!1wU!{v==TTVfX@e`f?JjJ_e?Y zBbLSdFvDoq{>xKWh1gZI``E6~mdn%v1H9t9P?+T*OHP$Zhrtg~2^4v+zfi~<>!8$N z@pYxbi4Zcy`&wLsv-Gzm;kt~~0>o-7;6m0==c@)w5~0pPVw8F4Mx3Lu7`5g}<>kMT zw3uthhI+lr&R4zY%*RhTFMrDmRR2hZ*fY2!Z=(3-l6Ud4I&wwirc`W#m|w!UePT6J zPNYxjsXh#{JXzbDyAxt(q1Lks+lGHQxI0@#9}7@*8Bg=GRV)4par2oNbr_MFwmhkeZ*OET`%pPi6#r+8U~ zVRe*oZWRYrgm>aLRk=ET=yeoywzO;qk-37%=FU_$hmndL>7f(n*JSN=ztQw#CTgriaZxwhs@OTLH_WC6X*i_aa24+^*-wo?Cg~)V`^Ahk zgscesQN)t<4&|F0?Zt{m5bmMZ^pydbidb=SGBN!5f#R>kNsEUNrPm*_e&tH%0%;lP#X&U1 z1kUb=+THN*Q0WHoR7yk0s^2r_jSY0EO&4Ss!(M_tMHzIkO(bbTB;v&)4T|DyZ}vW1 z@HQmveOG+>KJ+uH>1b{r)hUI)B$49&^r081k;2NDe)u*6W|?(Ud&hwHNf#U2H{U-) z-ul1I`yky1Ks#_T+~V4^qhrTEgze^D1>B-vio;DoWXD09Tmi{{-$2%tnK@W9zBCUF z06>o^hF$cJ@e(1-#4Dk40?lW+vnwiIXr)m$cgiA-YnwR>M&8$+);dL|k{5B70m?G= zoYgMKks)_S#!SH`h0J94hQYEc#YM-$_ju_?Wc*TInHAL}0vJ<(hN}c<3|~X3Lx@=Z z0cVD&Tl%Bt@f9#2RQZNj@-#<>?RBfGS;Q!PF5{GXg;pLN#5-aA!_Z9oSzSOU6zL4< zP>^Vxl5o2mrR0bJ8bdv4Udn|yTC^O4b=h;*V|w@`pw40s;$0Bb`^PwI764iXYQ|Uq z67CF%C)=-RNw%~?nk5T0k8yak(*G1AF`omi)H<2Gnwf_jY!RZC7#ZJ$V#$ycs{Q>? zV#@B2FFAPB2pisq0Gp_f!zB)@_ zul%z`W(8=PV_p2oc7dBTsY!}YNFg8oV*WJYA-NuL1m9`VSUk_*w9&Ph4RN%UUC9@T z$ehNgV~9nQF|diKWY;ra6UoDFo%3xd;o08kM?k7lNIO^^;;6j^hNAW#_Q{e2eWf9i z0IHEx!qO=R2t||&QMthk`$_(w=vlB}v__w!erhZs7t`bfVm)RQ8nbbeKsH6CEa8f} z_JkUMbkfQO3M0`|6gd>Rf+i)em$tFw;ul$?)Te18g3Lzr>b=}Ao%0E3l~fRh8g#;q zls8k4`5>h?3J_V~mP!lwWPO`tZblnc_P=B8e94wCz&X}jNjyBrV~=g&eHRmj0|SrC zJexN)@Ez>{ij+#rq`SDS1DP3 zErx`;XhcY+VV5Le&o6VHeAbP@H1lScB3Uw9qI(jTf_Kc z_6o7s0$Mx`yZ!#QX;dM&Q zKROV&PtZ*ezceG0O$u*|RwV-($kU7#eLVvdhXaB#y1NWbp9BnE0E`c*!PFj|20XsM z8e2~PKzsGNM~rpB$N@xauFK_Mu|QZ`)~dy zV_wqID1mPz_;N+pplMnTBd)$9qilH#25!ovY%g;|+5{|hTSXTTtK>8YA#^`3idRmD zRzMwwyqg7OV`4*PJU4&=ef=a5UwhogB1hl=3O1hwMx{D5B+QMouzApBY0PbSNcW z^|t8o=2f5Bb_iQb5N=?W({aY;5z{gz<@91CETFbY=J||CDW8Ho(xbwV%^r$Bg-tru z2+sGU^w*y)M%S?;cD6JBYu_Q>aA5Yf#v0fEP>2Ror&6l-nRJKM6A(+8Z%1(Z-nUUe zl*(>2cWiENj;3(Rw@4`YP%AbC$5DD+nIK5R2B335m37{2*cyG>OTEM2;lQdl+_5kMqgB8DG1 z1S~!y;jzG%Evi>K&{_lGT5x6Y#X9j0&w#{HBT2``a?UW)qu=?B%^gttw?r?OSq{b0 z?Z7SWpv8?@bTYh-akugt6sWi>%Ucck(!^6nv@s?l>Y_YWD1{lO1y}MnBi7&uLT79$ zl-wq~PVr>RAP8on>);4BcLbO>;Xk2nnLnm2D|GUjYRe_X3Lp3lV+e4kAuLw9h0T51 zewNJTP!rCI5}rCs1zf+V=K>nN)Hho-OWC;^9CDNvqeiZWoe3&Qt~zk}Aaj8rvZZ!e zucFt_&FvP)i}QmYuvt5tubBGpo@U}TDFsf?iI%ui)kuB{-7AZ=?&w>no0M&}8jNj% zx$t4Exem>T{d@8+yaJ>S(6rvmZk|43i2mjo%Cy8J zgzyR&f)MnTEm9@|HPn=&uo8GkvO2|>SJ1g}Y;n+D4#$H_y>1pCkgqG(+4-Fulp_VG zZ6CJ&Lr)4;^!g1nORy$;;3Yj-HM2vA_6(wI2)!N`isG@+yG+bY2usSxmg5yd<+uDY zpN7T7scn>9yjO}Zp?GTN+M;7zwc;Uln)x8yp+7n5k4`&7DnD_oO2|zjO2n9DpHO4} z$MjD6@5#8@HxH<6Qb}WocpqciTeUB!aX~iv2jI; zfA*A&WkR4Na-BO1??MT&{MLNouIxxo zl^~?NM?3p@e65Q*vHgY%luy!DV`@)Lmw<-b%WiRdX`Qa77z)kz1YU4*JMz(JvnuIi zW8Ondo2QaFiK_;1w;D-**!OmIW_VJnx&VGi>^!k=48}WeiZVEReYtzeYm#Y zzJ+ZMY#E$B<9Xl8_r_W-q3=)=Y(LaFA#zg^rqtuZjvd%}B5McccztCPjZr8gf1gZ-ew zfTDAM1$+KHxQ}sB0DjXW)4p}g^@i`{ve8*5T`{Nqe?R|al0O#Q7jnEyTlQ-luSUwQ zP2MECBxAp0Az>0%C&`> zk3i(iWoZt8Q+Jl$S zKl(<_VsCcgfu+;9Ky@J&erx~I?Kw@S?9Y?+5zrxAUQDH_k=uI1w|L~Xmq4RCGQ%da ztGIDu-B-aVyHMO=?x}Bf`*s()-~oUI8RO07gPut0RmNK-#&^D0@sY$e zAM)U5*IV;D1>+qoZu&hVq?YuMucLZ2H#b-n=+AyCWqx6Fl^FN*3|CpB9#P_6Mp2}!jlnl_GPsQ8e}2E+Cdpu12%5+ zu&l)uh1`dlqV7ZGo>S0}1hu=PKW1hk1LtdkH;}^Qiu{?e$NHE#Z_f?<*?8@F;g8C1 zP-8=*tY7Nu^IQ-pq*~V${P?+E6r|@_9MU!v^5=|6y5mXmNYXc+&y={of7YovyV(Xz z>%F1l=Po*1?c9Ke;fSNa_httY zjC0}oMz@U7oZi@Tr;K+x(yi7?@v4j&5Qo5%+(v;?-^{htWzn~6QI&nObHW9loTjU1 zc=ShGm=8#-?0RaYW4w{;WTyg?etfz|#tdQ$3A!eyjq(l&mN(d)K>^j3P8K*EuBXvsa;hWu9iEYylOdQz~90OQ;I9#~)|p6F#mdz!IJ z+|bLYqWFre+74IQ;S+Y)Xorv3VS^pk*Ap;Z-;AoMeX+>@e33Gwm?L4!w4mZii`hm}-X} zJ4~^|Bs+B5p=O6YRd#>b;b(T(WrrWzVbl)ax5G|5++&CBcKEs-w%OsI?QpvtZdG9k zzNO_qi$9CU`&>9iHiBe~um`q%$ibDr7~R1f->dpVzk>a6SL9!VLoAK^wPVL%z1wqM zJN7w?KJCV;9k@yyS+fY|A={eCXKqiE(^aXYw03<&o0~ zV$({(J^b-qAM!1l+(l7%$T?P&k>Y!^N@iL~eEWdwq^A1b4BiqM&pxKUy0Gvy_5I@f zLc6i!*s=a8uBP}!gL9gEJM_@ZUT4yGGjHm=Jc~BUZ@8@$IQS4L!-^ib7$dwKNrUq$ z1m{VE>6@HdU_*KEeBT#~Zf5>=;@D9G=SuPRch}6+{}c^FQIOoNki7la=dqulR!D75Cbb_jH)EqhubFiaDTxG z{VDp#k9*`|g|>73TGZhECC3Fm_4m&C>Ui?Ae~N$V<^TQpKZXI!f$Vfa`JxZxmV>`w zZhM*TMEg_!zRh2Gmq%`_@)K^^)Z5#{2PX|t|L@=btr%by=HY4N(d1$A$;FevBM!wh zp#`1<9{KLF(?~ieZ2|9d?DQ`3BuYNk*vd-h&Yw4LcJ=I{nkz@;j4moG(`L`EDxP0j z9Vo7vT~bxJuy}T9c}azp@UBrgS6OLpTr~SuJJtBI!s_bcYVs8opDCy2ALdt2wjIiE zd6(xZJ9N_gD`Efg{*`=ATFI|5M%Iq@YfU_zJlfa&+SxoAJac%ecpm5Z1>Z8iR$k#P z2P2#livO!zPNskSFJp4B@V4Tr>e7nxabDiN-xz(>=rLaJ_=?JVt4ilD2zWEcXL)mc zzA>Y&%+C3iBpF>%HGibHVEXt`x0Y6TGo*yPU|>N-RrNUUt)sm+6jueS3(HCuR?k~- z??~_D(cVd;y+y^|>r3Yci%YADiz-HXXN>laFD@&t_GbKJ=>GZF(OQW%d-5%L6Y?i$ zvnP($<`tHgR|LGntNDK%k9O#VO;Soh-px0RALk90S5{R7isuE2i@e2ERTWj<(sJ*- z!m=`Nph7i2uiyr6=J4vQ!P?X^jUt8@jq^%J%q=YP7FNv=##bqT{vcJhpWh$lAq-g?had|~>{sQm9;)NAe_j*eJ zY;Lfmq`1mU!4>lg1N4u8BP}XkTpEC&rL(o_K;gW*y%md!t4hi$YOLB$jU(4!J6WKr za9;6TGK|v(CyyRInkJS9c%@v8c4~qPtt41JPij*DlGzFu77Csg1k3O4OOUJ3b1emA zQdpp{v`k^Lnjcx(qQbIZvA1|}rNXslHzrU~;VlD=#oFZQdDq=ClV;4Hr(IJWC@L-2 z{Isn~tEen4*Q(}fRmIj@abXeTTL>{&U0hXE7$_8=oPtMs=d0ew>n^#d)OnpUO7+zH&-M^r4Q8Bg8t5{eGkaNq5y)>n`s&t+=aBpRC zwYD%=7AUPGS_bTGQ>qzW7ENm!lptf-yRfu+VPRn2f^pu$%F5B+^5WtmhC~VDku0i0 z2EwA!BE}#P{`dc#*3YHoMa7G~6~TbFqQqNOSWZvREvzm+HO8AV_^jk1TA)x`2Bllb ziuWlhFfm7yG8UQ(X&K^+G0|~BMsIV*%g&Ejxk>q zfRKU=XqsNBRTl>;3mGx;A`y^`R$5&ZEHAfcm#pev?Zoj~JLVivxY_wp%L=RY~MUD=%Ig&@41m3b)i$uW40< zHO2P?3(Mq%0Vn}wNdVvgulj@6zS08~*0|PWENF|Z!W5kUoj>o>#>P^=79%W}=hsdU zb}jI0u1Vvyrn!D?5MeF9QwhB#e(hqyuKCDd!ZvDLMf3kYWrcFyu^cS`(s{aUfa7a`N-_xJqTH2R~G`1|=?OL?_~Z8QAZ zjdq_*x5K_R*N*FZ|MG7orNw1M@NFeE=fY@;=fiRq6>Bx6MKD9f)rhXFs4i8}fvS5& z&N1u?=gljw7G7CC3W)@bAsFYD2CB8fs_F%$B>@J0d6703UaHNlsM6*xmOlX~6#*ua zD4>-giVFk9TA7s|#$1Mg(h$ok+AiiFx8>X$$7`O2^b6sdO26hMY%B9?!wIwRp?~Bz z@uLYV3C9pNR`|7C!ZoCuAmQD9?Iyyua=$i}u#))O2@8mi|EoP|4TgAx^)j!boUvC< zvv~_tRg?)g3(i9f6oVwBT?L||qHbfry(vf#$H?>R>h6 zO;Iu2u%c=qOizl`=8>3DVAlyX1%lODO;ur~cCQRh*tQBSxpP`GwDD6Q%SQMDVdeLs zd&0Iy{n~d38z1v)GYRMLeU^M*>DT5F`U&Iz{tjKozklhMB>DHZsZ-pi{yRVZ&yGJ& z{TpzGf0AH;`yYS*+Y0~higEN-TOUO0LxK7`3dm`Sy=V(@b`sZ8%7TT=b>{}>U+YCt zR$OT?T8D~)dKaR7qJGGvpsaXNF?vpaUF~jBa$r?jNm=>SKv27u5*!FE&04Fj2v)(Q ztC{ZwW>;6uLpd)mE-EgOzZ$dcK>y!03kuOnf>l)r2Z`6pgO$}RVTvc9J=3P)xaW~@=J;Ktt6&SQu6rlK21X5U9 zFkX9r$KYAX^8}B=g{UktqfiR0{7@wlDvJW4OuNeDgT;)i?mbn>;e*|0njPL%!6e3h zFD(+qtFL^1sPYM|a!*ldB&jtYV6I`$(Y_=ZucJK$tNhyYgl#|cYpsOYzw~Rb5;p$K zuf0X+c@p~pVddj~?PG~2-EqQ#C;XcGJLLN}csOA#;YEaA!Yd^HCw}egglm56*T%|k z(&x)}!UDpsANfy(^1s1LGQSomURYTn)1EAh7#2ZfG2yn*q|_4!sY1+3*gCWB`DGPz z>7&{CH{T|JH2oTQp8lVI8vjl`wZzNQABHjfo(D`J`#HjIdD{4$@E_LW#5rNMv_aszXvREZg-|3mo-xd%TK@f~UmL&n%+IfW zd*=ARm;N8c|Gj$Z|I4bQ%??j5V-E3No{xTKJwtyF9rEsk5`P|X|H^YI=`-zezE1c} z`~4ci2|PF1zonji;6@&Kcb;4MZkv7JeT4y`&VZ-{!>hf8@<;Iti?L#sDJ~b$%|B~S z!uNk-ZRl5`n%;|=Sffg}?Ez;O}CH|w)KkXXA$giet$@1x@Ezt3^v|O z;pk%45R+4uHn+5#!KMXdK6aW!QT%i~8f<@~Qhcs!t3jgh#}yeQilYzNbBHr5Oa0+f z+6>c&stTqLh2HU_q+0J>Sa*>C#(c96>sH#5s)~gosH(A7kfX0oO}pXG=y$I$zap$8 z^b^Yaf9F|a=f7A6+J%pwHTa^zn&y9QeCM0!qdWyXl{{;C{5&^&$*1W{ru%2*N&OhI z7BXj$33%LoDdU}3hYeU(K=8O`FL3W;E=t%&cG}v5qJDN5`?W?MFHas%A@L9J{Hy=4+Eg-Hq(Az|(y|ei zR%jK~3^8Rb#2B|g3kFKY+S&&*<*Tlg%D#&{y$hTW`p4yILkK;{>GKE+KF`xGCTw%( zX_pYLosp+qN|^mxo|Z{io0+GLBGf$BX;%^!{0ccu*m#fsOE*L0DZ{QvSeqDYgip*X ztEfhq8(zlbWBBNtG4r+AH{3Ft@mCoPXxHB`Isa>#l|<#xl#Qp~m__T6L8=O|QaHvk zi4yK&)u{4SX;n3a+T6I7skG0(os_9cyqQ*^S@y5tm06-(GA8<)YlS&tjjJri)T<1T zcI{$LR^TW;XbqAY)w0rZX;@`}R-CWJ0YS#nXI4$%q_9k;boa(_qpW&LSGSDU`~^Yu zHde+e8~cvk4)soB+NWjQPM>{myp~BQ|J-&uKVf+V3NG5L(vtZ-i8MFy6xeB1%TddN z)eBS_Oyx3ntS&CTTQto@7}%LJq7+!tzt1vl*YWp)1(e@-7`{Td<~a5M!fe9(2>pq9 z+H%6K6Mn6Zuz>Ip!p@_9?fVjv?}rkS-uY+YQkm{;f~izL0t+iue=DP%lbEo7{c|YC za|iR)zglqA5}wcR#$(ub2>txNj8LO~fzJbcnfz`$32z~+?Xuu2AdLU}CpxLp9j_QZ z?+Q(%qsAyGFD|SSQCo&p3(4fg1gRE%;?^8Xs*0SC)2TH>Sx~$fBlEmcX7=8q()p#V z>Nx8k1(jMp#>$!6s1fLLWkOuor)@)~%_3xS#yp9mpykY_N~;%;Ld-`pG&31Bn2Y&Q z$U+74A@6Wzan96CrLs!#7BO8~D9T~~VjLz^inU2rsqVi*n?CLOQDZG_MzzCQmSNez zO0o2cceVH^; zo}_!6@=s5HrZ|-bxGQ;T1s=jL^AyED-~p^g93b^g8bv%%d} z=jLhaQ@`AEQ@^zR-@k1Bf0nN6oWF(ROmY9Lod3UnKU15o0k;$S;aA!)^0eQlx9geH z`t29??^T4KlJ_GUpF8bxW)mXEwYi9)yIBj;ie-6J{*;y|VP~zE!sy~AZ;hqe3XRW9 zWv$u0ER4$f0EsaEV+D1LIe`T%1*v6M>^UT=Ss+VIU;nx`dNlu!)~>lmyY?C__Zn>( ze{;2Kuhqtl({hU|O0Ly%EvCwgz2GZROppmIF39at{r>e7B2VUy*9P(=^94}o@;pWc=CBB@!Z058_(@Lb9hR4%6KYxs(2Rh+{?3sXF1OUJoP*c zJYk;4cz(?D6whyX{*`|8yD5dusqMWd5R?7e+4eJoo|I{UnTJRf_V zta&@BDOTtK9Z$nz4iU_kVl~Rsh$~^$uZX9-sA8cVpx&V4@VWXPmN%tzr9VhLS4tfV zxsQj&%pOgJhQQ13>b-u6WX^BPX6B&705@FlrdD>Zom4xTW zZ{jZ?%;xvSgr1A@v|)r@m*r`f6Bdwvl>8nJ50u|mm%gt)uxF6@S7ce5|BL=uURh>A*;T2!>FqQ;ggYOI)| zZVhT`siiiy)Y7`v*wPkTe2Ny^-JSpUckXk)&D=xOe*RDY&+~UapKI=Wu5(@I^*YzN z&N@8lGe6oYTNF1N|DFXJ3?aUeEK;OLNX9o>`t9JRP3f zc%FDkjxv!So&!9a$lb<*8%z)p^^U}PW^AOJyJm1E%nddu&C%=bz9^(0a;dy?a za_jSyeg2buUbfFr#eI+W*4KP+{YUD)_nWs~`J;{(o&Q)<7TgMl|2=aY3WJR`cWF(_ ze_eMi_`Po;?C1VihnIHW%f(&TSef2}ir8)}lPx{lkRj_gAzR28I1+2wK>y9p5Y}Et zH%=48v&hcmmib8Qbif8^yXy@gIUQk^WW0AY@7Stki;Zu?3{%aXWS%Mfnvouy~ZS8hc;X*_aD3l zUfFsJRx266qo#H3IxU61cE)R+*S^-#^usO^C`}oD;oO@=71`vbFe~K-v!tIfHV2J&~^X42Sv z>oUGyYu`63af|Q*ZVe-sE!#ZQ-9Ff5Sn-$e*^2`Lwq=%zr;jvsR&8=}9l^D<(v$V1)71q zz#(7^7>|JpaLYzF^{ovrODxUYbn`9CU-_z6uXv5KxR2@c4Nm3eg`L0Q;Ayomn9BP; zVGEh(p;FR|khazVrqWwolVFkKw5=u&{~v%=PR8_@4V_UVO{dbWk= zGQ9t{J~I-DGCtlWap5-bGoI%2%>U-c>{|a1eihf<-e0If+wRS^G&gVVt*oeQ>D?3h zwDIY_{?w^c`=4rQso1h5xn<7ln_swQ-EFmwhNso;_a^hGTDPvrysT|(a_VbaHa6du zGcPTYQ9njk956m9u7Jle1=BjnlmDcBiKC zHm6ZvRk^h_PSv{gPSqy9HZ(K=>z$2j*Em&c*R?o;rrNbm^}4myxfUE7n%Q)8nuK&( zYB#i)FVc0Yb4^W7ORllWysRfn>(@GU>()1|Ti2{7193BcRO{BegkA`&O^rlT-L!7Q z#`U$%ZMpTi_4Q8erk3?Nz5HUIPw(JzPT(=%kAQCi-v<5$cnbIt@KYcU%16@EjupQ_FhJZH$dx5tChkzr% z81PBpv%q7(SAjnU^l{A-W6oeuMORV_!o9U226fzU*|#ztDbWa6^IO`#b*b6RaTqS0 z;hr7F`_so_XoXFhKJ8-4yc+52VSUM%3&tH_sH?+F47%|*a5~#}V|n#qKkQ~~bav_Y zZhiF(b>dLQ$E4$W;)J}}d|zLd(#ZC3H)ZV69&&H5_5N+oZK>+$Y-qe^$C`l+8+YA4 zx@q?v_uaX0&z|`m^GD}*&Tp9CIRBpcJLa#MzhVBy`Mc)dK7aT8JDi0b&dZ0HPcePM z=a{kIbGyaAr=y1|8N{ess0BrRW&jDG4A7eIHGrHcwRPBGCNz|d?He|~n8?Y`*A&N@ zH-IeM%X|Q+1J(hz1NyKY+`+tCQFQif-Kyd<+3M;T0bv}(u@<}fc4BMnz&o6WtyI_j z0Pm$80|qmy_}1r~2Y61jur9~*#Org;L7o*n5Az&o&N=Vnnc+Fcb7Ec2`GoL1KgILX z+MLN(c0lwRJ#$G1!8x- z!@=bC^POG{y;+|pzEE^#Zi171BnkB}B+%W+WI8-RUYI59>=`nC-lhuN*@ZUwO)kUy zPBm`oc*G1jixqCXh47ouyO|Z)cX|BU*KJ*CXNxSB-9E`QJ!V(@1-|(Jq(RHTt36o{o@vD7{l2 zgqomPf?$E>mJef7e*_zw=RW(c-(#V7{T7@pz&RGLu#A0gv(H03$L;%1#&Y(&28|Fn z?mMPTgRCG8_1xFRhFRwgp0}8hwW0J~H!WG%c{gg>-83*{5=DT$Gyg0Gn=78GEC|uQ z3&+GBVGSL)^ojpHF!D*(E`eqsoMyJ*w;x8{&H{&Q_{7uXvoL(@=PcX1p=$%iZTxA= z_k7ZIfM)wUYo8vSpHKL%k10dO(pT{G8ba>)UIVGgygAY)8pJkI`_Ojwgb8Di+tz3H zz|^kT2JLJwMS~)2uT|sa>U7XCP#%>adU-UgPFIUVAg$%i(#PT z-BhH!J3o~(kmmXCzfZdW%|Jy6y#DANjY3llQ3~t;A7lHPHqR)~Fs?M|ZFn2@8F5!P z_Xyl`K?OZKOlt|HP8qd^(poqrqZOZHAL_F?=P!6VJO@4loS-lAoM9o@3}n79-^TP} zwu-I84>kl2JE09jpT_HQi|&TNYg4xAjNiF?2nYLvW!7LT(S`;UY7vZ!{t{Cs1E4LK zKlHjD0Oor%Gw_OxGqCU#omvMoc8)6{R$|C+`=T59&Mh*gWX}!`DM@fx63L9>PcZ7v z-ZkL0b3TmS(DeL_pMM+6Vs|fqrrO%uzKsKNUirLm_hd|da|_-J?N+f_udH6qt)YaAp+?1r7+Q!jMA$X2`_nzUfU-W(aE77>)_`US^ zLMwWu>w)M?#o^&IUv|^j`z813;XPhYqEvx$NMqOAuWv8Rlbje?_2kgscAzC>`ff3D z>uo0AwJ6=b72#IM)=p z?70!6psXqh+BO{MZgwn|8{Z8qM7pll8oeEkaWTn2_?Zu}spU4mv(22KbG8kQY{45q zn^tH(dLzf`7_xQjN@hR4(1ec+;BaDGfy|eNLi&}KeWgiCfBt9>_VSUO^L3tWAImv^ z!gK5kj5jvKS@2hQ4tyx*O!9P& z=A7jH%maDOzxoKwy-^XZ)PJf0_hH|NabIq`dez3!Po?&*ksdy{?U-4bN7g|_^_ zljyX+$T_vZIMA%$zbwFi2oS&G^ZNbvuH8ngG-fSgv&S48v`1d;Pgmt>2FvD?OW~u| zwy!N+|362_I%v!uNF1&DjXBV1hbLv!wtJuGy)szYL-I63aPzj%os^pLAadzN3?TTF znn|O_*FP9JwkWb8Jnyj;eF^3$aMvyqBPhvf``}=^YOJ60SfQ;G>&Rjbs+dV3N0Nxh zOoY=qZ^GuGb~D&X(_yb*d^WRr#=G{_Ia{YF@gsl-f88wNk6x7f2 z_9BP>o^xKrGxNXjZ{wN%Va|CO&%HljUyWz;rJS=|;Xlebui@EtF_70nd5mkLtKsZ9 zYC5kvy$-PL>XCW@;Z{t4pW_8GksR*E&ysVvU_AvAseT-N<37x(xz<)4nd4iB=3wj=%TTx8NBVXs085Mqo2W{MFI(xn zXw~KC|NJNQnRu|;c^2?o;Mag(2NnP?2Qt8`fJ&eWXaLp$w*i}h4xk6<2S$KBz=OcU zz`Fo{s8`3_(%;|P#U^gl@5!zs*>mTPdw7a16nP6c={Hw9Hvmh4gTO0+N}w8O1cX}; z+yUsgg^b9bzx0~N>rB0|BpChJ4P!aS9COF}K%EiGg@pK+?3k4&*X z0!;8e4(R=tfdTl$?|Nq2IUqHMSEFNmk-gQWa1Put%0K6=OyPh!I5MCtTjynrU^d9_ z>uMcl4UwUdbBT0o?dr99Gg7^;HRt5zwb8>lP#x-wB*eCq_BqXzE*xNdqdh(4x|8Xc zqjcU??R9!PZ^vT6J*02M?WtxYclB&!9=mX(6Zvhe^@2(GUCz=s zeRb*OyYJe&^ecDc;EF}y87Uh4w5gqcrtTQxzJRS;<B`H6NsT{bQcK2wvXL z_&T%7`7fTCXH_}ZJjD1uyULlxbK;sRr(DmnD(4*Gk&j(7bM?BpYrwoNLOiuH<{7-N z)ojYH9ceX*I|;ne;OR)6voEP~#^$-u{8INhV4oGCFpuVH&kTGOmREGPlI;Z0pL1ys z+rw>jLQcadKdp&v*=;6I;Sf*zF6vvjFk{BXy$h=x!R7++@W0Gcaf$D9HqJCp54?0b zZJ764&t6~=onw)^{ubI9w@S_p)Ph`b7!B?Qdp*XL-e7m##sS^<@+v3unkvTus)0lN zKC!aOX#>sznO6fVXhWVSZsr~M+^edbEHD85u~$|(KM)@@74ROq1$?H;`S%;EoJ&00 zcxLpz41Qoh&!yA}kb(BZD}W`?0U2= z`Nd^MCeKvF*6yC+(cLXuR(7oHT)AWAz{;VOJ6Be(Y+AW`<+_#4D>tmXof`paYO6NZ zQx&FS%zXNF>3)8s`}EbNudVv()>n_dhV?b7uig4;;foX_@sO3F*QK}M_LA<Wpj?WFcK3lC;+pG69H z^p7m!QWe&;x+pPLbaz+p0C((gwu_a1^TVF2Vf^i(y4@4`?%C{4`5cZ6ZE0n7sIzr+ zD-Qlw$;Uc(5!LlE|mKzmGXV*@af92qEb=kX0ui)@*&lbfc7rLwE zrO|FtH8oak+)#y&QhjSv?QOM9)Jx|QUm+P+pp3+AxftUeOl>v8_-i`YD<64F?4mER%b4ZQ8n6OL#y*{bP{)N zt{O2{bLc$DZbPFq5qq1Y&Wo7MhC-nrO38)kkJlQVxYBJY@5mXtlkmj|Ib9XivS1(o9LRBcz;YBn{$IVSM(W5{Pb(m|%i27>z3;L%lE!!7$U6~?~8tNZ( zWdxtcj_oGh(X_N08WA%#z|mtnnJ&y?EsP}rLy~T+S-EhO=I`&cuXOIdtr8i7^kwJg z*B?Q3C|Aptq-V{lslBbSx;9<6ZsXdTCF!b-E$Qmq+C?qtbe= zS>LFelG3^LwWy*EEjWbK)?9bpb+a5>aw#cleJIo+OrBfYhdO$C+?rsIaE%68RYr4T z&5gG;)-XV*(5Nsi1Q5d#Gg1VtuA@3QENFhHZs4Z2gjyQx*@`F(vW+n4dm3=Lld`0G z3#Z$^1-50lS#NK@?>=U_w5$41ycxq)d}h{UXx;2BLG}iB(A#urk8bxG8IU_bCpx#$ ztojdkt?e3WA}i<(C8bHdhLf1yXymrDr?YR-up7F>Y}%{Y-I`c7E8RG}Xb3gAy$i+3 zhLCF*~Gl1i;+)x!78J=F%7QXC##LYtLeN^76oHw&;^X%Eg2dSV%s2fgI!(9 ze-H-)%62G&x6`?Tjn^>C|<(fsrcmx?+I*9A|QrVg}x>CJt zm`zwF^W9u{$B99+aqilp+nD1k%S?W4T1Z(7R|87(NH3Yj8XDc-|b{%I;V{LoWAyZ~M0vpTX=Z(WJhn-jT_tC#8NtH^1mcc0X zn{i>M!KyP}C2xU{Sxc8?7;QNZy8E8)0+@`hWe7W#zUiWVHlk**v9zQ^viIOINvrQl zGZQurZOSjYdgUx9oxZJSaF~noUO&>M3qoBRP;KwEi1rm&XJ#LQgAsBog2$V_4h(fk zROFS;n5CtCwBc|+PH3JQCmN$aug1gTxVsW+X$OX@oHqj}fUf~9KpGH!nWM{DxV1O4 zl;b_ycImLY)>`cZEp9TNUb-~Bu!D*h-AEsMyZzfZ28+B{rnaSc)Xg%%-m;?&v7BP0 z+#b1(MJzHNITB{wSI5*kH2YT@M``1-b2w z9j(>t)~~OvZXrc8T)@REpFSOj>)~(~%i;q^SvUFM)nT0QLU=l!pEq3b{=Bpmmi7eC zr~8yaAfHE;PaW0yY@i%?4)8qS`M_M@MZi4Z*MaMR`M}G7#lXt}?GfJy+ypEK?AlV6 z7uJ}@*{b|r?gh8~Z5dj4Y*%FN`5YBjf&5Lta&(hxXSd4R=j~sr{4xZT`9?g7&=b@LL zKJ}M8m%r>M+h?=MHSy}*kLOqvKKIb=%Xd~gPpsXxU^6yB1dWAMafJj3-p>@gJN13;VA5{O3=;r|u^|yY-*S)~#4`^Gh;6 zYuNSXJ1f63^rpXE_xzD~X2)ryV>iBPx%2nmsB)^FaG}CJz2EUA0^5w$*o3clPv;aNuNMXoI62WNd0lA~$?F+|uC4xzipwXX7d_O(|Z@6o%-xHZHDFgf<(2mVTKF) zd2a^L6}Prm_ji2aE#JQNb5FFreev7Ae(Qhj{+;IM)%?Y+$^X3ngD+Tmxbo&Z>o@AR zt7Fpi>ulC>CV(-(xiwc+T~k}f`PU9yVx7=ABmy0ryeoi1a`qOWgk}H#te13)dRUQ0a zAP4$4fA(Ls*USIk%JvJ(f%^LY#Al98bjE$_of&&(&Ui8R{T`U%+VisI zCt4@-AL6%DU7k*?pH-e*oig@3mj~eRJ()i*{#^OYeF+G*l+WS2seGP@kClsG@pl4q zw@l`ZkzQS%ePemjsQ|YJ$b#4WLGcTB2xuz69Rs%soQ6<+M0XNs3E@hWBMqJMu>#tU z@l;+PN>n}TnwouOi4T75af)lgvjm-n##}_|(InP?P2o=$_eJ>LqPP>amnW6iEU>9#GXHFz`qTg|0&pJ}g7n@Zwuj5A%PaOJYs)jL>WbXs<+F)n zX3aOsleyF$7f}Nu2LiTA;3#m4c)rThEgSK?Me#hG%$3jCcTIhHHu3sd<#ULvg2-mW zJ2Uq+MQF-(9=4{=$@~KG(*|wCthT)jbb^1q@D%GIuOJm6>l57C*j?!G^ktYl1$<@s^@Vd=X*f! zhvqUgk64-_*^tVqLe8rTL?oA57bE>^N@0s7+SMPZ0cXLs$-LGwygZ`sOcv9i77)Ii zaIgHP3_EAJ1hpwgG!4)UKywf8UK|-^+QibBQhW76a|#-*mFT0o-3#sb%j^vC_Vv{6TBV$Zz2$!5su= zobH;4Xm+_pK&yli;+bqmN`z^Q4(QRz^+xx0!}lzuQCD zJi>ZK94ULEkq{FCXLq89i^UxoK-i%G2?Co}2MB$T! zpDGdFO!zzorSpV8X48w2%gnto0$7`>j=?q<85khWhI=OSzpgm>sDAf@YXRrgn{Y?K zwSn_=fZFXixIN%r%X_rGddg?ldm6-De>(^5A!y%INSjGyLz2{(x<63VN~3~#>=pQo zoP^t?;=HZr?ct?LlZgd5B4$!Pf2d;e=GSEAWoP+gX@SCUHj~dhU3>U?%#wcQU`z(uVaP zs_FjFa4x04O3m*N@Giz#0B>sJ|)hdDqhKc09c-R6^STZ3f!!*|=lcqB(I_ zNESR>WmU@92M6Fk3;(+;zn`~s0=4Ehd@i*q_#qh_hi`G;Wd0qc)6Fs_7pwkyVk$D6 z+`co171>VWd~ac1GKv0BURI?x1bJzIwh6v7@J$x;Nqg7X9$KC14E;j2H-vsldDXyw zgt+$hPv(bgTm>>G1sM^sTxxR^0iVW~3F0|PJa4w~1oisHP*HLz%t*hIX%b_@&f__I zU@|XzQToQVDI<-wKdZ}|6WuX&yIRo|RW7p&w|<9td6ann)W#bvTQ+ewWkZ?!R+I!% z`uaG}rhBb!z>L_)7}t>6;g4}=2;W0EB4Iw~_?`ea3U2cZegtI*+q#)8F`2DS)q^cG zII2^($6`0cVCz$~QKS-TjA>qotut6PXoT3c<2T1*DT>C3Qy7Djl+DaNP(Rd}_im+>zR7@V0O#3jF?ueW7>J3pHud`A z26pGrDpKJbUG=EC-a}gRMZm|*zjz)2w_IgPji`ls#NYJgZk}T!%pan4 z5%lF+=92Fx-)O1GT(ZiDeBlfetJl>p<2*O*4D?Hpj?f%+dvUaB_$Gnl@ZQeTm!noI zt0+R1KTUowK(kCV$TQ zW@!G|vU@WBpv^-}n>HtQxa>^!d;@L{^qPM@0`eViP?+>O7ZeKeH z?L}x`X=#n_-0tc%mEkzyv)?$Gf4dDYECW-*$hehDQ32tB3_itknRr@=XRD1TC_{7& z1vAnglUJwK1wY`+0+mVh1M%EIe4+LaWPdg7U-sQZd`r9fMDx$?2ds`mhJw5xAb#q( z)a}6!Q-+i94Z!ybD|>}?!Gz2xB5yHZRf$XXaF|=&cqoh2O7gKM-?p+%#KaWGpuwp)ye2;^B1l$LOiR*)`i6(Z(w}5oK!#r)~-spUA4!Aks%=ik4%C{I? z2HXo{>pPS9M5uOEQ?et~m)qc*``~2$oxGRGUncS9VpY%r`B8X#;k}c-8_Qc)K9MY2 zHzTHW)v35LSG((ymx*_H-(e zn^Z$hq1DKmOfix;B!A9K#&hCaXydeHLiFkHp*ek)@FmbH{a0JsfVb(;kvUtJ!eTF~o!XRSZ6-$hIB|Z( z<|`)7teHO+R&GOTTTD`c{@48Qp+Kg5naPG0K1fq?aS+-jXjj=h__UerA^BRH3J=7R z%hT|6!uRe%zU;0LUsb9n^s6@28i*`>s@K`f)lLyllZ_{)4l?oeT3tS;_Hi0JG#C@d zVxUd)KjIv;aRy~d+!M|~n(%|r&VG0@zr)g+{+HP1c0h2_cPF6P1Wk1*ogjUO@-J$9 zCY91hm*DR{Fq!`Yn?_6-vx$!vvuB`Rf=;^#?>j7Sf&3>PjEbtUd)we?cq?OiDH}=o zeN#++>r!#66-KU94=0H?^R~(Sx1!|;#@_n!v+2Yaiwgq1blnyB$Kj9I8arGwQvG2r zbF&G;KWgKTmep+gMEZ7J3d=Hrk%UDMCHK1K*gU1*KAC@k(!<(ZhfbFKs9!7wZ}y6; zPEPk>qhqWw`CjJGh;z@ogK@#l zKdW12a+FIo+gXy)wa|`3>)7-|vhs%^HMuqw8os3iPQ!QLJ(KynZ26=8BAr<4%Dlgm zDp|V%&!g~oHjtlI8q3GG8{B!a_PXXCp3Gl~jUQ8qUPg2HgKRE^@`zy6DIy5dhxQQf zIPrRVFO-Lb?8z1U#f@nbo-E8yNHoaz6yMkaaL4BuLwYO64xYNMuLJWzi+0F1&@AJ21t0gD;K zPeFSao(C+CZ6{R0FBU1oVry=*R@*@%i$_*`V?0^y6o;kTF1q|HtE z3c{}tz9JmXxG5E>@^2!1?)xY6-?rf~GL%g)B`i|Yjj6VH$+UJ4@s1JiUq|B&%Df6Y zVo!Vw%B%bivLBetKN{r^#*YU2#)pctr8ZiE{yGisTP$z1T{DT%g8p3zT^l^1M6(B20*zW+A#C371h${AC)441O)jOnQ@?A5_C6brZEsXgR3{WJBrk{lFuaH1_4W>}d{buE zUuq2sPmU#?S4|xeKu512!rsev}o$qnTd z*8fHIw4Cr3!oxlb4dB|qDX;pdUu_1r8JyDB9HNsRm*#aC{4n?$;f)Q^CMjH(T4zMf z&>Vqg44Ms=#^yHxiSKK73YzoKyi7EFl()0su7LB}P_puSzu{`ei2zRG<7lnZ3DDMPZCuZb)vdD0KN_U zYZM3aF#=wFK{n6<@DaO#@ycBU(-MMtt7F&LS{rUXoP+NYd|MPBAIarKa7`bZ%%2q^ z&}Z~3?TGt^@9Grxod2sfMUU}+RcRB`|3&$g#~N&#)5M#z{Vv>JtxIC0ze=E0pYr!P z|8aa3EML)>B<6pK8AEGQhX0iKKQWpAf-O%BeM5^#R z^5C$5SzR=6lTX!E+cOz|N$Z29@~Npi+Z;uSv051)E8`Gxoh04~;w@hLP0&02%G1zb z=r2Iu{Cku6hipFlx=t7PlMpT)ICmy%ThPDG(i^*Bm)pfuhbss_OZdB@vK!cMT1Sf8 zQ)`S}N6MuV@1VGai(fO{{*xLp}m=>pGTHwWz0!O zIOOd(;a=Yh;==my1)wn%-r3WFrpl-Ft%}bSt&=m|WM?+Cn{rq1!>m~k!?zedV=qxJ zHcjnyvoPW>!InY_{XE^3wqRt-=?yJC&25AO#yHZd~ePWAH7sd?qi< zV_Bv*=LQafKS6l8!uhB_i~+~N_3>0%apRk|)e5ynjk-f2k|@%^W#9?o?BMCkOk$Hi zACe48rssTaGXE;ka2{YEXC2ZTT-{eyp5B+R@1m_ydqeBlR<^y_uL`@y)tNDL0NTx7 zyn$>$dru&a#F++;LOTGh*ALvb3)Vi>KI70Fho+i$w=8SQ(|vAH)J_wGpC|k=8*ck3 z`ea`c!#A<7pshT=vbo4j=cBP zWcy!+_BiiK%hm&F?MrI-rKKV(giMFb*qtt8Z1@B0n9_N~pX8fJAiXX!Yp+hV$Es;p zuZ|LL%@=fUgbkZZ_!)H+(;A(tGsp+O#2$z(S7AH-Zb3Uq zUYC%qC*XVZ%YmFr9y6>xnVA8W1^$fYRfBID`YX`aeB~F{iw*Fq-*v$unDth?kkq&Q(0XByqja#dvi2((vQe{6}7K63Ek z*o;vv3xH$9n|Zv*S8|uuB3Ku}o5r1YXia1jbTd_-d}Mn`FSZomE`w_>z|Ew8Hi4@) zobH@u9=HSGP6-$2aH$cE=t#Srv}g+B{lb4z_Q)o9XP*wnPOG!TtNEu#-I!Vx`UP(b zyz)V7gSVPFTWmk9E*~iSahyEVq{==Vhj;hkE)wsiKaTEE4J0@-V>?fpkh)O=JR^dw37^3#(((hGr8qOTHP{R0aLpw9Ou9HbHZX;$gf{e>((jKe$HWB6aTe z=M#iKO86EVUKnp0{FBf)e^NSss^crrG(mGavQVOqOZmUt-lagxq&3_sA$rj3k+ExCn$DxVys_C@Kqt7%;LKVOI#cUqNg7>a&R)Vs&rRkJ zi?~F)BpxmnCFz?}@ScbFW?Npr?gz>i&j`k=k~&UxDmeGo;dvk8W-Wvo!qi_b5dH(6 z%3oLqK`Cbf8q(kDsL@&02nIP(9Q%Po-({bt)c9D>_;@NAQ{lC#G`y#Q@$XIMUy2+n zANyEO&L*&n?Kn6Gv_6IVWL_DMeLwKEHL`V&%c*)){vIXV+qdxRQSKQbIn6-V4P1b> zhi9lh%s8r!dUv$+rjHzjbiv;TJ_!Z7UZz|@mEn;Qu2uM@AD#kwiRYa>m3Anf;ofD| zuv8y&kc%_W|BmP-cONKEs=V4KYxzOoGZKpDQna&Ys-L-SRjqps zNONEEo{-Rr_7pGyt+$?L>!h~4Vp|X|Gz)+Wz-4IH@(i`Zs8=UiqmoQ%uX5fG*<-Y2 zE?OU{EpJQUO;e;}XhHEe!?*b#Ci7i3ov_?+R6A6H##BT2Cw)%se+d4A@GlfU?cdJa zUS)j*{4wwa_F7YUI(!R)Yl~|veFEC&Dh@trK>k`!f>VD``DGVXXwL^xkRx|DXzf)_ zK=W>BMN?GvRhUx$8B=zqN2~=GRY|VIvb5@Hl(gntn9TovDcvGlcepoF~cEWq23=>ty~-yvLSPN}<1)SA8qPc-0GUyXB3vFV{=>T9xn$piSc+ z^u`C%;3-%o)2eQj&gDa3@X^OhA&}$4k4{Zk8 zD&8ea%n3DwnYoYb@=n5juT)#>tkx*?UuX~2r^?D?aunl@zR*~D>XKdKv^t*yI!5EG z?zLB`@LJ`G@bK8QRsEsPzt)0n*`PMhL4F+Gv+#aT^%BTu#D2xEz9?(VdolZq&^4*n z80_j);y*wax;k?xI2N0zi;2TM!dVR(>Ib-V`pdUQ>@4*~6#?~uwhBOgp9?_%S z@n?c~D=$yx)xSgaZPqIjTrv~XFnt1&3ik2#K)*anZ^p{L5P2uzmCzo7_FI;=D9@UD zVQm!Ee61|YB6YEvvjjz?(iO)@=L+eZEtQU>|Ff~_l(eH%)_K6dPbTwgY`k{-V8NHO zp@FGeGLEc`V-In(**L=Tj2h9>eb_1}Izla-FWw`>F<)^|7Om$t^EwKg0Dn`dKDr7& z9S-Hh*!emRNxG4lj4AIK;yn7(@Lmyq7;D`J;Itc@N6RM4fD-UQ8dj1kD9#q_0Hd z+ZE~FkcIBr6V+Y4#dNAwI)fOGT3qunv$+P@<&i*V|8z_ofV>UN26iF_YVlmR~zZxUw{bzwZ zj0E$9Q-oI%?wx@M?B+J^T=LCe-+Gc3mZQX_YGHW*pjwyxvvMJL%gytYTvrE;N z?3lQ1gH`cmlFVt0Z1}HW&QR2b(yI>?*NBmSc#pz+y)A>}zk)qM$)m#05PqESzz2b) zF53qcE`OdggnP1Y`i~8l&YaD7a*=RvP11yGUqA`ywhHrt-2tuc@5xLC=jp??l2rCP zV(L>q%}3#xfIn9LBqN_hMo2HB-Re_!71xN{pT~)F@l@bvWAe-d&Q3!)AmMg?$>>FB zH$&SWO`l5ieGD^kek^sVd*YHeeLu_iHA7p(o6`MXIBUBpn7;prd5AakT!tz9J z%=*P?g62G9%D+P|oVL0U^RYqV{W27WK@_nJIRmss#=~o<@-5XdepQ# z-#tzEe!{)=A>(hb%cf7NY8%ao$Dvuxv$!5JiN7tV5gZ~}>^7AY%u--gztsBj>6ue* zU!_+`J{rKC1vkcfD1K9S5;`r!VYm1ucwK6h8@qR)9kxo~5b-R&b}Ii-o6n;0fHA%7 zEph9>xs>>IU&4`DQ~ArY+y9qyDB0Np}2M9ky zcs=i4Inua#nX+14FPr;Hi8$1bvbpEZopSAZRYP5QQnuz(;G4nELOzT8N3-s%D$qzQ z?ng$->XiHkBPbT~Dv2&joXHnW`S)wZ+L~MfRb)rts3QKo@OS=_{Au{d;Xe)kr+D}3 zEtA;qt3Ao4?#yg{@sxj8TU1AzEr&?aq+8YI^XNCD@RgDY^}!=0!qf0?Cj2DfYJ(te z{?KL8*bB|&5^*RGV}#F{7oUd=;p2oaC;a|U8fg}1jNDYoJ6C z`K$5M%5nUq@|qkb(CXt& zM7MxAFE5z#?@bHac-rcIQ~BW;)jTmhBRaAwwLXdK|#YSE(6UUsFO%>iF70f@hE}=c^ z!Zt;pOIFSP{i2}%hU-Jq;kdbZH~KXT&-ZM;i)2Y-(UF)&Se?S1j?q5iWarA2_V3RS zXURPhm7}A4F;Ua?i%QdA_NNPFLH9&1fJ5a3(&)jNH%$3=dxvB&>{GBR^*|tz&G5+= zXfJ%9jFva3V^vg~4_Zy?&f=3}ZeFy1f1Wst&*AFsq)cLsCx73-ZsV3gj?tL?1)Yyt z@bW4D4y{6Y)BJ-P_HAEtG^2tA86Q)}a&Uyi>`_&sKbwd*Z_8L1@7swt9E(mPMmt2K zxjHp$cQ+VJI5)Ma8se93pCB!73=6e`b}nJCerYUv`D;mB%o_x`w&*3|nfr>V{JW5y zke&$6AaJg?Y%o!5i$GpVSGEu)UD>>JDt`lgD->^Zj_fVSg?(CTb#$XhHnlZm+HRQV z;$>6$`=a>`%TXIA6pLeEqebpXh2rh`Y@JblGgFauZjHB30o~xeJBMsNGhy5jC>3Zl z?r8km1MNTZF591t9rmBnW)_ONo^R9E0>RZk5FS%*TKa2X1w$1Fl^fkKg z{$9F$xUQ5YAUn7QJ~N-SIQcpq0{0Sr>mxep%A??JFc@reo*Excf;-2vL_4|juR`5N zed0$Q(@^q8DMA|`BjrK5a`7!w?%6?pX93McYrvhQU&iKvK_yX^h+pV|Me)kl>Flef z{JR^}9%JCngS(0yFrd>@MY%;NB-<14Z+>-DCKT@#@WbE-dB*0qn!7_@9nP+I@$>4` zURYL8&PQJ}b+tQLvnB3{V3ndMx3wu2Vv4Z!rSFAO+4L#2$GX9(-;S=F%KuCRf$bIU zU(H(eC`vDv!hR{jvXUHwW!zNXIsnXmZD6O{zEyNSLbQ(pX=q1yDqkUe*B#brqMZPS zq3z*WK-(Vfw4&7-(n)9=i)lIdjL;i3>ekB&XwO6Y8t>E2r{p#q_z5$8)poj zx@cM~^>H5B8!ZTvY^0Iv)6m{1TJ+d;|%BMpS&wx)6Q6NrktQuNBR`@pSj@Fe~!TW zN)Z@dt$MnCd$M&;5oUZVnCmdmnR^NquJVi%W^}WcCVj{Afl>XB0%xFE$y0F${iQEl zrN*W{2FV1p-r9(@FC+b!t7Hnbx{=EXcrSarOudV2)4_t;gkJ49m-d@oHRYca(Ce=nQ2qL>b03h|)g-|DIJ-`430?NRU2dFMDfgey#spTs@UfM%UuQ>F=G9 zI2DtAz45)6%R11hjYaz&tI8{|6#cQZT9XjWaCczMl5hQ=%_#d+*r4)m zGEp}+`r$Bf9NL5}!82BtYs&``XJfL?7UHMltHg|X+H)PfI~Z#Noy(F-gI5Yy_U5vW zc@Wx9kcAR?p#IqVENZ{%R2G&^@K3^DFc%Bzzn=SC%3d5-55}gDZE%!08rr7(dmF+! z7>7*mvkK2H-F%;gXBeK5QgS0->ZNg&RAu&X^q(n@wzK{b$+KzKXfPEpc_%n3_i%P4Lg$I_3Kb8{b#^UjniT zdI?`l_?@NV$LF_fUR?aOI#yOxWt#71iT5<|X0}b`pIfTW)sTsUPmvR29l zN)xxrb-8;gbYG=*V-NWCCOw-4+Ipt)-{%?XD}l^tT>VaQ{^vrz2bgmY>(rKaU!ub_ zh|)a*EGDeV55v&f<0icr+(}>);TnIGu5Ewq7h+{c?fs`9+2h5<3ct<>=uS;Fzv4>L zCdUcCHyW1;8*%bhJ7&~=+u1uWRo^-TT&J#GT-~^-$6(!ca?K&;?g-`(VcSWCD)ifu zjyMHR4Lsf)uaM_Q1xg|f&n0*&`hxj`+ZVEan^r(Ghq6^d^K9PrDJ3H{gsH94(B37& zNITpW8Y^<lE{2tNdDhPK<%7THRP+wk&@ z%oD2hk8TxVhcS37f%Cv#;+n5^CI3ZnF>fkM#q~?qr*xEdemZ^BPmN|R0Xpb#imP_ff+vAi#t?q*u|4H~?%Unj~ zwS5lVqWc8X2@X0%_T@C7YdlOse|}Hk6J+~Xpp%$C$Q8#EV{cWnuEd`mXspq`&*J;1 z@}K5Clo#sWy+2_r+FV9P4#IN`9?!3`&w}@KoYjXry%|6n@)~G1LlgMk3^1Os#M5fjp;;s8hUN$~ z-nduLHk{sy80hBgo!WE^zH#`L*nVHY$F(?-CN+2BN=7xOJGpl%{|~%}WIt$A%}I5k zRiW8YlVba<2y1LV_2UflqUHy&qf7Uxwz3yU^b5OB&dhZN;LpB!Dql@oh4K~dlg#RFPXnJTW|4imDp*X_*@5FUw=i@SA>a_;8E5tGP?Nj;B@UA#)yK-F)&ffl2 zOXeRf{Yk5PIMB07YEqkE&60;h#4~Q=36FF1IeZEu?UU0@h6R|ri!j8ceyKU#W#WFT zjXPGJ*?o;^t@dK1>!WgsI5P*sa~u6}FS4q8HQBGq>9NkeCsp;7W-inW{qNg6*z#Gu z%K-s4wIYgFXR;#&bm!^a#B-8(9<*{?R2I!O|3*z#D3DcV$+i%y1pvwUIPqS3Cq8X6 z`4No4VOcnIUE&+D@>o`J4R}whdD_6W({wN1mG`obhMa`r4f>Dn9gO!4D0?(cdKo?T z6P5mlWc&m8l0@Y{h?n_SB5^n-zZ_)v5op9OVoR`&5!+iJUmp{TI&ua1xI#W2`OuVq zkEw98uSNfYE9YIGERY5_2JVZ|dI;C=iTPy@YXVc;;o+AIbrQ$CV^gL6M^ql(5#?9U z#)lE1dhZ{V$p`TqC!QAKxyZZP#I@zV|FrA#$03(3H}hlkrKsKt>K%Vm8A_4{9BF6Q zTi=0(lxoqFkvfa5O@%k))>tg(|Fsvkp`e8t&ELNiMo}dvfTHA#p3RciGr$G%yP2oT z8rJ*FMp>PWRGIn9EgHa|_hezKpsdM{TYt~sKlAJutiO~ih~tiESMDZ`7UD<~$M>T3 z7S`99#QzFak=Ko?Q+U=D$pn^fE(Tp^?C^2YIQ)qz_Z+Dvv8&wq_Brrpz{mJJjD#m8 z(#M*2q#v2`@9npGCde=UvPt`djowwMI-w9Y{~z6QX8I>N@QRZr?l$6XA?|wKUHRKB zZCU4POIODBL$ene$vt*N<{tKXs&UUt@-qt@Bm4y6o<4Qw6m~jNBS|q6lT|4g&0DRG zvYR(uS7z*_3&b(+llVgLJEWU}GRi(zHG4AW6~gYHEk^fjhX04eQ-Z&(>|mS{Gkz*X z(aK3fbI`rSd-?bLvZvW<f2p|hiuV#Q_SvF+rzmgCeZ1-qOX$a!;XTcJp-z+E)_aN+(p}L8giSW6);jil zu1J=GJZMerl7^(h4&aXMkHWv?3xVHij4hIh-T$g8{r|p8$k%N8(^JIzr@X6tw!JyK zoA>}mB`s(6KC~2T%25gZ{*zPrUoX`s@Fy|;AcZ3$6je8J&+~dIh1F~mzl?viud)}pMRYq zj>(xj)@%NF;48uS=Z^JHzZah&ef7KJ@UG(-k~8{}I}b)s!fL^+kx4f^0nckJk4aBw zsG!6;CSmFT-H|4I4{#pZU`^?MjRWW#JzSsNF=*zF2mQp#0&0p#{WZ7MW*WqkaDivEpp(EBUfi{?Sx^zvYkWMfY4)*fyw2wH4HWD~}rM_Y;p3ZMSefniJzO z`M?;L{2zv|=BvS)pBdY989~fIHb;5oQ_7cO^S@4q?)zmX1+73jsF^gp`&G;tDvqMr zb~5#`8Jb>byfN0+y-uccpv>=wwL0GU!*6n8D-=YYZ=!s z;wktq!{5X+B!`IKzGRd68}Eo5`g3fp5zl^nDzE?cjFkuW=ga;)8Jn`&VKe;mo?t(k z{w;oA_OfN~q0{*lpn?`w(%|~_l+{9k8Q8*`Y?=&w|8m4?{q8bJ& zzZpHt5dKdvjfY2o1JD%wA4pUdY4;-4gb(}YK^H0(uB(lyuSRpvh1t*f6ZS=HeHGb^ z8c!DRXenNYbw9tD*C-_b{s#8{g1^If*M>-y=eT}{O7?r!tmUHp28d? zB3EX-k$#g;%YOI{@*Zl>V7xF3shZgo)?N+|{vxE&gIVfqoH)OEmAXrOizo}F!SueO zu0z59Af}x-<@oQ#QKTuxIO$eA8I;K#Cmwv-IiX}s^4$sV!#qRv5y)5_MhOnQMY+ty zZm}{4i>*4Nvks8N0n$>sp|k>^>|E8HO6{} zvI^HrT1QDE`Bzi<=a-Tl{WsLE*jN+)6obY@XAV%*T4qgD^(g!7(Q{Mz_t^A8^`b!; z2{rba%ot;j%RXE1H&gk)vh>k$)wn1{CeRJ3vYGVe3e@3jO!S#dyRZh_HIM_uaq@4c z@_!f~7w%G#-LE>GMvFvFL|O8sbF-O=sr-2xPf`0+%U7f+&iFOuQX9)YJM;I!9%i&$ z8C~8JQ6RY#ci|UcxOpgosV-XBtTE>mG$%atgQ@%((v>V0rqx~$Po4gbEE2POUib;( znfug~{~xF^<<2tSENXn!zxssM_q*ZW7R|@zS$;eDuhkrFx7ga$Ug)*He-z&JrTPT( z`~lze@odu&`7(FTo&jRP5S;SKxjVH1ZE`xiU5b=3(&-N7RejTGJ8W2j`B1&I* zoI7*cy<-O}I>T?lt>8SJS}0p@hzgREhQ1RRg2y`>;M%C4cFRhb^uz%mdF^z5q3;jJ zowZGGDSJ4%@0zmb&U!re_1rgd<_6o+d6o@r?5F2W=dbbO!L{6;>tHQm-!-iDCcDZn zayk8_alFG0rz^8tBNJpwb#?s!w+9fT~ep4hozg$nLhWsnhBNcnHp&R z0h;TrPV@D0Mt=-YfiSKuU!p$tonY`<4BsC3&c0+i|D`A&D@lp6&n5!eIZB&P;asB< zoZ9F_dO9yX<;pN^U1!^xDQeKzTr&5w@b9Ph9XL0CI)9#M9sVDX|GYcK~9)U)2=u;{k zg$s^CTP;G`kVQ(?_1esurgUp1aE9=ADV+5D_Dkbq;2$zD3&Npa?momQEa`<$UtXo7 zd?cZ5;~7l{d1}P3-pJNH=DRv*e$%H_-o@~mb0o~>O`Qyt&tolpWBEL+W^6Za4yp1; z2aH1R?L`}U9QVyKKx4{HaGRTy#d5&g{5I=QI%Ax}7U(eqZ1^R)lhnLF zUA-@V*|dN6SWvI79#cL$3BRN?0{t7W1n3k4wkf9P10r`bDXD=i2-pe8qJBKY6Dun`K4Iuq(wQyvn#~$+UOBeWst@Qi@)* zf^O);>rWZZ7||rjQhe(7;v0bP?K~asdb2X(->X}n@?902Hjw~lq5oR6jslrs@A2{I z3NxmCuW(^+IB?a4II~W#etH6^TsH0cn{kbuwN-*N)V^zr#jORti@*T9FSj~9hBuoS zi;)eCer+X zV-w420Y8PzLbI4UoAc_TGSaW)bCbqXAYxcIq;^FSrQ~cgaZAqT68E#IPq!>J{y52% z1wmfwQt}=Sesk^ncSAp`Q)Q>Z!D=6+y9an8H|^dvOJ;R*j_`+p3GlDwN#Dc$&cz?+ z=gg{NyvRz8^K+s9fd*Eib3%3bnP>)o5Y8aVtW>?IFR5Nm)J_-vr*=d6M54L;924~k zb61o%x1`_XLQ~C#RAVsjG;P>Rd`{hT{%`dR#?o+nT2T#6RvSaV-17wLe@BVqi^z{# z)*`!eJW;l8Mr<#FB@J8#<~BrahzeGgyfIRJVJ`94KvTuL(lKM?ZDv?w-s4faHnsX+ zH?$gu3uxJ3x3pdEi*)WV^hcmK^9_0_5t_O5a>C@#dYrHV|7)a1E)V|tMtv%D>w2j+ zlx|QPo+rNF;iS$Kys=~912Ii$ z?U^R{lYPP5%k#zU1V0b_CZ4e}qI2vGaq1zLYJ=q%e3kvv`M%Qp=F*@dd$NuT(KM06 zekuw>Gd7w)x9l?+%NhozujXgiocQOMc(4)E6l{2LDj_!V+H$3hCzw{h%`V@|%d%#H#q@n$>2;%fhZTZ}| zGSr&8%8PY?&NLKatBm_~@nj@Tl1G6t()Z3|YHfGt$upyI6iT*tFCw5QgZ}Z2f5dHrO)7Kh$t(i~k zna_@uSr|9Gl_?;?CB;PcKvhR1#-dZs|DH>R-jBYHlU z$`H?T>gU3nr~N&6oBo|ll1v`y+8e!h&5zZOy5XtWXV-6x{Y2;Kbj4IKyS#mqa({wx_Xb{k9^UxNPpTc`7%mE))B z(;=DouWLf|rPsWqGgPLQBgHm6=ptRB@_F>0ADgW+NqjccW{r#*egi5UeF}Ax#&gBD zpY-2}jH?`eeA&dt@)hivy-9aqW#t1vwV7t&Lio_Hs?^$0x{OGzhJj_DkiG4$uN@$X zN8UH>pZN{XCrKlr15U`NKcAGYRUXHI^!ul;cAr68;_v7mg=^+H{Ud#m3O5!+5iN(p z)Yqk(mVaQ{zazl!6WM~k1Z}B$O%tYi-9tQPEet!a3tOBa1z&l7a8N>RnFX#uvy-Rl zKHQJgpsWN&>O;UZ{DT#6r%SWLCTX#Z_9m z-22Iw%01_U)A=vpckK3y0$W-(?~lu3GRJ>0ZkOFqIIHJGdwQY6zg2b0& zVy;igEGW#g*}q&syu-lkQ`4dQcOZ`CH|lC9%|RHedhYj73P3` zwH%hsz!~^IXZd|S)2!3#zN%s?Gx)Ir+QUH0mx4KUxQ~pGbzfQ3$^F>hLN;k?9?=bN zhfTAnpCtIBpNP=A`(rby`!V=-SU#KAJ>FQ9&)LhDx_*bNrd~(&L8g zPxZ5lU$(mADtQo{Ap4a9->_}vGwJe14^zBEsL z6pwWLqu~Cfba~s#zBi*-QsFCAk9!GI875Cp=dUdtuX|TXq5Ppfw#9Ue_@SZND9GX{ zo<45_Uz^TvxJur_X8}Fea`%{NVQSof9h2YMRP5@$@l&E|O4gm~O|bXt)9zhLo~^Rc zZpMn4PpAH@!hVjtG3gv01VXq9F4H{?&bc?BTMRBUlyqi?a3}BQ>?*jp&*|Z$^Ca-E zz$Ea3k)-n~pc&W+><8Wrd>qi{B+s+J1>mPZVkhgEzyjb^Kn-vkuoc(?90EQ9d>MEW zxBxi2l1>G1J+K0}4R{043p@b46VT@v&rjL+$9R4d_%86zz!hNDC}{&P1r`I#fl8nO zSPyIlwgLmdeZa%OJAwBC9|ArOoB&P&Uj@Di{3Y;rz*E3Q;0oaEPCCy3Du5RO*8?vH zZU$BYH9!;40&E7h0)4FF7OoaufP=`fn3c5DuB7b z^}rI~RX`S41>6R-0s8z(UVbGnzlgj%+v)AuGBUKKwWGIxsLOGlv=SXjt(pcNRL$N$3 zz&60@rY)SZnd|HvR92n8OEgkRJ?*_c_Z5})0%4T4x4&b1S7+^LM|XSQwl3$t5{*MO zRn;4sy4pLdb`N*eGI3f~#;=`45jZ!MHTAcXYf}>PbaVK3?I@VdWot%yhkF!JOaJXX zon6)4?Ssy6azoef#y%1x-%7e`K=n`Q$PfQ8yrH+NYry%fWJ~W51-h-hccjbtQu4N* z!QqkiUdlI2dpXWmJk0Ayx~NF!dr2>WmVQ4~{Ks06q|T86XT5pr>FDq6#Ve(?bz9f) zj`p6u_Q7pK&MtoMpbv};w(e-B#QXR?(AwJ7x3gyu!EhdOe{bE<-$@^NAHO7E?E?d? z!@CE-{EgGvVY-F$k{PWCSzkZ3F{5>BPw$qItG8|m#GXdmu&K0Kqfr+e~C9E+|G{@O7@-|1I~}lo12^0Cfm344-Px8OSX6P z)8^S^`%n*gu1dBKxA)!bRP%K6R?AyIJ!n-Dp{Ly)XLYiptEZRU`ea9MSG&3g4nDji z6VAG%qHESS3kvI#ojqH(4)^S!v@JBI9rliO;I|NTLS5HIRr#I5MH@S7F zt82S6l-xSpMH}u+Zrw!(hW3p~5~HoK*pl0JxOqI9?CliShmsVgy|=5QU*W&w{xT$E zyl-t*N%>E>gQAD4MOMB=4}Ak zdo;OYyPNJ8k^}v_oRdjgJpS{V;=%vbBzlw@IGv=Jrt-hW+m8O7z=TDL} zu$y82t&I1blAk|K4)tv7Yp0#Q#ao~AXZog=znvVqmxg!#A~|FtKbJ(*O&>7Mui$^S4#MqWjOPEwSN5JN=TcAAeD4non2VBD1altDr3mJq zz#Jj>rVe>`oc{nSsCu`(gpr>@HiCH$n6?N;`y*o!jJciS+HgF#K(jZ3sRA<|!8C!n z6v3F=V>x{iG?5y5;M%tQpEQ>j^2(}T3W0%k0NIRmD7 zc9>=Y%-#s*-@r^nFnMu3E6i0+v+a#wUIHdv9;UfLG!e{7Fef6IRbVbfFq^29thHnCo9e6TwV^ zah@Bdc^)E}j$r14X^voS26HHa$%4r|FC5QWFl`Zx?qx{N3Db0f8Hix+1v3%BJOHMd zUCN;B?*el+g849*%nQOap93=x!F(0Wi3mp8ao~kvuD=5_7QtKqvllfOq<$Gp1&TAk z%s{V5foW!_31V&(hQH$pFdM+6UmC{T4Q9Z{wDyj) zw{Gij_WBrUk{)O#em%^^wu5sif_VT;Hto@vc$l%B^)ZU)ZO}N^c{IYj4@^3Oc|`F< zFkb|7D1!N8Fq!Ma@%%NIw)tVq1u$bi#v8v}&95iapNFpY~p!vhU47i1^dsRk;5ac9u3_p=A#@gfE!ZckxtnVq4Gw(aj@Q~ zH!{j>H#G2RSxa2m1#bPsl}nK(DbRpNBZTv8FeesTE=Q|a8f3@+pWeO(ysn~LcZC*C z`B9=&tmws!R4iCa`b*IYyKVXdq;yMvD7CQmPO_8iW+!{I_fDGvVifR{BVtrU#ClHD zil{xBE2tGY8nr4S*Bb?qqa2M`5d}H%h~A2Lyze_R->jKE3GKs^d)EWaTJL)2o0)IE z`R1Ehv(`StB9Ocqyv*w?QjFD7#;`>w=XA&!^ALW^aeR(VRnGMm+F%K13c^&Yz$qJq z?GZ(90TP|1IU2bfNXA3>i|K=}7ddfjsUPMXr4Vp6L@CuCc$fuF+8|oaZXn|x@?jw5 zH@JE21CpBOB3}oR^^pHfIUX`b&e?9NaUg>WT;%USMm^-Eh!ObkJt^~9K+*=$WquQo ztcP3#WY9ylQO;sFuPcExddL8fVGnsPkWml$IOQyH$x!Q;vt+2c+?hF6XB} zvL5mzQ+ddL1Igf}i=^(yBK8?Kh_3r7K+?-x&TD~`4Wc=Vfed@dS|HJz-SS+T$o53jyN9FPsAfp~~ z1(1QYMvmeXfQ)%aACU3|F6Vk6!yfWJA{V+GM&)DcT;yMYWG;4*dzi{Yz6&I^-sLygO)ioJ5^Z*oB9N4a>;jVZkn4bqddST{#xHf{d=$vQ78e;N$3y-N$lzrz=YAlm zts2q2@(~~-(2=gG^d@alw9M^@T<=#JkbkDSH%0K0x;OEipCyuw{mb4oas<7p5fP*A zO*df_La^u@(wq1-Pw7pCn%|k?*0|bL=%|et{Y=)I4nkv@x4K$=8px1EAP0}}&=wv- zsJu;5fm0+hO`x$dJCb6 zaigEfENVG8w%0|B+j+BcSBrbo6C7CI796&(gCC~?;_U%$$H4mlU5ER12W#_A`by+EV#(8$uWrbE&mB*WV_~QAXyJt z2V}@1oa48l2c+NOrg|$lgC4RSNco*EXBUvh>olT$%S}MI!l|uAT3OeWtvvVWD0&kL zm>g5x$|KOMZsqA{gBK?mnKQQXb4Sq1oQZ>qGN({An2vKuEAtDqG7@ofjXM-c-OEZp zl;a36r&C>bR#(@(VS?PEh;?tw3dbK^StO~~-lSgbt%2=E(XF%uRj<^9^`fjhz!?+{ zf#?fBQrElo^9>*w4;clL^^iw_jC#oLfuwJ6<@^Q6fQK9pO^kWS%YdZb<)%6V$bg3| z0y63$%|HhK(M`399E-$epGj)B%jp0o;~`}rLpQpdtAUJr$c^Oulgqgk$mqKTiPx@Q zf6+y&E}QXE(}GH?9|x!LX5kR}JdnZny2w|7G<`sjxT{p^M)Wawiy%z(U2wRnuk43F z^b;VN4{8qLOl1ks7|cd>W0{d9Xb>5oG{!$v<7^=@+h0M6j8uAZl%2E!JKyY)`3 z(GLqJ-jTyrwvJNjc0nlTM5Ky7B5gtBRX{Qxawd?hhrAI;*+W`@40y;^Afq1A1!QoK zo7WB?sgJtIbwJ7=cair28S{`KAn8xIoX-Op_K>dw;iJwZBKjdydB|fx20i4DO!Y}O z)pS^H*&(5&rra{6S2moD?(vQ!BXdT}T$(++WzNBL98{FK1%FQV z0 zAn8xLZP5W_*h6+P)n{DJjX+YLb&-z%8S#)ifkgXU&Ryhq$Tx_5PIC~e_w^#yDn?D8 z7lgI=0XRbjfgi(G=00qW9JtHnJPJLITI zQvR~bnFpkCzaV0(y1m%$6R*C9&1Mo^oKV%@CjYiq^(twz?Ud0pX}zT7i`BF{u<%1~T^bdaY{7)avJE zMA0#R38(m(-2ghP8W|hfkq=Z{cTlU@tZ-1=2@Yy?%lTHTxI!Z55UsvE(P~FuZ(E?% zt114QMjI2haTL7=oF?I@JpKj9poa`o&bLIXB#n^cArAma9dJ2612W!jl zN_S5!N+D26Ru3A{=d&JiDv%+I#A{Y=T!+$(TZBbB8=Ug@TsbR%jCsg9AdUCCoJ)aZ zJ)|4RfQP&d$gqcS&qd||SI)lxiGJiF`+$sj$hUxGA9Ojt0y1h4s1nD20cm_lb2M`F zNw7>0c?FQHhnx;%z(cqPWYj}e07?DW&3zp?54*@^K*l|!9Z32oE~iX6KXXfX1CTKf zxgAL6QJ1q1$e@RO8A$d&gd@E`TMK(Z3Ja(IL+M2RnW|nO`w9+PAN3S0ye!$+zw9Zy zvxn~~Bg>_yjKQg%YSZ&XddjAxr|{jXz(*Z`Hky8Jv@wZ~dJvp6!t-g6i+y@#AEQo1 zjj>Ol$j&j<8sp?Z<=!xaT%f+XgBshD6%IQ81P8tP&|1-0Gp_vVipJjWXe?Ya!aGUO z#(>e-gucbhM#qE`#htNwtEKT5TF{;*lHL*dOW`opGfd?n ze+M#X5$t2+c8O@rB20DcO!S?{TsbcTQuYw;%o?#sjF*@A7Dx0eH`QElvL3P&$f$>` z0FplFrn;DtJ>)VV(c>~F z`ToH5MoXcwu|F9-H+UlK#RhPi{w!K0d2syR>!jz@uvd&pBj z2A>l-aS>=-9Di65{NYjhlR38FT z_K=TJj)&|65@9Nx#PeSQlJ=1A0vYs>hky)Wdqk4z=S+o-_6hO?kTDPWFUonT%XtpS zxQ84AU)FSz%V`8s_K;Ts8TF7efHcl@Q_TmG@sMRqP-mx&IsB#2SoJw%7E z1Z;d1zAX^AsAxa5k$R=Ex=D0+fO>wF;iybTfkdae$YVeTJmhI0nUru48P_-q7_$fk z{RN!zX_kW*wE0qh`Za=(b2R3J1E;&l%Ylq}$QeLJW(y}?*>b^(4M5H`I;5CrAvoDH zghS+fAdRnckqaotLt-H5IWDK091ppg2wwe3Jiv`ib(Th8#5isTGT@bGFA(n8X1nRO z`y!BK77@$TtpiTO=V1yDDrxf1R9hx@r>pWb%)lQwle&YJ8RdjCxn(ZeDwfIT-4ldXQ|8Sq8ty|31sM8mvbYKQ4iSzB(qF7Vo_SFv?#9nuU6%hf2P`^xb03`)JFW- zF4@?>w5XX!U{TpvENVaG_?9QWZY}PJMU}ZTu9}#X)P4BP)CTKri(pTty6yvSkh-T~ zLTB52=RSjKu^cl3Wu2*WpdNIGd$vID30>t6?8jx`hc>u_^`KHW@ z^D`hR5BW8a^7*cuaUf$J@>d{DY2n1BDz=anYGsR1^f9Nv_bwL>k(UA~d&sMS41362 zAQ4`m)V-UjmH=t;kQG1%EW+IR6^-;tNks$?KJsJDf>2I|d9Be1Vl8}-gEQt4Tldg@ zwjEb*&r@wbBQP1Z)wG5#*bgQ)bqDQd+4I;B=^S%swMpMeLmVICC5PD9$8g8=opP>H z%~z7HqsZH!pT@ODV-xfpl8WGDgridJ1XA{pcL5plkoN%@^N^1KX}Z8|ox6Yxc*ysF zG+yX(9wo;^eg`CKaXI+tR@CGnClOiaa!vy>e6fpg#VEbrMb2lcjEh_dWY9x40m;0@ z<-|ZnJfsLDeTmDtj;S`d$a{g5H@V0sfTS*UkH`T^!IodKEs81|46~*d=s2#yNf&oWY{9y9m=nbrF&e?FDcnWo&=IAxtv2l z2FilO_@GcbvMN_B0?Fup*kx*wR`nsJXe>cGN)=YNsVW>Kh^C{f4A)%br9j3#$sTegkP(BR zSU9c$(s;Ei`9>gv2GMdp1SGoFm3#+~tcQG&$lG1ccYq9AM0~ieDO-6x)(>HZ&M{T3 zOp$EC_9JM)Z6#^J*{JLZPHB?4@Q>XV4?;Hk`^2TCpF;e=Sd)C5BVFA zF%LNo59Au(>9)=+AcNPra?S)Y>LH7Or120rv4jhO40y<;Kt? z1$9l?f>#}re0NqWZmL>Po*0gahivfYG15$I<^CgR<$)`umG@2B$|pdU8HF)x@k2d+ zcQ3|U;pumowwR=quZ6}2g`*02BelBQq>AEluB{v2iW~SRi>T*4l_>pgL740VNLBWb ze+I%IQe*4jnF7m$ab?g)D*1BxX5moIXOSvB=ptVNGU_4U0@8SkaN*#+qaJeHsX*RryfG6+vw$>xNF)=P3uMqk z&H*y=VVAQK$nfnh@)jUtA90b(fi(S#i*y1>f6_(zf#8FNre4hbMj#^|avPA$r(Dim zK!!Zz-^jVs<@^}P*k=UciXzk;rSB4idHoWc?0y&dPavaTb&+Q&$3v#S8e@Tnyco#v zH{4XG0BQQBMi^r&3y;!P^U}Mug|l}*x(v@;JUgH2-p!3>9EGMeJTn7zrvki#z5Aw| za9-lwlMBY!b8FJOAHXP#WfbR-QFw0ByKA}DVlWDy1^uMHWi;m1IuUk0wR*tS>P0{r zzwIKMfRqiQN6##f%y&iel(rqn$a$t-O8gEWLmuZHKvMU)scr@`>>)!yqVKt!e+829 zkS~*SzsorQWWYmy2&DYKT+Xk6jCcsYnKArBm-8%;=tqKx{b(JsO^?N7r>-rgc+XoT zI&8q>;JO`v08|VxbOiQu=xt&@{5r_Qb2NUD#EcHKAMceKe#sO8Wz_Vb*2c66><7C; z>HDJr;pnjdsZu{SsaWLb=oJ2W*hNkRGH8()uXa}PiPY>*T+S)rWPT<{OajDY@xw*N zKiBlvIh+0?LG%|pGh+!-=*8T#*7R6{U}Dggs}2835D1NCGp}E3L|gbmAnCN&vsi-G z1})(l4Bl5EWpYfpCpq8b-hhy%ZZ98mr6;-j2rQxaPO${O0s5k(z&I06(&|{k1P?}{ z^HS(3qMr#YfkH0;XJol(jK~#0qQ_mWZU>U~kgI_VdB}T!H2ua+bvuzKT;wxAMm*#z zM1JdXz7OQ46;d8)L0t>BAU=Q}&5Yb*s#|a*EiH)d5S{L3rOw%c_Z>kC9=t(Xa0GHN ztT>0XAU;JeeYvlX$T zxE#osq*6!$Nah)7ueh()!B6*&{Yem#s!VmrMcxi1{hT07h0l*yhAhHVH-XdiH{lTZ z5RfQ3Dx!@c9^*dhDzv&vN@&|%l@MsdHn^jeOk|I#Zg+l^kS&S48tUIVWTtG>@tklb zZ_~LqN}G-yg*|w-ygZRMy(?+c9TR!cPeMO~Mn4mcrd7diGd=-tP<$SZ(k@Kb+@X6gUyuY_gARvR8T3SU~IYQ2Nj zGQIWi)^fs4Vl6X{o-F$MR$?tz6()G;XaL$6TWYk?;1$DOyc?XRb46o>Zv~RIi0Dwu zp$?COBwyH6^*H8E{meQ7{mguy=w~ld`JPsK)5BIjh2CPhQmS8}`WR|DE;aS5#Gf?{5w?|lNF)4YsI3TL!IB` z<;4qXb?y;pb-&f>-AIK*&LLVo2ll9Ae*UNk_S{x-{A~yOWOF|>R$le|R`)${QjiT% zrtSV6NZ)$VA+tRQK>~n5`tziL@sWh_q z-lOV}MQ|-XXUQE9Vp5s?{MWyr+y{f)_XoM}4sw5gko!$9DEFI!-0u!@zdp$Q`XKjP zUQq74gWQLM+y{c(cLcfbc|o~fALPz8UC$C0T@&P<33A{2f^r`Sa=$aky+6o(Ns#-# z7nJ)oLGF8l+&T02w6WymAosgpQ11Of?n6QD1-b7DaxVtCKON+L z;05Jg4syRO$h|Ab{h=WD2VPL_#US@vg52AK+z%wVn{SNs%cOcl>&SKIk-#~+^v3|A zL{3MotFN~kzrmU0WqjsCQi};YQF``)S|`L|y!& zJ^!Ml%rX`@Wj1v`8MkSE|HpbQ8npF7Gu0hZixJU$!=#*ZZWG&RKu|Ejas26s zja7SLra6(GO`B>C+hPDp4rRRza;Um`6Q23SIe=x2sFanQHcqTMUb3%9?49y2Al!m;PQh?Hksm5_P;3Y@yN6w~9HY+n94 zH>J*7dCA7vTbj4BpE0#AGw&pa;VftB=jXI6XR1j#wPJPl)~#D#1rBvIt-;p~)6OGj z`En&^G7foHQ9o~W^>Z7L5fAwaknA?$h{nd04w?JQ(MX^;hqO)_m~Nevb2mBt0dv2i zUUGCf5lTLOn)-BjlEB8aSzwd3yTsv{OCdwa`HUkWIsGkj&zjsr6(;>caaf-BO~AtH zCFG3d4lhS@C#MfNw%YeP1hb?^P0ml{|e@WZLrQE<=GAF za6PW+GSMod*6_F*|c^7F1lJ<}?kReQT6UhTi^#vEXnW^q_kq-kI^pH;i$$Zh}@RtfQ zUviPJ68W+qQupD{5@FrHgI+n`*RzQ?7)u;3-WUSsX#78|VbEWk2PW+`v{h?&TEp52 zS_9AGP{PI^)|YTVm6?)P%)vW8ke3|dHyD8&&Z|e;B=#*^g-cByAP=HQ1Tjh0N>Y(XKP0Ic{F5BYY4q@yc0j!h@YM;|5_w7_fwJk zxJ4wdQI$L8T#qXFF)dS_iB#F&Os*f1qdAoGW!PAXN$r7%y0g7j%BB8rcsZIwId|Ye zWX8(iiP-Ak6}XRU?A6D=)PjGUgEEgEqo3zaGy@`g6}9mXhGW}Qr=nzkCzQzFfK*L* zUF-R*39_K*BMe6ltA9wsrh5S;${tnO`({UgUifoUCwE!UutjdB`t- zL@yQ{+L|g3OZa_g%&)1;vhM|a3=-Rw)@RP84wV1f1s({CKrk z^8SExDB$c4IL`!}YXi=Bz}XRSo(ed<0q2Q;(-CkE2ApjHXDr}s3^!DO~5%2a83z0BLSx|;M^Np zcfdJ>Wm}&!9B`frIQs(5!GLpT!1;N=*&A^9n^Jyxh62w00cTIZ`DVbmE#T}AIJX3x z;d;)JJL-|eHwCHwIpFLLIJX8IeoM)#`;waj&OpF^Wbw8j)trE{CE%PIa5e^&^Bf4$E`7B34@-BZt5bOL6Ihe@?~P9W#zdO3?{2b^mIPAcFO z1J0`g&J_V?R>0XDaApRar2(fg;JhZ_oDgst1I~{B?9_IoeL#9nNXFCwRk0=#EaxKSgxltNUO6i#w(N*B={^ZK&?|+xI=noU| z^7-sO zU*eYeBydtzGT%{c>nTTrUcKgmBj5Ic96aL0k2^=Rz1-gjPM4K~ThRqThCQur0&=Iv z$pR7oqieAP$hep4gFs~b(wu!j#7k)8TR?_9$qxcad)oLN5Sc|9jRCpM%=I+Va3)Kx zcSmTXk%*NX7fYS<@i1krr^Bwj8sYC( z%jlqy4*=oX4x9;6#r#q2-cmH=>E~nM40<)a2gq(THHytt74@@|(YV*9KcHk=FA$@j z0g)9Uq-x6-_$0Z>=7lE+{l&PAlVc8`l-#DjPm;16z|rH7v)7aSM<6_sesTO+xWsmr z1er}FN;$}RK$us;*-FG~ucAsN<)MUYfy}YF;|);$)>$;etNR{sW_cPL4&;0@Kz;;7 z{Go20$AFBy)#_R4=PLC*3#}iP=MUhdZFz_s{d#=G$g9OmfDBlKZ?^7e?d!PDmKk4l ztKmhZ=#WJyCxujNy;?K@Y4-AJ22%Er4M0Y{_G$;R2Ng;za~F_%J>>mB@N$c>L+1Wj zAX!iHm&x(U^L-#U*?KY6zXQ=n3j5-?-z^w=qH%EM;DK6Fo@3_XDb#Up?k53hvbket zS|7h3zTfL{r-9R+aAIspgjR3!>OLPF9=d<=?0g`PB&lkpzB1lHX!JDS0?ux)UR#OS z9!EKE1EP1iqo(M&Wqv+9>i2SgA2@z5_%sl`Kb)y}><1#VQH^{X$UtIsJ>C4=SJdd$ z{m0;Jw6&m|Ujf(7BD5;Jqt> z-0S7_4j^f-O+O0ckj*`=7J9poa@cBKjZOHmpWP0kUE7dFnAaB}C*zgyJ|O#T?lC(U z{Bzmn#Z(W2CoUsM@r>Sd3#PcIwV;7E5hjymx}xc%k(Zcc_n# z;8)e$QTQ})2EEof8;GpI>fFxN`LZTa9zIQh_;navlX|hNt(pzn&s(mF*w+$Vrs!CC0FTGzj%@K?oHqvuyUxY91w&7PTh9^(Qk-I zAG`rb64y~OcX_3d3fZau@fBilMm;xtM@ zEZMn0M!a@k3#8vG&n6&yZ7Ll(gKU`&O?$}RKa=QU@!2h}}Hh`0~ z1#OkDFAm#!;k!m^Y${uX>06O1vepuJsDUxM&*SugbInHCITN?#iik9$rHM9_T(rBj zA4=YhR7G2_IPU1dH&G*0!s(|UV(vJS(dsiy1th80y+96HIb?qy$fFkFNK|gEba&a@ z<6K*b5!x18LZ*5IspeQ65_ufRUhAWXoPc*N20hLxK)S4c$ay`GqQ^NGNWaaUoRvUW z&7@wNf$Z^8wE~%LYr#|lK(M{e@qQl!a=lFz*Luo$MI}nvy!iVZY>X!?LOFYp>K0G( zFpyb^9D3}oN;Jo7<*$J=+j1!90U!XJTKp2o^`7M419{FO{2n7y9`Ypr6`Zt{%ze4} z-W^fD$2o3c{pdLh$XuI>QqKU===Gf@Alz4L{BxY|ZD$P7Xpu@@z0>oE)sKo>Q1{ys z1hYs=&v@l|BP7e3p6*{8flwWK#79Kb*_$gyBZ-_I(=R+ZIizxD{g|Xx^LQiP9dk?I zJY;pqvRn(~ZqE`v03_?#;T=GBTZH2vzM!c_PnK7g`D@_Z=E)fYa<9!R?odBd6Ajw( zsL>p24k?SUJWnIlpx2xJ0%TjFjkv5THsEoNUc|JGj{Tep1dZdwqD_jEHXOE2wcHzR zv09~sH-m#BJ8~`pl3gLOA358AT$7ZidZqgQ&z+u}?cj{qx-(Tjko}&1-VbDpSND$s z*=xNYQ+*l8ZJwNO18GWf&$X)04`r=3*mL<3)*P=qqeun7>F-Yi(MJk1vKQktoRLk# zH^cUMsZIovMl=l2w0jE33|k&boDW3alR_j@#J5(_Q@gyHX22QsBwr3>nTJ$>G<%W< zfMhI!FR50U-z-~qUcDEb6#nXdN@Nd^5mZi>nJai4|Cd_*V2ZYrycxEHoP!YAZ#lgB z6y#(rhsa$(WF=Ymg8P6p;Z8E9i~-T_pF+=w>uP!YY-zOHlM^jL++yoR$&Enf*d9mZ z4M2D#etr`XG+fdatxN?l$-M$(%+u<%KxTT#Cn!f9w1gMoEVP7s!AW`Lc@PMBNqL?$ zauVb@Aa{E8I{qA;6Sbu^b~2D5kMmj}CwL`14@j5S%4>lPdz>vmp74-7kbX~c9}wBM zqjSFw$hb{KpHRVYmG#U?~Q6MwCTKp79 z#-@rpFkHc+$2{A30vsNRR;Ob@MxJrdq7dxh{-~Gg}lh2a9X@nRUmXG+UnFN&?(-l>AS%h^N`ztM3}2Ul(B?6fyk2))C=Do z=*4Kh)=TwWa2l;0GV){;Ipo#-7vLO3^Cqox2*?bt%r8C{F+fsN{XtDUMsUZ%dUXdP&&W{s4aI!EoL=;VSNCs#GtS_a$;T zde$mY#-W-O)6gZtBJR|mBa79^cLDQk16q~lPESP^A?=5#E8hXVkqLr%2g`lixmicj_2eJ6E6`ihtENl7BJSxai7plE| zJ*~+VYL2Fmdwuwdp?VueaVxo<`78SntEwyfynU@ppSG2H@U?xDzm`xdxpL*o)D){s zx(xQZwNxtR@$gMa#wvna3}j13Wp33~2P?T=8Ed6lmzuB|dRb*5@hB3A_D6E$E#r5FYM_4?^;9#L{d1$and2r>F2Ukh9xUl7^ zzmXV!UG^Z>WzV$(bXS^i**RCAT2d%KMyT)eQ}KOpCgkEt8yuuM<*$?KGyQ2!eGYZ0 z*;j|YM8@uAZ+@rWN}%_ZeXV%c=AvL)#$0ZPQJPn7W?yyHRT$;r28_bk?pm?zx4I)& zy9@Xsn4X?|FG_6IndYI?)fzrfRi1Z_Dr-x;vkU&toF^4+;UbT@#GC$wtMaWS-S1lX z@B~S!eMPN_77XusSc3zg#(rD0aGkv#s^zP-KIV0ENT&v{T@~z6lq8SV!*Qttl<^d&gQYVSfM+(HZytP0ZQjBFPXMP2LKYP0RUrX<@kz6_#LS#ykC7>tPJ&8a zn?ws9J|^e1H!4vS%4;UhS6sv^A54boGtEuE?Y5N~Rg5ZYxlYGmjnb^6H`lI*YT@MF z2b4Tc>5cz4sT}955_#7ujq3^(#Ru5uSPi2vanNXK&v`3r(O+a_r)%Mw4L-J>xQZ4G z-B3W8W2vP{lHXXdK1u>bH&23)m;ncGWKB2vph?aldf$>TX!3loi zwwx~ejPlL>T$LX?Ru_!dXC=)&8T8; zKHnajuC2ljd}J5{xM3BD4dRoAEE) zZAYot&L6E%?DZc{z9^Q^gChAcXr-}>V&<>px9cPMR%U9@D*Z1@|igQ1rWg$4` zGlx~)b#B2j$IwKKm1&5qtHmkU%IvgXhU ze>_K*8A@HiE~DovTYwK-Rbwzv11_k=op=)=CKKb2=74z4Arv z-Y<$fOEA=miL3QxN3KYVR#~WkJuk(?zy%Akx03U6shV8ijK3i+S))OvwN~KgiV(Ni z$jMx*$p;59&Sj7-ok69qw^u@QUhAmM-riZsX)UZ^pLVV=OH2YFB`A@rx+_GN`mpA! zj9hwbdn;Wvl#P;BFib$AI58st7(pN01&9(?19SotT%iDX2tphR-8Vgy{yl^Te8s(L24CWi4PL(`hr zk6P9kf95huWyT9O+C~yR5tHzHO{#e^ruEHOl4z5u zcynx9q8aPTRR%#4e5}+LN(j7yb5(cRTT)$KH;>cDF%|cHfp!hLospd*#@0*f+zj`* z0`1(bO$reLkqu@p&-2ypBEY8D&W=`NWZb#ZouMkE#YY$#tL~@0`)V~|F?}30Ud=6o z#zU&)EFk)ay2T;Vy@q`%i`3?>nq*f`uF{RRR^b=VTl4UA9le+tRr9DLXQ!psyaLdy zxsLo!^ru`AvjsJlV9sw84#O$u(CsBEz>KM~%PIw94ptc|`F1maW5aI+ziSV>$(OtG zJ^2cQWR$g>W3a%2z{Z$Df(v!go!^D;*4o+EVl{R{N@pU)y^nAJdRU2gs8T6lh04F= zoJb(0&^nq7A}iTWsyirQptk4ROs}u*M9z9hL48pjUPE>KgGDi(LY+m#OFUQUl^?b` zG$31wvt88?x}{gL=hq6DQ%D@X5;1@k)6rKfcItI5&Jpsx_@F!!BC^c$SDJB-<}Rp6 z9l>rX*1M!Qnuy5&G{%Fo-coYjVNOwRHOev^W!Q{fuObL_t~wyk+6$cpEU#;Z9&8~` zZ_i`K`mrLK3S>r(YSyNPwU}(A1WE4}fiFpB1|9T8+_#CvNQ4o_!!KR}56|m)3l}dz zc<0_)j40CFS_~G%nrC(l+w;9j^H2+J=nxwO48PdwsJMk*IZKMg`q}tF4Jrk6E+q(7 z(O;Xd&AG{rCurg=YAIDU>=sm~J8uFrbFl!UI&Q+-Y6r{}2KF^qECOx#K4vUap?tMX z<*GAUWVDUDI>uJnR(JK*aw1kCY8t0k6;+#YBee-6P5Gc=Q*V>NtjuhIC6&5!U8q0$ zCFb?WO3kSF8}jh+K-F10rvd6rZ{#-T>d~Y=hiT(6r9S5aL4Bqk7V1;<5G-aY8ERSG z5)7!G16!&Axlggw1MeXP(SW&&qRLqgA)=JeoT)Vzg(W59BTvoa;}JPU(d0BC=qar( zFSm5-WUxCLDz&2@1?Y1%_KFO4O3eUUHGncHLh5QA%%#*?&?Emk88fwyTBpWK_FgsY zA)?XKSnQZI(|CI99G{52s8Za-a*K2}@Mp_e?? z#~rN;l!2oktXF&WVbJJ@_%~iKZ_)h4dMdddOM0^SzCP~C_vg%nS0!U9kiVa&xk?(%R3FZ0&4Q4D^%mQgocxmmSBhc##T6=Gbd0iE-QT+MjMg^S?(aET>~MJP0A zW(SQv)z3SvA%9Ub-pqXM7PfUh?(Ay*Ut>_`jZggb{Bc~w`AvsT-f@MvmEuA>XJ7yz5l zHeBc_)N}(w0U)C75V@(Drh8Q^V4%(w(T{+tfxpi@Uc&I9hijxkPjjx21;eaP#8xJN zfo5s-L{M9vnxz7TV9Yk9Vux=-@6#2Ev0#HuM@9znLx{5@uYZ+RXQ7N+-(S##5^(g_ ztIs^up#~PWO0YuA4H4}sotXrf(5UFB(ucqqeVZLcFYZ*i%G#gTepwg7NX78eTPh)1 zVUamLBgE%Ql5T7?>18&)2L~aOUaakq)>h5Fik5)+7DOP$DlQ*kAJ@tY%q7DcUhuCH zV)Uu2r$}rJmH|ekBox+rygW^*_FeiTFTU?90HS@ zm;|VGZ}j{;7Erp>vsX=40cTqdre#vwMd}SEl+oEpWViv1VV^^8V2QaLY|`Q?IWud_ z`nS}S&tZ>f-Nm}|OuZnXPtDU$eW5n^su85E3pGY7nu}IU-@5Tuj)o|Lff{YD9Sfvt ztU+goW3ukA4G%MS!jGYm3LNfw@tY7k@^YogMb)2F7h9+&%4RJax7*S05t{09(Q9ip zs?ztWpNLa6(Pye$kgbgr-IcyC#u8Oqu8egn)LH@Nib7S)tU8WPvqTpheU3TU85Dgz z9-uO!>eoc}U@$OTA+QmF>;YL=p*3-I6I?ToxXAGwFFret1X>VL- z(((d}hxQutN%xYs)k+2ls!t`t)aav40#39Afr^@=>(dRUQO&5KMg#aJb*b%`30C{l zcKsV``kQ+5`Y_w-&KIFl#uZrJ(hJq9#~@IdzW@UeM;U0dT}^O!u0|C0@)Dl5adDPb zZ+>Wt2GpKcPs|gQQ#P(>(R_szl=7|xe8ixQqd zRn}1UW{f@6YOTvW`q!7qBb3eXqu6jDjkOuM+lBMZY&m)KvKb4?h$56k32QfFF$YVz z7{?W?GhUA>sLLeU=*w+IDY=q^8(R}&+6p7)6hj9QxTpLNpUo#*oCa2Uy%+}n{r&S_6;Rej?XHjMXU)CX6UIipFT3Mr9(dMH=u zSB2tLa#c-=sD5cma5eJE1zlMyR*mEuPnXaFa)m`_eTpoxx}^G$+^g(}y+-J*2iPe5 zE-PE_%04`5GO}Wf5w;WbnO-oDKN~R*ai`wo78lS0@oHGtYCN>9t;Upgc^W=g<7QsJ zxd3vmn9(cT>G@b?)b}wdrnga6p*<58xT-Y@Ft?N~r!h9h@gfRdHs+s!h%7 z<4abxtX~L)8K9U3Z$t{HQ82nG?jFnxwB+VPwUs9Lz1XYBK&0rOcB54pxQS3DQ90aNZwdt3G%q_KCqFHP5wU%79 zwu;MLX^h4j^0iI9+Ecf$>Tk=ds1mBi7^w=RM4J-4r7w?SD)(ud=3+EiUCZdTWqd** zMrP|u?R~{O85d(xx!g(3w?s_&^!gKhGG@`D8eQHCs?94_ZfJoYT7kiORexdt8;e!Q z-^{Ils-$Sup6U*KmN>?4KI7L^F)!eBf)l7bYlymb<`XFwU`4;6R?t^s5?6o&-+(zX zo{a0}FgCCJNHg|D)bbP2kY~B7JiIBtR7}6OU}~w>uXL@<=}j!_kxM)dAe*=4EjDK&8X!9I!-R~ay@ zqRjZ-L7lcQEwtxXqC6W*>)_Eu-Mb5QGD{?Kp6a1#aPBu2@b(&k;wX ziUkkY8n^XvGSDw-^ldH8I&P^l9F~wq3~wLim!S&9!Q37vuL=9OWx*>Q4oT!RdE@P=Lw(+p3G3*;G<{ zjJ@hXt?D3RY*=?LBjOYzG+gQ>sjS||j;t^dg4NWuF;t2VdzfOWbzZGPY$H}JJwYQv zuW;&Z%ds&Tkul2?AoF(SbKUchXZ`+WrQvz8uS;#5Sl#y>3J}=vyuqdOwylQV0oF9Q_>G^a(*_3gDQWDc#$!J&T!K$v_mSm->&!M1j z*0!|E&|_#PtO7=exi>UjZL1XUhB%_+YFnY;47jFPRqZ|z7od(R&_gDi!nNpO&gmfL z>m`hBqzP2E^@F0eZ1rND(VzKlMO_tH&bpyKzF;}#!p0q04cT624WE&(viZq-3aWuo zTzgT;I2>xto1o5E7R9U3V6D5^R4&G54xe1Bl!|srq+G7)Ac!lq?^JPv)I@1S z7Lu{YAJGNYMD*e!V~~|xA5A)^dCk=*&paE7SGu8wV@OK4JTg>su{c*QtGy1K%<;i7 z2Y2Ouq(FS*+=Lv)-mG`k9iYv&f}V$|-TtO?wAJ@X{g6p(K))^|4(iBE5gO*}xaeM9 z9UUuN)vrSlQ&?$|L}m6tY3vQ|YJF0Ic1)`{0yE^&CaT}laV|M+*7wXe9i$18j%5rs z=~zi@V%{TBA@Bro7Hi3s2>dmV1vq`jSmO3Pox6T&pwAIY?U*o%QFSm1@tr$zFbY*1 z^>qxXmx}-0TCzwO%o&YL=)as`)Vx4%L}9YY2^~_i)7H6Z^BovgR-y?S66{a%UL(O~ zFc9l^Gvj!I*gBbHyR{c@uv)ELu0y|t$6TJ~LeeS*lM}^&Zu;lx(DF3jnKbBTL3D_f zaU0;NG1ranbT^_SHd6}Q+GOeke(+P69&A+om9a(DI(g_$trO`C%{L)@i-a{N z0f6##+H{OrOyprz#ntkkjabx^Wu41p1802Uj`$MuveHT}l_wJ!7>IsGu%0_bvABg1 z#n!#!!V5_IW!vJm1VjBA-x+bx{urUWiq^NDX?6X;Nd(kmY>CVP=C9 zM_QO4OftpNZa@bdZX{DgJiu@mv6Y_iC`FpDrl2q!PR!z#zN6pvmSRre$ekIsO2H)? z*XyB{-1uPnTH-MkS=MDt$51aXQ(Ilw0M{M&xY1QNo=oM7ctej%8Y;1RGZituGY3>& zslEi}YmE}yJ9qBCstatus: ", cur_buff_status) cur_buff_status = dict.buffer("GET_CUR_BUFF_STATUS") end - if ( i == 2048*1024/buff_size) then break end + --if ( i == 2048*1024/buff_size) then break end + if ( i == 4096*1024/buff_size) then break end -- if ( i == 32*1024/buff_size) then break end i = i + 1 -- if ( (i % (2048*1024/buff_size/16)) == 0) then diff --git a/host/scripts/app/nes.lua b/host/scripts/app/nes.lua index 4f9ba16..d39ee37 100644 --- a/host/scripts/app/nes.lua +++ b/host/scripts/app/nes.lua @@ -133,7 +133,7 @@ local function detect_mapper_mirroring (debug) local rv - print("attempting to detect NES/FC mapper via mirroring..."); + if(debug) then print("attempting to detect NES/FC mapper via mirroring...") end -- //TODO call mmc3 detection function -- -- //TODO call mmc1 detection function @@ -144,16 +144,20 @@ local function detect_mapper_mirroring (debug) rv = dict.nes("CIRAM_A10_MIRROR") if (rv == op_nes["MIR_VERT"]) then if debug then print("vertical mirroring sensed") end + return "VERT" elseif rv == op_nes["MIR_HORZ"] then if debug then print("horizontal mirroring sensed") end + return "HORZ" elseif rv == op_nes["MIR_1SCNA"] then if debug then print("1screen A mirroring sensed") end + return "1SCNA" elseif rv == op_nes["MIR_1SCNB"] then if debug then print("1screen B mirroring sensed") end + return "1SCNB" end -- Rtn: VERT/HORIZ/1SCNA/1SCNB - return true + return nil end -- Desc:CHR-ROM flash manf/prod ID sense test diff --git a/host/scripts/inlretro.lua b/host/scripts/inlretro.lua index a08468c..9d6bef8 100644 --- a/host/scripts/inlretro.lua +++ b/host/scripts/inlretro.lua @@ -22,11 +22,18 @@ function main () --cart/mapper specific scripts --local curcart = require "scripts.nes.nrom" + --local curcart = require "scripts.nes.mmc1" --local curcart = require "scripts.nes.unrom" - local curcart = require "scripts.nes.bnrom" + --local curcart = require "scripts.nes.mm2" + --local curcart = require "scripts.nes.mapper30" + --local curcart = require "scripts.nes.bnrom" --local curcart = require "scripts.nes.cdream" + --local curcart = require "scripts.nes.cninja" --local curcart = require "scripts.nes.action53" --local curcart = require "scripts.nes.action53_tsop" + --local curcart = require "scripts.nes.easyNSF" + --local curcart = require "scripts.nes.dualport" + local curcart = require "scripts.snes.v3" local rv -- rv = dict.pinport( "DATA_SET", 0xAA ) @@ -71,7 +78,7 @@ function main () --PROCESS USER ARGS ON WHAT IS TO BE DONE WITH CART local force_cart = true - cart_console = "NES" + cart_console = "SNES" if (force_cart or cart.detect_console(true)) then if cart_console == "NES" or cart_console == "Famicom" then @@ -152,7 +159,7 @@ function main () --]] - ---[[ + --[[ --test reading back CIC version dict.io("SWIM_INIT", "SWIM_ON_A0") if swim.start(true) then @@ -176,19 +183,49 @@ function main () --NROM --curcart.process( true, true, true, true, true, "ignore/dump.bin", "ignore/ddug2.bin", "ignore/verifyout.bin") + --DUALPORT + --curcart.process( true, false, false, false, false, "ignore/dump.bin", "ignore/ddug2.bin", "ignore/verifyout.bin") + --MMC1 + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/BB_sgrom.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/Zelda2.bin", "ignore/verifyout.bin") + --UxROM --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/nomolosFINAL.prg", "ignore/verifyout.bin") --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/owlia_revb.prg", "ignore/verifyout.bin") + --curcart.process( true, false, false, false, false, "ignore/dump.bin", "ignore/rushnattack.prg", "ignore/verifyout.bin") + --curcart.process( true, false, false, false, false, "ignore/dump.bin", "ignore/TDfix.prg", "ignore/verifyout.bin") + + --MM2 + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/mm2_i0.prg", "ignore/verifyout.bin") + --curcart.process( true, true, false, false, false, "ignore/dump.bin", "ignore/mm2_i0.prg", "ignore/verifyout.bin") + + --UNROM512 mapper 30 + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/MysticOrigins.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/tb_map30.prg", "ignore/verifyout.bin") + + --BNROM - --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/lizard_v2.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/lizard_PG.prg", "ignore/verifyout.bin") --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/lizard_v2_fr.prg", "ignore/verifyout.bin") - curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/hh85.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/hh85.prg", "ignore/verifyout.bin") --COLOR DREAMS --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/multicart_mojontalesFINAL.prg", "ignore/verifyout.bin") + --COLOR NINJA + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/ninja.bin", "ignore/verifyout.bin") + --A53 PLCC - --curcart.process( true, true, true, true, true, "ignore/dump.bin", "ignore/da53v2.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/a53v1_SBR2.prg", "ignore/verifyout.bin") --A53 tssop --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/a53vol3.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/2a03puritans_RE.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/a53vol3_giftmsg_0xFF.prg", "ignore/verifyout.bin") + --curcart.process( true, false, false, false, false, "ignore/dump.bin", "ignore/writethe actual message.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/mappertests/test28-8Mbit.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/mappertests/M28_P1M_CR32K.prg", "ignore/verifyout.bin") + + --easy NSF tssop + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/2a03puritans_RE.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/rndm2_1MB.prg", "ignore/verifyout.bin") --[[ @@ -223,132 +260,160 @@ function main () elseif cart_console == "SNES" then - snes_swimcart = nil - --[[ - if swim.start(true) then - --SWIM is now established and running at HIGH SPEED - snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead - - --check if ROP set, allow clearing ROP and erasing CIC - --blindly erase STM8 CIC for now by disabling ROP - swim.disable_ROP_erase(true) - - --open CIC file - local cic_file = assert(io.open("SNESCIC_flashmode.bin", "rb")) - - --write CIC file - swim.write_flash( cic_file ) - - --close CIC file - assert(cic_file:close()) - - -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed - swim.stop_and_reset() - else - print("ERROR problem with STM8 CIC") - end - --]] - - dict.io("IO_RESET") - dict.io("SNES_INIT") + --new SNES code + + --SNES + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/MMXdump.bin", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/smw.sfc", "ignore/verifyout.bin") + --curcart.process( true, true, false, false, false, "ignore/dump.bin", "ignore/hsbm_4Mbit_Lo.sfc", "ignore/verifyout.bin") + curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/hsbm_4Mbit_Lo.sfc", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/hsbm_4Mbit_Hi.sfc", "ignore/verifyout.bin") - --SNES detect HiROM or LoROM - --nes.detect_mapper_mirroring(true) - local snes_mapping = "LOROM" - --SNES detect if there's save ram and size - - ---[[ - --SNES detect if able to read flash ID's - if not snes.read_flashID(true) then - print("ERROR unable to read flash ID") - return - end - - --quick lame check to see if chip erased - if snes.read_reset_vector(0, true) ~= 0xFFFF then - erase.erase_snes( false ) - end - if snes.read_reset_vector( 1, true) ~= 0xFFFF then - erase.erase_snes( false ) - end - if snes.read_reset_vector( 20, true) ~= 0xFFFF then - erase.erase_snes( false ) - end - if snes.read_reset_vector( 63, true) ~= 0xFFFF then - erase.erase_snes( false ) - end - - --FLASHING: - --erase cart +-- --old SNES code +-- +-- snes_swimcart = nil +-- dict.io("IO_RESET") +-- print("start swim") +-- +-- dict.io("SWIM_INIT", "SWIM_ON_A0") +-- --[[ +-- if swim.start(true) then +-- --SWIM is now established and running at HIGH SPEED +-- snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead +-- print("swim prgm mode") +-- +-- --check if ROP set, allow clearing ROP and erasing CIC +-- --blindly erase STM8 CIC for now by disabling ROP +-- swim.disable_ROP_erase(true) +-- +-- --open CIC file +-- local cic_file = assert(io.open("SNESCIC_flashmode.bin", "rb")) +-- +-- --write CIC file +-- swim.write_flash( cic_file ) +-- +-- --close CIC file +-- assert(cic_file:close()) +-- +-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed +-- swim.stop_and_reset() +-- else +-- print("ERROR problem with STM8 CIC") +-- end +-- --]] +-- +-- dict.io("IO_RESET") +-- dict.io("SNES_INIT") +-- +-- +-- --SNES detect HiROM or LoROM +-- --nes.detect_mapper_mirroring(true) +-- local snes_mapping = "LOROM" +-- --SNES detect if there's save ram and size +-- +-- ---[[ +-- --SNES detect if able to read flash ID's +-- if not snes.read_flashID(true) then +-- print("ERROR unable to read flash ID") +-- return +-- end +-- -- erase.erase_snes( false ) - --open file - local file - ---[[ file = assert(io.open("flash.bin", "rb")) - --file = assert(io.open("SF2_PTdump_capcomFINAL.bin", "rb")) - file = assert(io.open("ignore/MMXdump.bin", "rb")) - - --calculate checksum - --local data = file:read("*all") - --print(crc32.hash(data)) - - --determine if auto-doubling, deinterleaving, etc, - --needs done to make board compatible with rom - --flash cart - flash.flash_snes( file, true ) - --close file - assert(file:close()) - --]] - - dict.io("IO_RESET") - print("start swim") - - dict.io("SWIM_INIT", "SWIM_ON_A0") - --flash final CIC code - if swim.start(true) then - --SWIM is now established and running at HIGH SPEED - --swim.printCSR() - --snes_swimcart = false - --print("main swimcart", snes_swimcart) - - swim.swim_test() - - --check if ROP set, allow clearing ROP and erasing CIC - --blindly erase STM8 CIC for now by disabling ROP - -- swim.disable_ROP_erase(true) - - --open CIC file - local cic_file = assert(io.open("SNESCIC.bin", "rb")) - - --write CIC file - swim.write_flash( cic_file ) - - --close CIC file - assert(cic_file:close()) - - --write option bytes - -- enable ROP, debug - swim.write_optn_bytes( false, true ) - - -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed - swim.stop_and_reset() - else - print("ERROR problem with STM8 CIC") - end - --]] - - --DUMPING: - --create new file - print("dumping SNES") - snes.read_reset_vector(0, true) - local file - file = assert(io.open("snesdump.bin", "wb")) - --dump cart into file - -- swim.start() - -- dump.dump_snes( file, snes_mapping, true ) - - --close file - assert(file:close()) +-- --quick lame check to see if chip erased +-- ---[[ +-- if snes.read_reset_vector(0, true) ~= 0xFFFF then +-- erase.erase_snes( false ) +-- end +-- if snes.read_reset_vector( 1, true) ~= 0xFFFF then +-- erase.erase_snes( false ) +-- end +-- if snes.read_reset_vector( 20, true) ~= 0xFFFF then +-- erase.erase_snes( false ) +-- end +-- if snes.read_reset_vector( 63, true) ~= 0xFFFF then +-- erase.erase_snes( false ) +-- end +-- --]] +-- +-- --FLASHING: +-- --erase cart +---- erase.erase_snes( false ) +-- --open file +-- local file +-- ---[[ file = assert(io.open("flash.bin", "rb")) +-- --file = assert(io.open("SF2_PTdump_capcomFINAL.bin", "rb")) +-- file = assert(io.open("ignore/MMXdump.bin", "rb")) +-- +-- --calculate checksum +-- --local data = file:read("*all") +-- --print(crc32.hash(data)) +-- +-- --determine if auto-doubling, deinterleaving, etc, +-- --needs done to make board compatible with rom +-- --flash cart +-- flash.flash_snes( file, true ) +-- --close file +-- assert(file:close()) +-- --]] +-- +-- dict.io("IO_RESET") +-- dict.io("SNES_INIT") +-- print("start swim") +-- +-- --[[ +-- dict.io("SWIM_INIT", "SWIM_ON_A0") +-- --flash final CIC code +-- if swim.start(true) then +-- --SWIM is now established and running at HIGH SPEED +-- --swim.printCSR() +-- --snes_swimcart = false +-- --print("main swimcart", snes_swimcart) +-- +-- print("swimming") +-- swim.swim_test() +-- +-- --check if ROP set, allow clearing ROP and erasing CIC +-- --blindly erase STM8 CIC for now by disabling ROP +-- -- swim.disable_ROP_erase(true) +-- +-- --open CIC file +-- local cic_file = assert(io.open("SNESCIC.bin", "rb")) +-- +-- --write CIC file +---- swim.write_flash( cic_file ) +-- +-- --close CIC file +-- assert(cic_file:close()) +-- +-- --write option bytes +-- -- enable ROP, debug +---- swim.write_optn_bytes( false, true ) +-- +-- --read stack +-- swim.read_stack(true) +-- +-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed +-- swim.stop_and_reset() +-- +-- else +-- print("ERROR problem with STM8 CIC") +-- end +-- --]] +-- +-- +-- --DUMPING: +-- --create new file +-- print("dumping SNES") +-- snes.read_reset_vector(0, true) +-- local file +-- file = assert(io.open("snesdump.bin", "wb")) +-- --dump cart into file +-- -- swim.start() +-- dump.dump_snes( file, snes_mapping, true ) +-- +-- --close file +-- assert(file:close()) --trick to do this at end while debugging so don't have to wait for it before starting diff --git a/host/scripts/nes/action53_tsop.lua b/host/scripts/nes/action53_tsop.lua index ded1e76..cf7b808 100644 --- a/host/scripts/nes/action53_tsop.lua +++ b/host/scripts/nes/action53_tsop.lua @@ -47,6 +47,7 @@ local function init_mapper( debug ) --enable flash writes $5000 set to 0b0 101 010 0 dict.nes("NES_CPU_WR", 0x5000, 0x54) + --dict.nes("NES_CPU_WR", 0x5555, 0x54) end @@ -54,6 +55,7 @@ end --read PRG-ROM flash ID local function prgrom_manf_id( debug ) + local rv init_mapper() if debug then print("reading PRG-ROM manf ID") end @@ -66,10 +68,6 @@ local function prgrom_manf_id( debug ) if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end --0x01 rv = dict.nes("NES_CPU_RD", 0x8002) if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end --0xDA(top), 0x5B(bot) --- rv = dict.nes("NES_CPU_RD", 0x801C) --- if debug then print("attempted read PRG-ROM density ID:", string.format("%X", rv)) end --- rv = dict.nes("NES_CPU_RD", 0x801E) --- if debug then print("attempted read PRG-ROM bootsect ID:", string.format("%X", rv)) end --exit software dict.nes("NES_CPU_WR", 0x8000, 0xF0) @@ -77,6 +75,128 @@ local function prgrom_manf_id( debug ) end +local function read_gift( base, len ) + + local rv + init_mapper() + + --select last bank in read only mode + dict.nes("NES_CPU_WR", 0x5000, 0x81) + dict.nes("NES_CPU_WR", 0x8000, 0xFF) + + local i = 0 + + while i < len do + rv = dict.nes("NES_CPU_RD", base+i) + io.write(string.char(rv)) + i = i+1 + end + + i = 0 + + print("") + + while i < len do + rv = dict.nes("NES_CPU_RD", base+i) + io.write(string.format("%X.", rv)) + i = i+1 + end + + print("") +end + +local function write_gift(base, off) + + local i + local rv + init_mapper() + + --select last bank in flash mode + dict.nes("NES_CPU_WR", 0x5000, 0x81) + dict.nes("NES_CPU_WR", 0x8000, 0xFF) + dict.nes("NES_CPU_WR", 0x5000, 0x54) + + --enter unlock bypass mode + dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) + dict.nes("NES_CPU_WR", 0x8555, 0x55) + dict.nes("NES_CPU_WR", 0x8AAA, 0x20) + + --write 0xA0 to address of byte to write, then write data + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, 0x00) --end previous line + off=off+1 + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, 0x15) --line number..? + off=off+1 + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, string.byte("(",1)) --start with open parenth + + + --off = off + 1 --increase to start of message but index starting at 1 + i = 1 + + --local msg1 = "Regular Edition" + --local msg1 = "Contributor Edition" + local msg1 = "Limited Edition" + local msg2 = "100 of 100" -- all flashed + + --local msg1 = " Contributor Edition " + --local msg2 = " PinoBatch " --issue if capital P or R is first char for some reason.. + + local len = string.len(msg1) + + while (i <= len) do + dict.nes("NES_CPU_WR", base+off+i, 0xA0) + dict.nes("NES_CPU_WR", base+off+i, string.byte(msg1,i)) --line 1 of message + print("write:", string.byte(msg1,i)) + i=i+1 + end + + off = off + i + + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, 0x00) --end current line + off=off+1 + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, 0x16) --line number..? + off=off+1 + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, string.byte("(",1)) --start with open parenth + + i = 1 + + + len = string.len(msg2) + + while (i <= len) do + dict.nes("NES_CPU_WR", base+off+i, 0xA0) + dict.nes("NES_CPU_WR", base+off+i, string.byte(msg2,i)) --line 2 of message + print("write:", string.byte(msg2,i)) + i=i+1 + end + + off = off + i + + dict.nes("NES_CPU_WR", base+off, 0xA0) + dict.nes("NES_CPU_WR", base+off, 0x00) --end current line + + --]] + + + --poll until stops toggling, or data is as wrote +-- rv = dict.nes("NES_CPU_RD", 0x8BDC) +-- print (rv) + + + --exit unlock bypass + dict.nes("NES_CPU_WR", 0x8000, 0x90) + dict.nes("NES_CPU_WR", 0x8000, 0x00) + --reset the flash chip + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + +end + + --Cart should be in reset state upon calling this function --this function processes all user requests for this specific board/mapper local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) @@ -92,6 +212,16 @@ local function process( test, read, erase, program, verify, dumpfile, flashfile, --test cart by reading manf/prod ID if test then prgrom_manf_id(true) + + --manipulate gift message + local base = 0x8BD0 + local start_offset = 0xC + local len = 80 + read_gift(base, len) + + write_gift(base, start_offset) + + read_gift(base, len) end --dump the cart to dumpfile diff --git a/host/scripts/nes/blank.lua b/host/scripts/nes/blank.lua new file mode 100644 index 0000000..aca1074 --- /dev/null +++ b/host/scripts/nes/blank.lua @@ -0,0 +1,26 @@ + +-- create the module's table +local blank = {} + +-- import required modules +local dict = require "scripts.app.dict" + +-- file constants + +-- local functions +local function func() + +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +blank.func = func + +-- return the module's table +return blank diff --git a/host/scripts/nes/bnrom.lua b/host/scripts/nes/bnrom.lua index 70f6cc5..66e53f3 100644 --- a/host/scripts/nes/bnrom.lua +++ b/host/scripts/nes/bnrom.lua @@ -136,9 +136,9 @@ local function process( test, read, erase, program, verify, dumpfile, flashfile, --find bank table in the rom --write bank table to all banks of cartridge --Lizard's bank table is at $FF94 so hard code that for now - --wr_bank_table(0xFF94, 16) + wr_bank_table(0xFF94, 16) --hh85 bank table at $FFE0 - wr_bank_table(0xFFE0, 16) + --wr_bank_table(0xFFE0, 16) --flash cart flash.write_file( file, 512, "BxROM", "PRGROM", true ) diff --git a/host/scripts/nes/cdream.lua b/host/scripts/nes/cdream.lua new file mode 100644 index 0000000..11589e6 --- /dev/null +++ b/host/scripts/nes/cdream.lua @@ -0,0 +1,236 @@ + +-- create the module's table +local cdream = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions +local function wr_flash_byte(addr, value, debug) + + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xA0) + dict.nes("DISCRETE_EXP0_PRGROM_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end +end + +--base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) +local function wr_bank_table(base, entries) + + --CDREAMS needs to have a bank table present in each and every bank + --it should also be at the same location in every bank + --Perhaps it's possible to squeak by with only having it in the first bank as mojontales does.. + + --doesn't actually matter what bank this gets written to, lets ensure we can get to bank zero + wr_flash_byte(0x800C, 0x00) + + --select first bank relying on 0 to override 1 for bus conflict + dict.nes("NES_CPU_WR", 0x800C, 0x00) + + --write bank table to selected bank + local i = 0 + while( i < entries) do + wr_flash_byte(base+i, i) + i = i+1; + end + + + --need a zero value in each bank to get back to first bank + wr_flash_byte(0x800C, 0x00) --first bank + + --now place one in all the other banks + --first swap to next bank + i = 1 + while( i < 16) do --16 banks total for 512KByte + dict.nes("NES_CPU_WR", 0x0000, 0x00) --select first bank + dict.nes("NES_CPU_WR", base+i, i) --jump to next bank + wr_flash_byte(0x800C, 0x00) --write zero byte + i = i + 1 + end + + +end + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + nes.detect_mapper_mirroring(true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + nes.read_flashID_prgrom_exp0(true) + + --enter software mode + --CDREAMS connects CHR-ROM A13-16 to mapper bits 4-8 + --so need to set mapper register bits 4 & 5 properly to send unlock commands + --A13 needs to be low to address CHR-ROM + -- 15 14 13 12 + -- 0x5 = 0b 0 1 0 1 -> bank:0x20 $1555 + -- 0x2 = 0b 0 0 1 0 -> bank:0x10 $0AAA + + --TODO find bank table prior to doing this + --or write to mapper without enabling PRG-ROM via exp0 + --tried DISCRETE_EXP0_MAPPER_WR function but didn't work... + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x90) + + --read manf ID + rv = dict.nes("NES_PPU_RD", 0x0000) + if debug then print("attempted read CHR-ROM manf ID:", string.format("%X", rv)) end + + --read prod ID + rv = dict.nes("NES_PPU_RD", 0x0001) + if debug then print("attempted read CHR-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_PPU_WR", 0x0000, 0xF0) + + end + +--dump the cart to dumpfile + if read then + file = assert(io.open(dumpfile, "wb")) + + --TODO find bank table to avoid bus conflicts! + --dump cart into file + dump.dumptofile( file, 512, "CDREAM", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + +--erase the cart + if erase then + + print("\nerasing CDREAM"); + + print("erasing PRG-ROM"); + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0x80) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + + print("erasing CHR-ROM"); + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x80) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x10) + + rv = dict.nes("NES_PPU_RD", 0x0000) + + i = 0 + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_PPU_RD", 0x0000) + i = i + 1 + end + print(i, "naks, done erasing chr.\n"); + end + + +--program flashfile to the cart + if program then + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --find bank table in the rom + --write bank table to all banks of cartridge + --Mojontales bank table is at $CC43 so hard code that for now + wr_bank_table(0xCC43, 256) + + --flash cart +-- flash.write_file( file, 32, "CDREAM", "PRGROM", true ) +-- flash.write_file( file, 128, "CDREAM", "CHRROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 512, "CDREAM", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +cdream.process = process + +-- return the module's table +return cdream diff --git a/host/scripts/nes/cninja.lua b/host/scripts/nes/cninja.lua new file mode 100644 index 0000000..c70f8c1 --- /dev/null +++ b/host/scripts/nes/cninja.lua @@ -0,0 +1,265 @@ + +-- create the module's table +local cninja = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions +local function wr_flash_byte(addr, value, debug) + + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xA0) + dict.nes("DISCRETE_EXP0_PRGROM_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end +end + +--base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) +local function wr_bank_table(base, entries) + + --CNINJA needs to have a bank table present in each and every bank + --it should also be at the same location in every bank + --Perhaps it's possible to squeak by with only having it in the first bank as mojontales does.. + + --doesn't actually matter what bank this gets written to, lets ensure we can get to bank zero + wr_flash_byte(0x800C, 0x00) + + --select first bank relying on 0 to override 1 for bus conflict + dict.nes("NES_CPU_WR", 0x800C, 0x00) + + --write bank table to selected bank + local i = 0 + while( i < entries) do + wr_flash_byte(base+i, i) + i = i+1; + end + + + --need a zero value in each bank to get back to first bank + wr_flash_byte(0x800C, 0x00) --first bank + + --now place one in all the other banks + --first swap to next bank + i = 1 + while( i < 16) do --16 banks total for 512KByte + dict.nes("NES_CPU_WR", 0x0000, 0x00) --select first bank + dict.nes("NES_CPU_WR", base+i, i) --jump to next bank + wr_flash_byte(0x800C, 0x00) --write zero byte + i = i + 1 + end + + +end + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + nes.detect_mapper_mirroring(true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + -- doesn't work for cninja + --nes.read_flashID_prgrom_exp0(true) + + --enter software mode + --CDREAMS connects CHR-ROM A13-16 to mapper bits 4-8 + --so need to set mapper register bits 4 & 5 properly to send unlock commands + --A13 needs to be low to address CHR-ROM + -- 15 14 13 12 + -- 0x5 = 0b 0 1 0 1 -> bank:0x20 $1555 + -- 0x2 = 0b 0 0 1 0 -> bank:0x10 $0AAA + + --TODO find bank table prior to doing this + --or write to mapper without enabling PRG-ROM via exp0 + --tried DISCRETE_EXP0_MAPPER_WR function but didn't work... + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x90) + + --read manf ID + rv = dict.nes("NES_PPU_RD", 0x0000) + if debug then print("attempted read CHR-ROM manf ID:", string.format("%X", rv)) end + + --read prod ID + rv = dict.nes("NES_PPU_RD", 0x0001) + if debug then print("attempted read CHR-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_PPU_WR", 0x0000, 0xF0) + + + --color ninja mapper has flash enable at $6000-7FFF which has to be 0xA5 +-- dict.nes("NES_CPU_WR", 0x6000, 0xA5) +-- not actually needed to ID flash since 32KB banks + + --now can write in flash mode + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x90) + rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + + --read prod ID + rv = dict.nes("NES_CPU_RD", 0x8001) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + --exit flash mode +-- dict.nes("NES_CPU_WR", 0x6000, 0x00) --any value besides 0xA5 + end + +--dump the cart to dumpfile + if read then + file = assert(io.open(dumpfile, "wb")) + + dict.nes("NES_CPU_WR", 0x6000, 0x00) --any value besides 0xA5 + + --TODO find bank table to avoid bus conflicts! + --dump cart into file + --dump.dumptofile( file, 128, "CNINJA", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + +--erase the cart + if erase then + + print("\nerasing CNINJA"); + + print("erasing PRG-ROM"); + --dict.nes("NES_CPU_WR", 0x6000, 0xA5) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x80) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + + print("erasing CHR-ROM"); + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x80) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + + dict.nes("NES_CPU_WR", 0x8000, 0x10) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + + dict.nes("NES_CPU_WR", 0x8000, 0x20) + dict.nes("NES_PPU_WR", 0x1555, 0x10) + + rv = dict.nes("NES_PPU_RD", 0x0000) + + i = 0 + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_PPU_RD", 0x0000) + i = i + 1 + end + print(i, "naks, done erasing chr.\n"); + end + + +--program flashfile to the cart + if program then + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --no bank table due to no bus conflicts + + --flash cart + dict.nes("NES_CPU_WR", 0x6000, 0xA5) --flash write enable + flash.write_file( file, 128, "CNINJA", "PRGROM", true ) + dict.nes("NES_CPU_WR", 0x6000, 0x00) --any value besides 0xA5 + flash.write_file( file, 128, "CDREAM", "CHRROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + dict.nes("NES_CPU_WR", 0x6000, 0x00) --any value besides 0xAA + + --TODO find bank table to avoid bus conflicts! + --dump cart into file + --dump.dumptofile( file, 128, "CNINJA", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "PRGROM", true ) + dump.dumptofile( file, 128, "CDREAM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +cninja.process = process + +-- return the module's table +return cninja diff --git a/host/scripts/nes/dualport.lua b/host/scripts/nes/dualport.lua new file mode 100644 index 0000000..9f2eb8d --- /dev/null +++ b/host/scripts/nes/dualport.lua @@ -0,0 +1,293 @@ + +-- create the module's table +local dualport = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions +local function init_mapper( debug ) + + --select bank 0 of flash + dict.nes("NES_PPU_WR", 0x3FFF, 0x00) +end + +local function read_dp(addr) + + dict.pinport("CTL_SET_HI", "M2") +-- dict.pinport("CTL_SET_LO", "ROMSEL") + + dict.pinport("ADDR_SET", addr) + rv = dict.pinport("DATA_RD") + print( string.format("%X", rv)) + + --disable rom + --dict.pinport("CTL_SET_HI", "ROMSEL") + dict.pinport("CTL_SET_HI", "M2") + +end + +local function write_dp(addr, data) + + --romsel controls /oe +-- dict.pinport("CTL_SET_HI", "ROMSEL") + --m2 controls /we + dict.pinport("CTL_SET_LO", "M2") + + dict.pinport("ADDR_SET", addr) + dict.pinport("DATA_OP") + dict.pinport("DATA_SET", data) + + --latch data + dict.pinport("CTL_SET_HI", "M2") + + --leave data bus floating + dict.pinport("DATA_IP") + + +end + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + + --SRAM TEST $2000-3FFF + --[[ + dict.nes("NES_DUALPORT_WR", 0x2000, 0x00) + dict.nes("NES_DUALPORT_WR", 0x20AA, 0x00) + dict.nes("NES_DUALPORT_WR", 0x2055, 0x00) + dict.nes("NES_DUALPORT_WR", 0x3FFF, 0x00) + + rv = dict.nes("NES_DUALPORT_RD", 0x2000) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x20AA) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x2055) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x3FFF) + print( string.format("%X", rv)) + + dict.nes("NES_DUALPORT_WR", 0x2000, 0x55) + dict.nes("NES_DUALPORT_WR", 0x20AA, 0x55) + dict.nes("NES_DUALPORT_WR", 0x2055, 0x55) + dict.nes("NES_DUALPORT_WR", 0x3FFF, 0x55) + + rv = dict.nes("NES_DUALPORT_RD", 0x2000) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x20AA) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x2055) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x3FFF) + print( string.format("%X", rv)) + + dict.nes("NES_DUALPORT_WR", 0x2000, 0xDE) + dict.nes("NES_DUALPORT_WR", 0x20AA, 0xAD) + dict.nes("NES_DUALPORT_WR", 0x2055, 0xBE) + dict.nes("NES_DUALPORT_WR", 0x3FFF, 0xEF) + + rv = dict.nes("NES_DUALPORT_RD", 0x2000) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x20AA) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x2055) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x3FFF) + print( string.format("%X", rv)) + + dict.nes("NES_DUALPORT_WR", 0x2000, 0x33) + dict.nes("NES_DUALPORT_WR", 0x3FFF, 0x33) + dict.nes("NES_DUALPORT_WR", 0x2555, 0x33) + dict.nes("NES_DUALPORT_WR", 0x3AAA, 0x33) + + rv = dict.nes("NES_DUALPORT_RD", 0x2000) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x3FFF) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x2555) + print( string.format("%X", rv)) + rv = dict.nes("NES_DUALPORT_RD", 0x3AAA) + print( string.format("%X", rv)) + --]] + + + dict.nes("NES_DUALPORT_WR", 0x0AAA, 0xAA) + dict.nes("NES_DUALPORT_WR", 0x0555, 0x55) + dict.nes("NES_DUALPORT_WR", 0x0AAA, 0x90) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + if debug then print("attempted read DP PRG-ROM manf ID:", string.format("%X", rv)) end --0x01 + rv = dict.nes("NES_DUALPORT_RD", 0x0002) + if debug then print("attempted read DP PRG-ROM prod ID:", string.format("%X", rv)) end --0xDA(top), 0x5B(bot) + + --exit software mode + dict.nes("NES_DUALPORT_WR", 0x0000, 0x90) + +end + +--[[ +local function wr_flash_byte(addr, value, debug) + + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xA0) + dict.nes("DISCRETE_EXP0_PRGROM_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end +end +--]] + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + nes.detect_mapper_mirroring(true) + nes.ciramce_inv_ppuA13(true) + -- nes.ppu_ram_sense(0x1000, true) + -- print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + --prgrom_manf_id( true ) + + rv = dict.nes("EMULATE_NES_CPU_RD", 0x8000) + print("read:", string.format("%X", rv)) + rv = dict.nes("EMULATE_NES_CPU_RD", 0x8001) + print("read:", string.format("%X", rv)) + + rv = dict.nes("NES_CPU_RD", 0x8000) + print("read:", string.format("%X", rv)) + rv = dict.nes("NES_CPU_RD", 0x8001) + print("read:", string.format("%X", rv)) + + rv = dict.nes("NES_PPU_RD", 0x0000) + print("read:", string.format("%X", rv)) + rv = dict.nes("NES_PPU_RD", 0x0000) + print("read:", string.format("%X", rv)) + + --[[ + --read some bytes to verify banking worked + dict.nes("NES_PPU_WR", 0x3FFF, 0x00) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + dict.nes("NES_PPU_WR", 0x3FFF, 0x01) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + dict.nes("NES_PPU_WR", 0x3FFF, 0x02) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + dict.nes("NES_PPU_WR", 0x3FFF, 0x03) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + dict.nes("NES_PPU_WR", 0x3FFF, 0x04) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + dict.nes("NES_PPU_WR", 0x3FFF, 0x05) + rv = dict.nes("NES_DUALPORT_RD", 0x0000) + print("read:", string.format("%X", rv)) + --]] + + end + +--dump the cart to dumpfile + if read then + file = assert(io.open(dumpfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 64, "DPROM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + +--erase the cart + if erase then + + init_mapper() + + print("\nerasing DUALPORT ROM"); + --A0-A14 are all directly addressable in CNROM mode + --only A0-A11 are required to be valid for tsop-48 + --and mapper writes don't affect PRG banking + dict.nes("NES_DUALPORT_WR", 0x8AAA, 0xAA) + dict.nes("NES_DUALPORT_WR", 0x8555, 0x55) + dict.nes("NES_DUALPORT_WR", 0x8AAA, 0x80) + dict.nes("NES_DUALPORT_WR", 0x8AAA, 0xAA) + dict.nes("NES_DUALPORT_WR", 0x8555, 0x55) + dict.nes("NES_DUALPORT_WR", 0x8AAA, 0x10) + rv = dict.nes("NES_DUALPORT_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_DUALPORT_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing flash"); + + end + + +--program flashfile to the cart + if program then + + --open file + file = assert(io.open(flashfile, "rb")) + + --flash cart + flash.write_file( file, 64, "DPROM", "CHRROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 64, "DPROM", "CHRROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +dualport.process = process + +-- return the module's table +return dualport diff --git a/host/scripts/nes/easyNSF.lua b/host/scripts/nes/easyNSF.lua new file mode 100644 index 0000000..b343caa --- /dev/null +++ b/host/scripts/nes/easyNSF.lua @@ -0,0 +1,188 @@ + +-- create the module's table +local easyNSF = {} + +-- import required modules +local dict = require "scripts.app.dict" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions + +--local function wr_flash_byte(addr, value, debug) + +--base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) +--local function wr_bank_table(base, entries) +--Action53 not susceptible to bus conflicts, no banktable needed + + + +--initialize mapper for dump/flash routines +local function init_mapper( debug ) + + --rom A11-0 are directly connected to CPU + --A12 pin is part of sector address + --in BYTE mode, pin A12 is actually CPU A13 + --so ROM A11 must be valid for flash commands + --ROM A11 pin is actually CPU A12 + --A12 is actually controlled my mapper register... + --So it should need to be initialized to work, but flash ID is responding properly without it.. + --Therefore I don't think rom A11 pin (CPU A12) needs to be valid, just A11-0? + + + dict.nes("NES_CPU_WR", 0x5000, 0x00) + dict.nes("NES_CPU_WR", 0x5001, 0x00) + dict.nes("NES_CPU_WR", 0x5002, 0x00) + dict.nes("NES_CPU_WR", 0x5003, 0x00) + dict.nes("NES_CPU_WR", 0x5004, 0x00) + dict.nes("NES_CPU_WR", 0x5005, 0x00) + dict.nes("NES_CPU_WR", 0x5006, 0x00) + dict.nes("NES_CPU_WR", 0x5007, 0x00) + +end + + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + local rv + init_mapper() + + if debug then print("reading PRG-ROM manf ID") end + --A0-A14 are all directly addressable in CNROM mode + --and mapper writes don't affect PRG banking + dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) + dict.nes("NES_CPU_WR", 0x8555, 0x55) + dict.nes("NES_CPU_WR", 0x8AAA, 0x90) + rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end --0x01 + rv = dict.nes("NES_CPU_RD", 0x8002) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end --0xDA(top), 0x5B(bot) + + --exit software + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + +end + + + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + prgrom_manf_id(true) + + end + +--dump the cart to dumpfile + if read then + --initialize the mapper for dumping + init_mapper(debug) + + file = assert(io.open(dumpfile, "wb")) + + --TODO find bank table to avoid bus conflicts! + --dump cart into file + dump.dumptofile( file, 1024, "EZNSF", "PRGROM", true ) + + --close file + assert(file:close()) + end + +--erase the cart + if erase then + + --initialize the mapper for erasing + init_mapper(debug) + + print("\nerasing tsop takes ~30sec"); + + print("erasing PRG-ROM"); + --A0-A14 are all directly addressable in CNROM mode + --only A0-A11 are required to be valid for tsop-48 + --and mapper writes don't affect PRG banking + dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) + dict.nes("NES_CPU_WR", 0x8555, 0x55) + dict.nes("NES_CPU_WR", 0x8AAA, 0x80) + dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) + dict.nes("NES_CPU_WR", 0x8555, 0x55) + dict.nes("NES_CPU_WR", 0x8AAA, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + end + + +--program flashfile to the cart + if program then + + --initialize the mapper for dumping + init_mapper(debug) + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --not susceptible to bus conflicts + + --flash cart + flash.write_file( file, 1024, "EZNSF", "PRGROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + --initialize the mapper for dumping + init_mapper(debug) + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 1024, "EZNSF", "PRGROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +easyNSF.process = process + +-- return the module's table +return easyNSF diff --git a/host/scripts/nes/mapper30.lua b/host/scripts/nes/mapper30.lua new file mode 100644 index 0000000..1e8a87e --- /dev/null +++ b/host/scripts/nes/mapper30.lua @@ -0,0 +1,163 @@ + +-- create the module's table +local mapper30 = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + + if debug then print("reading PRG-ROM manf ID") end + --no bus conflicts + --$8000-BFFF writes to flash + --$C000-FFFF writes to mapper + --ROM A14 is mapper controlled + -- + --A15 14 - 13 12 + -- 1 1 0 1 : 0x5555 -> bank1, $9555 + -- 1 0 1 0 : 0x2AAA -> bank0, $AAAA + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0xAA) + + dict.nes("NES_CPU_WR", 0xC000, 0x00) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0x90) + + rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + rv = dict.nes("NES_CPU_RD", 0x8001) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + +end + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + nes.detect_mapper_mirroring(true) + nes.ppu_ram_sense(0x1000, true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + prgrom_manf_id( debug ) + end + +--dump the cart to dumpfile + if read then + file = assert(io.open(dumpfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 512, "MAP30", "PRGROM", true ) + + --close file + assert(file:close()) + end + + +--erase the cart + if erase then + + + print("\nerasing mapper 30"); + + print("erasing PRG-ROM"); + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0xAA) + + dict.nes("NES_CPU_WR", 0xC000, 0x00) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0x80) + + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0xAA) + + dict.nes("NES_CPU_WR", 0xC000, 0x00) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + + dict.nes("NES_CPU_WR", 0xC000, 0x01) + dict.nes("NES_CPU_WR", 0x9555, 0x10) + + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + end + + +--program flashfile to the cart + if program then + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + + --flash cart + flash.write_file( file, 512, "MAP30", "PRGROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 512, "MAP30", "PRGROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +mapper30.process = process + +-- return the module's table +return mapper30 diff --git a/host/scripts/nes/mmc1.lua b/host/scripts/nes/mmc1.lua new file mode 100644 index 0000000..95a33c9 --- /dev/null +++ b/host/scripts/nes/mmc1.lua @@ -0,0 +1,281 @@ + +-- create the module's table +local mmc1 = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" + +-- file constants + +-- local functions + +local function init_mapper( debug ) + + --MMC1 ignores all but the first write + dict.nes("NES_CPU_RD", 0x8000) + --reset MMC1 shift register with D7 set + dict.nes("NES_CPU_WR", 0x8000, 0x80) + +-- mmc1_write(0x8000, 0x10); //32KB mode, prg bank @ $8000-FFFF, 4KB CHR mode + dict.nes("NES_MMC1_WR", 0x8000, 0x10) +-- //note the mapper will constantly reset to this when writing to PRG-ROM +-- //PRG-ROM A18-A14 + +-- mmc1_write(0xE000, 0x00); //16KB bank @ $8000 + dict.nes("NES_MMC1_WR", 0xE000, 0x00) +-- //CHR-ROM A16-12 (A14-12 are required to be valid) + +-- mmc1_write(0xA000, 0x02); //4KB bank @ PT0 $2AAA cmd and writes + dict.nes("NES_MMC1_WR", 0xA000, 0x02) +-- mmc1_write(0xC000, 0x05); //4KB bank @ PT1 $5555 cmd fixed + dict.nes("NES_MMC1_WR", 0xC000, 0x05) +end + + +--test the mapper's mirroring modes to verify working properly +--can be used to help identify board: returns true if pass, false if failed +local function mirror_test( debug ) + + --put MMC1 in known state (mirror bits cleared) + init_mapper() + + --MM = 0: 1 screen A + dict.nes("NES_MMC1_WR", 0x8000, 0x00) + if (nes.detect_mapper_mirroring() ~= "1SCNA") then + print("MMC1 mirror test fail") + return false + end + + --MM = 1: 1 screen B + dict.nes("NES_MMC1_WR", 0x8000, 0x01) + if (nes.detect_mapper_mirroring() ~= "1SCNB") then + print("MMC1 mirror test fail") + return false + end + + --MM = 2: Vertical + dict.nes("NES_MMC1_WR", 0x8000, 0x02) + if (nes.detect_mapper_mirroring() ~= "VERT") then + print("MMC1 mirror test fail") + return false + end + + --MM = 3: Horizontal + dict.nes("NES_MMC1_WR", 0x8000, 0x03) + if (nes.detect_mapper_mirroring() ~= "HORZ") then + print("MMC1 mirror test fail") + return false + end + + --passed all tests + if(debug) then print("MMC1 mirror test passed") end + return true +end + + +local function wr_flash_byte(addr, value, debug) + + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xA0) + dict.nes("DISCRETE_EXP0_PRGROM_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end +end + + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + init_mapper() + + if debug then print("reading PRG-ROM manf ID") end + --A0-A14 are all directly addressable in CNROM mode + --and mapper writes don't affect PRG banking + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x90) + rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + rv = dict.nes("NES_CPU_RD", 0x8001) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + +end + +--read CHR-ROM flash ID +local function chrrom_manf_id( debug ) + + init_mapper() + + if debug then print("reading CHR-ROM manf ID") end + --A0-A14 are all directly addressable in CNROM mode + --and mapper writes don't affect PRG banking + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x90) + rv = dict.nes("NES_PPU_RD", 0x0000) + if debug then print("attempted read CHR-ROM manf ID:", string.format("%X", rv)) end + rv = dict.nes("NES_PPU_RD", 0x0001) + if debug then print("attempted read CHR-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_PPU_WR", 0x8000, 0xF0) + +end + + + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + + --verify mirroring is behaving as expected + mirror_test(true) + + nes.ppu_ram_sense(0x1000, true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + --attempt to read PRG-ROM flash ID + prgrom_manf_id(true) + --attempt to read CHR-ROM flash ID + chrrom_manf_id(true) + end + +--dump the cart to dumpfile + if read then + init_mapper() --32KB PRG-ROM banks + + file = assert(io.open(dumpfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 128, "MMC1", "PRGROM", true ) + dump.dumptofile( file, 128, "MMC1", "CHRROM", true ) + + --close file + assert(file:close()) + end + + +--erase the cart + if erase then + + init_mapper() + + print("\nerasing MMC1"); + + print("erasing PRG-ROM"); + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x80) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + + --TODO erase CHR-ROM only if present + init_mapper() + + print("erasing CHR-ROM"); + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x80) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x10) + rv = dict.nes("NES_PPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_PPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing chr."); + + + end + + +--program flashfile to the cart + if program then + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --flash cart + flash.write_file( file, 128, "MMC1", "PRGROM", true ) + --flash.write_file( file, 128, "MMC1", "CHRROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 128, "MMC1", "PRGROM", true ) + dump.dumptofile( file, 128, "MMC1", "CHRROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +mmc1.process = process + +-- return the module's table +return mmc1 diff --git a/host/scripts/nes/unrom.lua b/host/scripts/nes/unrom.lua index 43a4d37..3dd0ba5 100644 --- a/host/scripts/nes/unrom.lua +++ b/host/scripts/nes/unrom.lua @@ -20,7 +20,7 @@ local function init_mapper( debug ) --becomes catch 22 situation. Will have to rely on mcu over powering PRG-ROM.. --ahh but a way out would be to disable the PRG-ROM with exp0 (/WE) going low --for now the write below seems to be working fine though.. - dict.nes("NES_CPU_WR", 0x8000, 0x80) + dict.nes("NES_CPU_WR", 0x8000, 0x00) end local function wr_flash_byte(addr, value, debug) @@ -39,23 +39,60 @@ local function wr_flash_byte(addr, value, debug) i = i + 1 end if debug then print(i, "naks, done writing byte.") end + + --TODO report error if write failed + end --base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) -local function wr_bank_table(base, entries) +local function wr_bank_table(base, entries, numtables) + + local cur_bank + + --need to have A14 clear when lower bank enabled + init_mapper() --UxROM can have a single bank table in $C000-FFFF (assuming this is most likely) --or a bank table in all other banks in $8000-BFFF - --need to have A14 clear when lower bank enabled - init_mapper() - local i = 0 while( i < entries) do wr_flash_byte(base+i, i) i = i+1; end + --[[ + if( base >= 0xC000 ) then + --only need one bank table in last bank + cur_bank = entries - 1 --16 minus 1 is 15 = 0x0F + else + --need bank table in all banks except last + cur_bank = entries - 2 --16 minus 2 is 14 = 0x0E + end + + + while( cur_bank >= 0 ) do + --select bank to write to (last bank first) + --use the bank table to make the switch + dict.nes("NES_CPU_WR", base+cur_bank, cur_bank) + + --write bank table to selected bank + local i = 0 + while( i < entries) do + print("write entry", i, "bank:", cur_bank) + wr_flash_byte(base+i, i) + i = i+1; + end + + cur_bank = cur_bank-1 + + if( base >= 0xC000 ) then + --only need one bank table in last bank + break + end + end + --]] + --TODO verify the bank table was successfully written before continuing! end @@ -135,9 +172,13 @@ local function process( test, read, erase, program, verify, dumpfile, flashfile, --find bank table in the rom --write bank table to all banks of cartridge --Nomolos' bank table is at $CC84 so hard code that for now - wr_bank_table(0xCC84, 32) + --wr_bank_table(0xCC84, 32) --Owlia bank table - --wr_bank_table(0xE473, 32) + wr_bank_table(0xE473, 32) + --rushnattack + --wr_bank_table(0x8000, 8) + --twindragons + --wr_bank_table(0xC000, 32) --flash cart flash.write_file( file, 512, "UxROM", "PRGROM", true ) diff --git a/host/scripts/snes/v3.lua b/host/scripts/snes/v3.lua new file mode 100644 index 0000000..319e0e0 --- /dev/null +++ b/host/scripts/snes/v3.lua @@ -0,0 +1,261 @@ + +-- create the module's table +local v3 = {} + +-- import required modules +local dict = require "scripts.app.dict" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" +local snes = require "scripts.app.snes" + +-- file constants + +-- local functions +local function prgm_mode(debug) + if debug then print("going to program mode, swim:", snes_swimcart) end + if snes_swimcart then + print("ERROR cart got set to swim mode somehow!!!") +-- swim.snes_v3_prgm(debug) + else + dict.pinport("CTL_SET_LO", "SNES_RST") + end +end + +local function play_mode(debug) + if debug then print("going to play mode, swim:", snes_swimcart) end + if snes_swimcart then +-- swim.snes_v3_play(debug) + print("ERROR cart got set to swim mode somehow!!!") + else + dict.pinport("CTL_SET_HI", "SNES_RST") + end +end + + +--local function wr_flash_byte(addr, value, debug) + +--base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) +--local function wr_bank_table(base, entries) +--Action53 not susceptible to bus conflicts, no banktable needed + + + +-- Desc: attempt to read flash rom ID +-- Pre: snes_init() been called to setup i/o +-- Post:Address left on bus memories disabled +-- Rtn: true if flash ID found +local function read_flashID( debug ) + + local rv + --enter software mode A11 is highest address bit that needs to be valid + --datasheet not exactly explicit, A11 might not need to be valid + --part has A-1 (negative 1) since it's in byte mode, meaning the part's A11 is actually A12 + --WR $AAA:AA $555:55 $AAA:AA + dict.snes("SNES_SET_BANK", 0x00) + + --put cart in program mode + --v3.0 boards don't use EXP0 for program mode, must use SWIM via CIC +-- prgm_mode() + + dict.snes("SNES_ROM_WR", 0x8AAA, 0xAA) + dict.snes("SNES_ROM_WR", 0x8555, 0x55) + dict.snes("SNES_ROM_WR", 0x8AAA, 0x90) + + --exit program mode +-- play_mode() + + --read manf ID + local manf_id = dict.snes("SNES_ROM_RD", 0x8000) + if debug then print("attempted read SNES ROM manf ID:", string.format("%X", manf_id)) end + + --read prod ID + local prod_id = dict.snes("SNES_ROM_RD", 0x8002) + if debug then print("attempted read SNES ROM prod ID:", string.format("%X", prod_id)) end + + local density_id = dict.snes("SNES_ROM_RD", 0x801C) + if debug then print("attempted read SNES density ID: ", string.format("%X", density_id)) end + + local boot_sect = dict.snes("SNES_ROM_RD", 0x801E) + if debug then print("attempted read SNES boot sect ID:", string.format("%X", boot_sect)) end + + --put cart in program mode +-- prgm_mode() + + --exit software + dict.snes("SNES_ROM_WR", 0x0000, 0xF0) + + --exit program mode +-- play_mode() + + --return true if detected flash chip + if (manf_id == 0x01 and prod_id == 0x49) then + print("2MB flash detected") + return true + elseif (manf_id == 0x01 and prod_id == 0x7E) then + print("4-8MB flash detected") + return true + else + return false + end + +end + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile) + + local rv = nil + local file + + +--initialize device i/o for SNES + dict.io("IO_RESET") + dict.io("SNES_INIT") + +--test cart by reading manf/prod ID + if test then + + --SNES detect HiROM or LoROM + --nes.detect_mapper_mirroring(true) + local snes_mapping = "LOROM" + --SNES detect if there's save ram and size + + --SNES detect if able to read flash ID's + if not read_flashID(true) then + print("ERROR unable to read flash ID") + return + end + + --quick lame check to see if chip erased + --[[ + if snes.read_reset_vector(0, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector( 1, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector( 20, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector( 63, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + --]] + + end + +--dump the cart to dumpfile + if read then + --initialize the mapper for dumping + init_mapper(debug) + + file = assert(io.open(dumpfile, "wb")) + + --TODO find bank table to avoid bus conflicts! + --dump cart into file + dump.dumptofile( file, 512, "LOROM", "SNESROM", true ) + + --close file + assert(file:close()) + end + +--erase the cart + if erase then + + print("\nerasing tsop takes ~30sec"); + + local rv = nil + + --WR $AAA:AA $555:55 $AAA:AA + dict.snes("SNES_SET_BANK", 0x00) + + --put cart in program mode +-- snes.prgm_mode() + + dict.snes("SNES_ROM_WR", 0x8AAA, 0xAA) + dict.snes("SNES_ROM_WR", 0x8555, 0x55) + dict.snes("SNES_ROM_WR", 0x8AAA, 0x80) + dict.snes("SNES_ROM_WR", 0x8AAA, 0xAA) + dict.snes("SNES_ROM_WR", 0x8555, 0x55) + dict.snes("SNES_ROM_WR", 0x8AAA, 0x10) + + --exit program mode +-- snes.play_mode() + + rv = dict.snes("SNES_ROM_RD", 0x8000) + + local i = 0 + + while ( rv ~= 0xFF ) do + rv = dict.snes("SNES_ROM_RD", 0x8000) + i = i + 1 +-- if debug then print(" ", i,":", string.format("%x",rv)) end + end + print(i, "naks, done erasing snes."); + + --put cart in program mode +-- swim.start() +-- snes.prgm_mode() + + --reset flash + dict.snes("SNES_ROM_WR", 0x8000, 0xF0) + + --return to PLAY mode +-- print("erase play") +-- snes.play_mode() +-- print("erase play") + + + + end + + +--program flashfile to the cart + if program then + + --initialize the mapper for dumping + init_mapper(debug) + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --not susceptible to bus conflicts + + --flash cart + flash.write_file( file, 512, "LOROM", "SNESROM", true ) + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump.dumptofile( file, 512, "LOROM", "SNESROM", true ) + + --close file + assert(file:close()) + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +v3.process = process + +-- return the module's table +return v3 diff --git a/shared/shared_dict_buffer.h b/shared/shared_dict_buffer.h index 3030e16..2e02d5b 100644 --- a/shared/shared_dict_buffer.h +++ b/shared/shared_dict_buffer.h @@ -139,8 +139,9 @@ #define MMC2 9 #define MMC4 10 #define CDREAM 11 + #define CNINJA 12 //not actually mapper 12, just a temp mapper assignment #define A53 28 - #define UNROM512 30 + #define MAP30 30 #define EZNSF 31 #define BxROM 34 #define RAMBO 64 @@ -151,6 +152,7 @@ #define FME7 69 //SUNSOFT-5 with synth #define HDIVER 78 #define DxROM 205 + #define DPROM 254 //just a random mapper number for whatever I need it for // UNKNOWN 255 don't assign to something meaningful //operand LSB mapper variant #define NOVAR 0 diff --git a/shared/shared_dict_nes.h b/shared/shared_dict_nes.h index eb3f030..b6c24c3 100644 --- a/shared/shared_dict_nes.h +++ b/shared/shared_dict_nes.h @@ -39,6 +39,10 @@ //#define DISCRETE_EXP0_MAPPER_WR 0x03 +#define NES_MMC1_WR 0x04 + +#define NES_DUALPORT_WR 0x05 + //============================================================================================= // OPCODES WITH OPERAND AND RETURN VALUE plus SUCCESS/ERROR_CODE //============================================================================================= @@ -62,5 +66,6 @@ #define MIR_VERT 0x12 #define MIR_HORZ 0x13 +#define NES_DUALPORT_RD 0x84 //RL=3 #endif diff --git a/shared/shared_dict_pinport.h b/shared/shared_dict_pinport.h index 09a1dfc..3ece1b6 100644 --- a/shared/shared_dict_pinport.h +++ b/shared/shared_dict_pinport.h @@ -53,9 +53,9 @@ #define CTL_OD_ 24 #define CTL_PP_ 25 //operands -// PC0 "MCO" mcu clock out M2/phi2, Sysclk, etc +// PC0 "M2" NES M2/phi signal #define C0_ 0 - #define MCO_ 0 + #define M2_ 0 // PC1 "ROMSEL" Cartridge rom enable #define C1_ 1 #define ROMSEL_ 1 @@ -103,9 +103,9 @@ // PC15 "AUDR" cart audio #define C15_ 15 #define AUDR_ 15 -// PC16 "CIN" CIC data in & GB power selector +// PC16 "GBP" GB power selector #define C16_ 16 - #define CIN_ 16 + #define GBP_ 16 // PC17 "SWD" mcu debug #define C17_ 17 #define SWD_ 17