From d2be5c92c0cd76bf5d76c27e27c3aa2ebe96b97c Mon Sep 17 00:00:00 2001 From: Onwrikbaar Date: Sun, 13 Oct 2024 22:08:38 +0200 Subject: [PATCH] Reorganising. --- .vscode/settings.json | 5 + firmware/Makefile | 1 + firmware/build/neodk_g071.hex | 2876 ++++++++++++++++----------------- firmware/inc/app_event.h | 4 +- firmware/inc/bsp_app.h | 1 - firmware/inc/matter.h | 17 + firmware/inc/pattern_iter.h | 2 +- firmware/inc/sequencer.h | 3 - firmware/src/bsp_stm32g071.c | 9 - firmware/src/controller.c | 126 +- firmware/src/datalink.c | 9 +- firmware/src/debug_cli.c | 38 +- firmware/src/matter.c | 87 + firmware/src/neodk_main.c | 8 +- firmware/src/pattern_iter.c | 4 +- firmware/src/sequencer.c | 104 +- 16 files changed, 1691 insertions(+), 1603 deletions(-) create mode 100644 firmware/src/matter.c diff --git a/.vscode/settings.json b/.vscode/settings.json index e69de29..c784dca 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "matter.h": "c" + } +} \ No newline at end of file diff --git a/firmware/Makefile b/firmware/Makefile index 4511ede..61dbcec 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -41,6 +41,7 @@ PROJ_COMMON_SRC += \ $(PROJ_DIR_SRC)/pattern_iter.c \ $(PROJ_DIR_SRC)/datalink.c \ $(PROJ_DIR_SRC)/debug_cli.c \ + $(PROJ_DIR_SRC)/matter.c \ # Target-dependent include folders. STM32G0xx_INC += \ diff --git a/firmware/build/neodk_g071.hex b/firmware/build/neodk_g071.hex index fd5ac74..d699384 100644 --- a/firmware/build/neodk_g071.hex +++ b/firmware/build/neodk_g071.hex @@ -1,1447 +1,1447 @@ :020000040800F2 -:1000000000900020112A0008612A0008ED1B00085A +:1000000000900020D52A0008252B0008B11C00080C :1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000612A00083D -:100030000000000000000000612A0008491C0008C0 -:10004000612A0008612A0008612A0008612A000864 -:10005000591C0008612A0008612A0008F91E0008DE -:10006000612A000801200008612A0008612A0008AE -:10007000651F0008751C0008E51C0008991D000894 -:10008000612A0008491F0008612A0008612A000847 -:10009000612A0008612A0008612A0008612A000814 -:1000A000612A0008612A0008612A0008612A000804 -:0C00B0006D200008612A0008612A000889 +:10002000000000000000000000000000252B000878 +:100030000000000000000000252B00080D1D000836 +:10004000252B0008252B0008252B0008252B000850 +:100050001D1D0008252B0008252B0008BD1F0008CA +:10006000252B0008C5200008252B0008252B00089B +:1000700029200008391D0008A91D00085D1E000880 +:10008000252B00080D200008252B0008252B000833 +:10009000252B0008252B0008252B0008252B000800 +:1000A000252B0008252B0008252B0008252B0008F0 +:0C00B00031210008252B0008252B00083A :1000BC0010B5064C2378002B07D1054B002B02D032 :1000CC00044800E000BF0123237010BD7000002025 -:1000DC0000000000AC4A0008044B10B5002B03D004 +:1000DC00000000009C4A0008044B10B5002B03D014 :1000EC000349044800E000BF10BDC04600000000FA -:1000FC0074000020AC4A0008F0B50124C0238440F1 +:1000FC00740000209C4A0008F0B50124C023844001 :10010C000B4D5B00EC500700830803203840FF27A1 :10011C00AC46C026C0008740890181409B006344E7 :10012C00B6009A59BA430A439A512C60F0BDC046A6 -:10013C0000E100E030B5827A04680379002A0AD124 -:10014C00E27AC5795B00521B013A0A700122827275 -:10015C006068C01830BD01332289DDB2AA420DD0CF -:10016C006B00C2790132D2B2C2710A700568E97AA9 -:10017C0001398A4204D000228272E9E70023F0E7B9 -:10018C0000218288C171013292B282802D89954200 -:10019C00F1D102898180013A0281ECE7F0B50122AC -:1001AC004F46D64646460B6800249146C0B5002BF8 -:1001BC001AD14BE0170057437B00DB19DB43C568B2 -:1001CC00AC4666460D691E407D433543C5604D689F -:1001DC00022D2DD07D43026813402B4303600B6826 -:1001EC001A000134E24031D04D461A00A5402A4095 -:1001FC002B42F5D04B68013B012BDBD81700574342 -:10020C0083688D6898467B009C467D43BC44AA4617 -:10021C0046466546AE433500564663462E438660D9 -:10022C00CE684568564395433543DB434560C6E786 -:10023C00FF2A10D83D007D43026A2E01761BB24383 -:10024C004E6975432A4302624D68C3E7E0BCBA4667 -:10025C00B146A846F0BD120A52435243456A1601F4 -:10026C00B61AB5434E6972432A4342624D68B1E7F0 -:10027C0010B51124020008480B00016AA143016269 -:10028C008020064980008862DA38FF38886104498A -:10029C00044803F0BBFBFEE7002C014000040050B7 -:1002AC00744E000850510008FA2170B5124C05002C -:1002BC008900206802F01AF9802301385B04984207 -:1002CC0001D3012070BDC0210C4A090650600C48B6 -:1002DC00036A1B021B0A0B43036207210023936072 -:1002EC001160032DEDD8026AA9071202120A0A4303 -:1002FC00026218006560E5E70000002010E000E0F5 -:10030C0000ED00E010B50A0002490348103103F07B -:10031C007DFB10BD744E00085C51000810B50A003E -:10032C0002490348203103F071FB10BD744E0008E4 -:10033C005C5100084B1E9941012310B54942994369 -:10034C00002200230E3103F0C7FD10BD70B506006E -:10035C0014001D0082B0E03600920193326873687D -:10036C00A41A9D41002D04D1074B9C4201D802B028 -:10037C0070BD08236A46132103F0AEFD009B019C5F -:10038C0033607460F3E7C046BFE1E40030B50500AC -:10039C00A935FF352B89040083B00020002B01D137 -:1003AC0003B030BD01A92800FFF7C4FE6A460378EC -:1003BC006946137043785370AB799370D422520012 -:1003CC00A258927ACA70C82B60D9C8238B70042AA1 -:1003DC005ED96B461C79002C6CD06B46D9784A01DF -:1003EC00521A93019B1AD800FA23401880019B04DF -:1003FC00984245D3584800220621584B013CD862FC -:10040C001C635A621A698A431A616B461A785B78C4 -:10041C00134200D085E00521114254D169460424D1 -:10042C0088784E4901388863C86813432043C860F4 -:10043C004869033C20434861002B7DD14022484B46 -:10044C009A62484B3E3A9C619A6106320421454BB4 -:10045C009961444B002A61D020229A6100235221D9 -:10046C00414A3E4C53526363A36390693139002275 -:10047C0003F032FD012223680120134323608FE730 -:10048C00FA21890002F032F80138B4E7042A06D8C0 -:10049C00364A3749374803F0C9FA6B469B78002B2C -:1004AC0097D1354A3549334803F0C0FA6B461C796D -:1004BC00002C92D1D221324A2E48890003F0B6FA90 -:1004CC006B461C7989E769460224887823490138F0 -:1004DC004863C86813432043C8604869013C204303 -:1004EC0048614021DB4301201D4A9161DAB203428D -:1004FC0028D11C4B02219862042308201140134080 -:10050C00024000291AD1022016498862002B9DD185 -:10051C000421144B9962134B002A9DD120229A621C -:10052C009CE76221174A1348FF3103F07FFA6B46B0 -:10053C006A465B7812786EE79BB2D2E702200949D3 -:10054C008861E3E7082404233E391140134022401C -:10055C00044CA061D5E7C046FEFF0000002C014012 -:10056C0000080050000400508C000020645100086A -:10057C0046030000785100088C5100084703000026 -:10058C00A8510008C0510008032310B5104C114AA3 -:10059C0023616361104BA261E36180239B012362A1 -:1005AC000023A3626362E36222660C4A0C49583250 -:1005BC0062661022E01DA2662367E366636703F0A0 -:1005CC00D5FE2000074903F0D1FE2023A37110BDF6 -:1005DC002C210020DC5100082C0100208C00002074 -:1005EC00E8510008EC510008F8B54746CE4680B5F6 -:1005FC008368C56899465B1B9846436804000E00E7 -:10060C0017005819904507D9ED1903F075FDE560F1 -:10061C00C0BCB946B046F8BD424603F06DFD4B4632 -:10062C003100ED19ED1A2A006068414403F064FDB5 -:10063C00E560EDE7F0B557464E464546DE46E0B57B -:10064C00354B83B09A461B78060015000191002BA0 -:10065C0056D07700BB19DB0053441A6F9046DA6E04 -:10066C009146904525D8130042462C009B1A9D427A -:10067C0009D8002C09D1200003B0F0BCBB46B2460F -:10068C00A946A046F0BD1C1EF5D0A146BB19DB0047 -:10069C005344596E220041440198A04403F02CFDB0 -:1006AC004C46002CE7D04346BF19FF0057443B672C -:1006BC00E1E742469B6E2C009B1A9D4227D8BB1942 -:1006CC00DB0053449B46596E22004144019803F0D1 -:1006DC0013FD5B469B6EA0442D1B434519D04B4626 -:1006EC0042469B1A99464D450DD8002DD9D0019BF9 -:1006FC00A1469C46A44463462C000193A944C5E73B -:10070C00FFF742FFA5E74D46002DCAD0EFE71C00CE -:10071C00D5E700239846E6E72C210020F8B557468C -:10072C004E46DE4645468946411CE0B517004A0058 -:10073C0052180300D2009246344A5E0093461000D1 -:10074C00F618F6005E44F36A50449846012B0CD020 -:10075C00022B27D0002B17D0002398464046F0BC24 -:10076C00BB46B246A946A046F8BDB36A726A93422C -:10077C0047D9013B9B1AB8469F4200D9984642463E -:10078C004946FFF731FFE9E7B36A726A934233D9FE -:10079C00013B9B1A9F42E1D83A004946FFF724FFE0 -:1007AC00B846DBE70023746A98461DE0013B356AC6 -:1007BC001B1BBB4200D93B002D1B9D4200D91D00C9 -:1007CC005B46534458682A004946001903F094FCD0 -:1007DC00336A6419E31A5A1E93415B421C40A844C5 -:1007EC00A9447F1B7462B9D0B36AA342DED8356AC0 -:1007FC005B19013B1B1BDCE7316A5B18013B9B1A45 -:10080C00C8E7316A5B18013B9B1AB4E72C21002026 -:10081C00F0B5C64600B5856843686A1C04009A4268 -:10082C0007D8036859551500C36882600133C3604B -:10083C0043689D4202D080BCB846F0BD236827694E -:10084C0098460E4B1B78002B15D0EFF31086012128 -:10085C0081F310882A0041463800FFF75FFF86F3CA -:10086C001088A368834203D001235B42E360E2E774 -:10087C000023A360DFE7FFF787FEE6E72C210020CB -:10088C00F0B54E4645465746DE46E0B583B09A462F -:10089C000C9B80460E0015009946914200D27DE0DB -:1008AC0008000127290001F021FE01378542F9D902 -:1008BC00574500D2574601230D9A1A4001920D9AC2 -:1008CC0013424ED14B46002B4BD0130020249B07D8 -:1008DC005ED44F4545D201235B429C4621004046E5 -:1008EC00E144FFF795FF4346DB68002B32DB4B46B8 -:1008FC00002BEED153460124012B07D901235B4277 -:10090C009C46E24453466C43012BF7D8210030003F -:10091C0001F0ECFD8542F5D9214B9B4630239A46DC -:10092C0006E02900200001F0E1FDAC420FD30400E9 -:10093C003000210001F060FE534658440E00C15CAB -:10094C004046FFF765FF4346DB68002BE9DA019B65 -:10095C00002B19D103B0F0BCBB46B246A946A04649 -:10096C00F0BD4346DB68002BC4DAF3E74F45F1D208 -:10097C0001235B429C4620214046E144FFF748FF9F -:10098C004346DB68002BE5DB4B46002BEED1E1E761 -:10099C0053465C425C41240120349AE7012787E7E7 -:1009AC00744E000810B5080003F06AFB03490200FE -:1009BC004031034803F02AF8002010BD744E0008A3 -:1009CC00F451000810B5080003F05AFB034902006B -:1009DC004C31034803F01AF8002010BD744E000887 -:1009EC0018520008DC2310B50400C05803F070FA4C -:1009FC00002801D1002010BDD823E05803F068FA7C -:100A0C000028F7D0200003F063FAF4E770B5D02685 -:100A1C007600835904009847051E1DD0A65903F093 -:100A2C0011FB01002000B047002805D014210B4A0F -:100A3C000B48FF3102F0FAFFD0235B00E55003F0C6 -:100A4C00F3FA01002000A847002805D08B21034AA7 -:100A5C000348490002F0EAFF70BDC0463C52000852 -:100A6C004852000870B5D026760083590400984788 -:100A7C00051E1DD0A65903F0E5FA01002000B04771 -:100A8C00002805D01E210B4A0B48FF3102F0CEFF87 -:100A9C00D0235B00E55003F0C7FA01002000A84703 -:100AAC00002805D09021034A0348490002F0BEFFFC -:100ABC0070BDC0463C5200085C520008F8B50600F8 -:100ACC00CC3605000122300003F07AF8012804D05E -:100ADC00C421244A244802F0A9FF72B6BFF34F8FF9 -:100AEC00BFF36F8F4827214CE35DFF2B2CD048229E -:100AFC0001333000A35402F0DDFF00280FD048254D -:100B0C00635D002B18D04822013BDBB2A354002BB1 -:100B1C0004D1BFF34F8FBFF36F8F62B6F8BDE123E3 -:100B2C00EA56012A17D0482511491248583102F0CB -:100B3C006DFF635D002BE6D1A6210F4A0F4889009B -:100B4C0002F074FF635DDEE70D4A0E490B4802F0BC -:100B5C006DFFE35DCBE780210B4A13688B43136079 -:100B6C00CDE7C0466C520008785200088C0000207B -:100B7C00744E0008B0520008CC520008785100089E -:100B8C00885200089102000000440040F0B5CE46A7 -:100B9C0047460400E22380B5E65A83B01000B6182D -:100BAC006A46F31DDB08DB00D31A02AF9D4602AB8D -:100BBC009846E623E25C0190009100230421404614 -:100BCC0003F0D0F872B6BFF34F8FBFF36F8F48238B -:100BDC00234D9946EB5CFF2B34D048222000013387 -:100BEC00AB5441463200CC3002F06CFF002814D1DB -:100BFC0048242B5D002B1DD04822013BDBB2AB54AB -:100C0C00002B04D1BFF34F8FBFF36F8F62B6BD467D -:100C1C0001B0C0BCB946B046F0BDE123E256012A92 -:100C2C0018D048240F491048583102F0EFFE2B5DC4 -:100C3C00002BE1D1A6210D4A0D48890002F0F6FEE9 -:100C4C002B5DD9E70B4A0C49094802F0EFFE4B46E5 -:100C5C00EB5CC2E78021094A13680B431360C7E7BA -:100C6C008C000020744E0008B0520008CC520008D2 -:100C7C00785100088852000891020000004400409E -:100C8C00F0B5DE4657464E464546E0B58DB0834638 -:100C9C0002AF08000C0003F0F3F9152824D011D88A -:100CAC00012835D0022829D1A349A4486C3102F07F -:100CBC00ADFE0020BD460BB0F0BCBB46B246A9460B -:100CCC00A046F0BD172819D1200003F0DBF9027AF9 -:100CDC000400861D022A2FD0062A1FD09849994855 -:100CEC00483102F093FEE4E7D4235A4692495B0064 -:100CFC00D05878312622FFF749FFDAE7200003F0BD -:100D0C00BFF98D4902006C318F4802F07FFED0E7AD -:100D1C0089498E486C3102F079FECAE7B288C188E5 -:100D2C008B4802F073FE6289072AC2D08449894835 -:100D3C00343102F06BFEBCE7C188B288864802F001 -:100D4C0065FEB488062C00D10AE1072C00D193E093 -:100D5C00052C06D07A49220020317E4802F056FE3E -:100D6C00A7E76B46D222FB605B4652009958DA2308 -:100D7C005B006846CB5C98469B007B600733DB08C6 -:100D8C00DB00C31A9D46434602AD3D61002B00D1EA -:100D9C0001E22C00002345468858190141589A005D -:100DAC000133A150DAB29542F7D83B69A8469A466E -:100DBC003300022400255646994601CE01F084FBEF -:100DCC00FF239C4680B284459B415B420233C01892 -:100DDC0001352418EDB2A4B2A845EED123006A4621 -:100DEC000C339BB20733DB08DB00D31A9D4602ADF4 -:100DFC00BD606B880E24AB8000236C442B806B8011 -:100E0C0006224946200003F077F90523A37005ABB1 -:100E1C007B6116237A682B73944601253B69A8469F -:100E2C00634455463B6114E002220C239246337016 -:100E3C0070700A3B02045444F01844444946120CA6 -:100E4C0003F05AF9A3B298463B690435AB4200D182 -:100E5C000DE12B687E691800994601F035FB84B2D0 -:100E6C004644FF2CE0D90D2303223370230AB370C0 -:100E7C00924603237070DDE700237A8B3B767B83ED -:100E8C007B761E233100BA83F818062203F034F95E -:100E9C0020220523BA1813702422013BBA181370B0 -:100EAC0025221D33BA1813705A468833FF33D6588F -:100EBC000E2290466D46C63BF35A042198441533D6 -:100ECC00DB08DB00EB1A9D4602AB9946E623F25C8D -:100EDC00D83B01930A33FB1800934846012302F0D8 -:100EEC0041FF72B6BFF34F8FBFF36F8F48231B4C7C -:100EFC009A46E35CFF2B00D13FE1482230000133DE -:100F0C00A35449464246CC3002F0DCFD002800D008 -:100F1C0008E14826A35D002B00D1F1E04822013BFB -:100F2C00DBB2A354002B04D1BFF34F8FBFF36F8FF1 -:100F3C0062B6AD46BDE6C046744E000804530008C8 -:100F4C00F44E000888530008F4510008EC520008D5 -:100F5C006053000840530008185300088C00002010 -:100F6C00D2225B4652009958B623FF33CB5C8A5889 -:100F7C001B019C586D46200001F0A6FAFF2380B29D -:100F8C0083429B415B42C0180E3083B20733DB08AF -:100F9C00DB00EB1A9D4602AB984642465B8831005B -:100FAC0093800023138053800E336B4499460622A2 -:100FBC00180003F0A1F805234A462000937001F0B5 -:100FCC0083FA83B29946FF2B00D9A1E00C23424649 -:100FDC00022613730E23507343440204210018009D -:100FEC00120C03F089F84B460C33F618D4235A46EE -:100FFC005B00D358B6B29A46E2235246D35A6A469D -:10100C009946B1444B460733DB08DB00D31A9D46A7 -:10101C0002AB9B465246E623D25C43460421009326 -:10102C0058460123019602F09DFE72B6BFF34F8F16 -:10103C00BFF36F8F4826694CA35DFF2B00D18DE069 -:10104C00482250460133A35459464A46CC3002F04C -:10105C0039FD002800D15CE7E1235246D256012A23 -:10106C0064D05F495F48583102F0D0FC51E74146EB -:10107C000D3189B245460B00182278694255584605 -:10108C009132FF328658C63AB55A6A46ED18EB1DB6 -:10109C00DB08DB00D31A9D4602AB9846E623F25CD4 -:1010AC000191BB68042100934046012302F05AFED3 -:1010BC0072B6BFF34F8FBFF36F8F4823474C9946DF -:1010CC00E35CFF2B51D0482230000133A35441463E -:1010DC002A00CC3002F0F6FC002835D14825635D9F -:1010EC00002B29D04822013BDBB2A354002B04D1A6 -:1010FC00BFF34F8FBFF36F8F62B6FB689D46D8E589 -:10110C00A621394A3948890002F090FCA35D05E715 -:10111C0042460D2313734B461B0A937303260F236E -:10112C00507359E7E123F256012A9AD18021304AB3 -:10113C0013680B431360ECE6A6212B4A2B4889005D -:10114C0002F074FC635DCDE7E123F256012A1CD05A -:10115C0023492448583102F059FCBFE7254A264957 -:10116C00224802F063FCA35D6AE7224A22491F4829 -:10117C0002F05CFC4B46E35CA5E71E4A1E491B488B -:10118C0002F054FC5346E35CB7E68021184A13681E -:10119C000B431360A2E73B767B8B0622BB83434653 -:1011AC007B8300237B761E233100F81802F0A4FF0A -:1011BC0020232422FB181C701623BA1813700C223F -:1011CC0094460C329046B844C44462467A61424616 -:1011DC0001250E21083BBA604EE7C0468C0000206A -:1011EC00744E0008B0520008CC5200087851000828 -:1011FC00004400408852000891020000F0B5040041 -:10120C00E025DC20C646E226635D00B55A1C62551B -:10121C002258D154615DA35B994206D327580FD055 -:10122C00E422A05A1B18994203D0002080BCB84677 -:10123C00F0BDE02300223800E25402F0EFFDF5E7A8 -:10124C00380002F0C7FD00280DD0380002F0F2FD86 -:10125C00E4239846E052802301001B01984215D8E4 -:10126C00615DA35BDEE7635D013BDBB26355002B85 -:10127C00DBD00023DC25E0306259D1184978D154F9 -:10128C00225C0133DBB29A42F6D8CEE7034802F077 -:10129C00BDFB00234246A352C7E7C046A853000833 -:1012AC00F0B5CE464746E22380B583B0C65A6B46AE -:1012BC00F41DE408E4001B1B02AF9D4602AB9946EB -:1012CC0088460B000092050000220121484602F0DE -:1012DC0011FD2A4942465831294802F097FB72B653 -:1012EC00BFF34F8FBFF36F8F4823264C9846E35CB8 -:1012FC00FF2B34D0482228000133A3544946320036 -:10130C00CC3002F0DFFB002814D14825635D002BA4 -:10131C001DD04822013BDBB2A354002B04D1BFF3F8 -:10132C004F8FBFF36F8F62B6BD4601B0C0BCB946DC -:10133C00B046F0BDE123EA56012A18D048251249DF -:10134C001248583102F062FB635D002BE1D1A621FB -:10135C000F4A1048890002F069FB635DD9E70E4A19 -:10136C000E490C4802F062FB4346E35CC2E7802165 -:10137C000B4A13680B431360C7E7C046F44E0008D2 -:10138C00CC5300088C000020744E0008B0520008AA -:10139C00CC520008785100088852000891020000D5 -:1013AC00004400400FB430B597B01AA920C92800EA -:1013BC00019102F021FB2A0004005021019B02A89C -:1013CC0003F008F8002807DD8C230649013082B2AF -:1013DC00C85802A9FFF7DAFB200017B030BC08BCD4 -:1013EC0004B018478C00002070B5050008000C00F4 -:1013FC0002F046FEC31FDBB2172B03D824499B0017 -:10140C00CB589F46234902006C31234802F0FEFA68 -:10141C0070BD200002F036FE046820482100FFF762 -:10142C00C1FF022CF4D1E8230022EA54F0E7DC23BC -:10143C000022E8581D21002302F04EFDE8E72000B1 -:10144C0002F020FE002341680068154A01F0EEF915 -:10145C0004003C21200001F0CFF820000E003C21BC -:10146C0001F044F83C2101F0C7F80D00E121200007 -:10147C00090101F03BF8330001002A000948FFF78D -:10148C0091FFC5E7DC232100E85802F069FDBFE7B6 -:10149C00C44A0008F44E000810540008FC5300081D -:1014AC0040420F00E453000870B59625ED0004008F -:1014BC0029001C4802F0AAFA50231B4ADA21D55203 -:1014CC001A4B1B4A49005A61B622FF32A35C013306 -:1014DC00DBB2A354615C99421AD01B01D222520098 -:1014EC00A5581448ED182968FFF75CFFD4235B005E -:1014FC00E550AB89A934FF3423816423A371002305 -:10150C00A380EB7A002B06D00023E371A37270BD8D -:10151C000023A354E2E74821074A084802F086FA60 -:10152C00F2E7C0461C5400088C00002000740040F8 -:10153C00FF0F0000345400084854000860540008A1 -:10154C0070B5050008000C0002F09AFD232803D8A2 -:10155C00344A800013589F46200002F091FD324916 -:10156C0002007C31314802F051FA002070BD2E4946 -:10157C002F487C3102F04AFA0020F7E72A492D481F -:10158C007C3102F043FA0020F0E7200002F07AFDF3 -:10159C00294A41888388008853434A43C10109186A -:1015AC000901091A9B0B2548920B890AFFF7FAFED1 -:1015BC000020DBE7B623D426FF33EA5C113BEB5863 -:1015CC0012019B187600AB519A89AC1922816422C6 -:1015DC00A2710022A280DA7A002A1BD00022E271CA -:1015EC00A27219681648FFF7DDFE1648BEE7280000 -:1015FC00FFF75AFF0020B9E7134802F007FA002062 -:10160C00B4E7D4235B00EB5810481968FFF7CAFE07 -:10161C000020ABE748210E4A0E4802F007FAAB59FE -:10162C00DCE7C046244B0008F44E000818520008B2 -:10163C0074540008885400084DCE00009C540008D7 -:10164C00C454000859170008D4540008F454000876 -:10165C00485400086054000870B5050008000C00E0 -:10166C0002F00EFD232803D82C4A800013589F4605 -:10167C00200002F005FD2A4902000831294802F039 -:10168C00C5F9002070BD26492748083102F0BEF983 -:10169C000020F7E722492548083102F0B7F900206D -:1016AC00F0E7200002F0EEFC214A41888388008894 -:1016BC0053434A43C10109180901091A9B0B1D48E0 -:1016CC00920B890AFFF76EFE0020DBE7D4235B0048 -:1016DC00EB5819481968FFF765FE1848D2E728003F -:1016EC00FFF7E2FE0020CDE7D8235B00EB5A002B7E -:1016FC0008D1A933FF33EB5811481968FFF752FE94 -:10170C001048BFE7D4235B00EB580F481968FFF76C -:10171C0049FE0020B6E70020B4E7C046B44B0008F1 -:10172C00744F0008185200080455000810550008A2 -:10173C004DCE00009C5400081C5500085917000899 -:10174C00F45400084D1500082C55000870B5050020 -:10175C0008000C0002F094FC232803D8254A8000D2 -:10176C0013589F46200002F08BFC234902001431D1 -:10177C00224802F04BF9002070BD1F49204814315B -:10178C0002F044F92800FEF701FE0020F4E71A49A4 -:10179C001C48143102F03AF90020EDE72800FEF75E -:1017AC00F5FD03000020002BE6D1A933FF33EB58E5 -:1017BC0015481968FFF7F6FD1448DDE7200002F024 -:1017CC0061FC134A41888388008853434A43C10112 -:1017DC0009180901091A9B0B0E48920B890AFFF78D -:1017EC00E1FD0020C8E72800FFF75EFE0020C3E7FC -:1017FC000948C1E7444C0008744F0008185200080F -:10180C000455000810550008F45400084D15000844 -:10181C004DCE00009C5400086516000870B50400FD -:10182C00303CE3B282B0462B03D8594A9B00D358C4 -:10183C009F4601005748FFF7B5FD02B070BD8026EA -:10184C00554DB6006B69334203D1544802F0DEF8B3 -:10185C00AE61FA239B005C43A4B22100504802F015 -:10186C00D5F850234F4AD4524F4A231C944200D9E6 -:10187C008BE04E4A9BB2934200D284E04A4AD21A81 -:10188C004B4B53438022120194464A4A63441B0B30 -:10189C005361D2E75023434DEC5A434BC83C9C4216 -:1018AC0015DC424B9C4200DA1C0021003C4802F043 -:1018BC00ADF85023EC523C4B1C1B3D4B6343E1E712 -:1018CC005023384DEC5A384BC8349C42E9DD1C008F -:1018DC00E7E780223849D2034869030413404022C9 -:1018EC00824313438B61A8E788242E4D00230022EA -:1018FC000C21285902F0F0FA002300220E2128595D -:10190C0002F0EAFA99E72D48FFF74CFD95E7022320 -:10191C00244A01938633D0580721843B01AA02F054 -:10192C00DBFA8AE788231F4A1E21D05800230022A5 -:10193C0002F0D2FA81E72248FFF734FD7DE7214916 -:10194C002148243102F062F8204A214993680B4067 -:10195C0004210B43936070E780250F4CAD00636945 -:10196C002B420BD100210E4802F050F850230021DD -:10197C000C4AD1520F4B174A5A615EE7164802F0D7 -:10198C0045F8A562EEE7130078E7131C71E7C04633 -:10199C00D44C0008B05500080004005080550008D5 -:1019AC001C5400088C000020D3270000B204000057 -:1019BC0049070000007400400008005098550008CA -:1019CC003C550008744F0008945500080024014051 -:1019DC00E8FFFF7FFF0F00006C550008F0B545468F -:1019EC00DE4657464E46E0B585B0050002AF08000E -:1019FC000C0002F013FA804603002000012B56D095 -:101A0C0002F010FA43460600032B6FD0200002F0C0 -:101A1C0011FA43468146042B10D0404602F05CF983 -:101A2C004B4601003200444801F0F0FFBD4603B0C4 -:101A3C00F0BCBB46B246A946A046F0BD200002F061 -:101A4C00E9F98346200002F0EDF98246200002F00D -:101A5C00F7F98146200002F0EDF95B468046020062 -:101A6C005146002B30D1354801F0D0FF4346022BB4 -:101A7C0003D14B461B782F2B58D0052343449A4651 -:101A8C0043466A460C33DB08DB00D31AEB469D4613 -:101A9C004B4602A8786051460093294A434602F00F -:101AAC0031FC002801DD824537D8DD4615E002F017 -:101ABC00BDF904000100234801F0A8FF0720E6232C -:101ACC0001340440EC54B1E71F4801F09FFF43463A -:101ADC004A461721286802F0FFF9200002F09AF913 -:101AEC00310002002800FFF7DBFB9FE701001748DD -:101AFC0001F08CFF200002F08DF90400020031008F -:101B0C002800FFF7CDFB21004B1E9941002200233A -:101B1C002868153102F0E0F988E78C230C4982B271 -:101B2C00C8587968FFF732F8DD46D6E74B46587847 -:101B3C00FFF774FED1E7C046705600080056000847 -:101B4C0034560008C855000840560008E0550008F7 -:101B5C008C00002070B5E725435D0400002B0ED1EE -:101B6C000A2905D0C9B2FFF749FB032818D070BD6C -:101B7C0001220339FFF794FB01236355F7E7C9B240 -:101B8C00FFF73CFB0028F2D0DC23E558280002F0DC -:101B9C0059F9002813D029002000FFF71FFFE6E7B2 -:101BAC00DC23E558280002F04DF900280DD029005F -:101BBC002000FFF713FFE7230122E254D7E7064981 -:101BCC000648343101F022FFD1E703490348343190 -:101BDC0001F01CFFEFE7C046744F0008A056000848 -:101BEC00112110B50E4A0F48136A8B4313628022E1 -:101BFC000D4B92009A62DA3AFF3A9A610B490C4B00 -:101C0C0048315A6801F002FF0A4C012321000A48AE -:101C1C001031237401F0FAFE237C002BFCD110BD93 -:101C2C00002C0140B056000800040050744F00080E -:101C3C0000ED00E00C010020C0560008024A536978 -:101C4C00013353617047C0460C01002010B5EFF30F -:101C5C000582034903485C3101F0D8FE10BDC04633 -:101C6C00744F00085C510008012210B5144B19691F -:101C7C000A421DD00620196891431960D968814326 -:101C8C00D960196901308143196140210D4B99626A -:101C9C000D4B1D399A6101329A6102329A611C32E4 -:101CAC009A610A4B00229869002302F015F910BDC5 -:101CBC0007491A696831074801F0A8FEF7E7C046E2 -:101CCC00002C014000080050000400508C00002043 -:101CDC00744F0008F8560008022210B5254BD9683D -:101CEC000A4202D019690A423AD123490422214BF3 -:101CFC00D868024202D0186902420CD15223CA5A47 -:101D0C001C4B1B6B01339A4212D01A4B1B491A699C -:101D1C000A4218D110BD1869904318615223CA5A4F -:101D2C00013292B2CA52134B1B6B01339A42ECD163 -:101D3C00002300228869222102F0CEF80D4B0F49B6 -:101D4C001A690A42E6D01B690D48194001F05EFE83 -:101D5C00EFF305820B490C485C3101F057FED9E7D3 -:101D6C00196991435222196103498B5A01338B52E1 -:101D7C00BCE7C046002C01408C000020E0FF0C00AA -:101D8C00F8560008744F00085C510008F8B5802321 -:101D9C000222DB0519690A420FD101211A6911428D -:101DAC0003D01A698A431A61F8BDEFF305822849FA -:101DBC0028485C3101F02AFEF6E71969264C91435C -:101DCC0019612668676872B6BFF34F8FBFF36F8FC8 -:101DDC004825635DFF2B33D048215A1CD2B2625484 -:101DEC0080211E4DC905A869496AA961884202D99A -:101DFC00E9690131E961002A17D04822A354002B6C -:101E0C0004D1BFF34F8FBFF36F8F62B6EB69AA6932 -:101E1C00990792080A439B083800B0478022D205E4 -:101E2C00536BA1685B185363BEE7A6210C4A0D489F -:101E3C00890001F0FBFD4823E35C013BDBB2DCE7EE -:101E4C00094A0A49074801F0F1FD635DC4E7C04641 -:101E5C00744F00085C5100088C0000200C0100201D -:101E6C00CC520008785100088852000891020000FA -:101E7C0070B548250B4C635D002B0BD04822013B01 -:101E8C00DBB2A354002B04D1BFF34F8FBFF36F8F82 -:101E9C0062B670BDA621044A0448890001F0C6FD53 -:101EAC00635DEBE78C000020CC52000878510008F1 -:101EBC0070B572B6BFF34F8FBFF36F8F4825074CC9 -:101ECC00635DFF2B03D048220133A35470BD044A39 -:101EDC000449054801F0AAFD635DF4E78C0000207D -:101EEC00885200089102000078510008102210B5A9 -:101EFC000E4BD9680A4211D119690A4207D1EFF386 -:101F0C0005820B490B485C3101F080FD10BD0A487D -:101F1C0000211A610C3001F0A5FDF7E706480121FC -:101F2C00DA600C3001F09EFDF0E7C046001802406C -:101F3C00744F00085C5100088C00002010B5EFF3C2 -:101F4C000582034903485C3101F060FD10BDC046B9 -:101F5C00744F00085C510008102210B51C4B196816 -:101F6C000A421AD1012219680A4211D18022196839 -:101F7C009201114222D1042219680A4223D108226B -:101F8C0019680A420ED01A60124801F03FFD03E0B6 -:101F9C0011481A6001F03AFD10BD1A600F4801F0AB -:101FAC0035FDF9E719680E4801F030FDEFF30582B5 -:101FBC000C490D485C3101F029FDEDE71A600B4826 -:101FCC0001F024FDE8E71A60094801F01FFDE3E782 -:101FDC000024014048570008145700080457000813 -:101FEC0054570008744F00085C5100082057000833 -:101FFC003C570008022310B5134C2268134218D129 -:10200C0008232268134208D110492268104808316D -:10201C0001F0FCFC0423636010BD0C4963600831C3 -:10202C000C4801F0F3FC01210B4A13680B431360BD -:10203C00F2E76360094B14211A0098694A320623AF -:10204C0001F04AFFE8E7C04600000240F44F0008E8 -:10205C007057000864570008080002408C000020EC -:10206C0010B50D4BDA69920610D4DB691B0605D549 -:10207C000A4B0B49986B5B6B984710BDEFF30582CD -:10208C00084909485C3101F0C1FCF6E70348596A7C -:10209C001C3001F0E7FCF0E7004400408C0000200D -:1020AC0028440040744F00085C51000870B572B6AB -:1020BC00BFF34F8FBFF36F8F48241B4D2B5DFF2B4E -:1020CC002BD048215A1CD2B26A548021174CC90516 -:1020DC00A069496AA161884202D9E1690131E161D3 -:1020EC00002A0FD04822AB54002B04D1BFF34F8FE2 -:1020FC00BFF36F8F62B6E169A0698B078008184344 -:10210C00890870BDA6210A4A0A48890001F08EFC94 -:10211C004823EB5C013BDBB2E4E7074A074905487F -:10212C0001F084FC2B5DCCE78C0000200C0100201E -:10213C00CC52000878510008885200089102000027 -:10214C007047C04610B50B00EFF31084012181F3EA -:10215C0010881900FEF76EFA84F3108810BDC04683 -:10216C0010B582B0EFF31084012181F310886B4617 -:10217C000122D91D0020FEF75DFA84F31088012896 -:10218C0003D16B46D87902B010BD01204042FAE76A -:10219C0010B5FEF7F9F910BDF0B5DE464E465746C0 -:1021AC004546E0B59BB00AAB05934023069300234C -:1021BC000793089301330C0091469B4602900990BB -:1021CC0005E005A8FEF724FB0898002859DB2178C8 -:1021DC00013400295CD02529F3D122001378002684 -:1021EC0002250820140021392D2B0CD02D2B0ED8B4 -:1021FC00232B11D02B2B00D05FE10E43013213782F -:10220C0014002D2BF2D15B4601321E43F7E7302B25 -:10221C0005D12E430132F2E706430132EFE71A00F3 -:10222C00303A0025092A0DD81A00AB005B1901348D -:10223C005B009B182278303B1D001300303B092BB0 -:10224C00F3D913002E2B00D1D8E0002723780421DA -:10225C0001E0637801341A008A43682AF9D0252BEF -:10226C0007D0583BDBB2202B07D8954A9B00D3589C -:10227C009F46252105A8FEF7CBFA089801340028C3 -:10228C00A5DA1BB0F0BCBB46B246A946A046F0BDD1 -:10229C0008980028F5DD079C002C00D0C6E000193A -:1022AC00EFE74B4649461B6805A81A1D0A601968DA -:1022BC0010223B0001960095FEF7E2FA01340898D3 -:1022CC00DDE74B4649461B6805A81A1D0A601968CC -:1022DC000A223B0001960095FEF7D2FA01340898C9 -:1022EC00CDE74B4649461B681A1D0A601D6805E080 -:1022FC0005A8FEF78DFA08980028BFDB2978013570 -:10230C000029F5D10898B9E74B4649461B6805A842 -:10231C001A1D0A60196800230193083310220093D8 -:10232C00FEF7AEFA01340898A9E74B4649461B68FC -:10233C001A1D0A601B68DA17981803930123504082 -:10234C009A4609280DDDAA46A0461D000A21040064 -:10235C00013500F081F9632CF8DC2B00444655461E -:10236C009A46B846574575D3002D36D0039B002BA3 -:10237C0074DB730772D4B30701D5002F2DD05B46E5 -:10238C0033422AD1002D28D04346A0461C00AC4233 -:10239C0020D205A82021FEF73BFA0898013D002821 -:1023AC0000DA87E0002DF2D1230044469846039BC7 -:1023BC00002B58DB730761D403233340022B62D00C -:1023CC0005A83B000A22039901960095FEF758FADE -:1023DC00089853E723004446984608980028E6DA04 -:1023EC0001344CE74B4649461B6805A81A1D0A6088 -:1023FC001978FEF70DFA0134089840E76378621CEF -:10240C001900303914000027092900D91FE71A00D8 -:10241C00BB00DB1901345B009B182278303B1F009A -:10242C001300303B092BF3D9130010E7254B1B7815 -:10243C00002B15D0EFF31085012181F310882200B9 -:10244C0002980AA9FEF76AF985F310880898079C88 -:10245C00001916E7D046002DBFD087E7013D8AE76B -:10246C00FEF792F8E6E75B422D2105A80393FEF7F1 -:10247C00CFF9089800289FDA013400E72B2105A832 -:10248C00FEF7C6F9F5E7002F9AD10AE0A8450CD261 -:10249C0005A83021FEF7BCF90898013D002800DAA8 -:1024AC00ECE6002DF2D100258AE70898002887DA9F -:1024BC000134E4E644460134E1E60025C5E6C046B5 -:1024CC00F04D00082C2100200023C25C0133002AAF -:1024DC00FBD1581E7047000003B4714649084000F8 -:1024EC004900095E49008E4403BC70470022430832 -:1024FC008B4274D303098B425FD3030A8B4244D3C0 -:10250C00030B8B4228D3030C8B420DD3FF22090201 -:10251C0012BA030C8B4202D31212090265D0030BC0 -:10252C008B4219D300E0090AC30B8B4201D3CB03B6 -:10253C00C01A5241830B8B4201D38B03C01A5241F8 -:10254C00430B8B4201D34B03C01A5241030B8B42FA -:10255C0001D30B03C01A5241C30A8B4201D3CB02E5 -:10256C00C01A5241830A8B4201D38B02C01A5241CA -:10257C00430A8B4201D34B02C01A5241030A8B42CD -:10258C0001D30B02C01A5241CDD2C3098B4201D3E5 -:10259C00CB01C01A524183098B4201D38B01C01A63 -:1025AC00524143098B4201D34B01C01A52410309DA -:1025BC008B4201D30B01C01A5241C3088B4201D389 -:1025CC00CB00C01A524183088B4201D38B00C01A36 -:1025DC00524143088B4201D34B00C01A5241411A5D -:1025EC0000D20146524110467047FFE701B500206A -:1025FC0000F006F802BDC0460029F7D076E7704718 -:10260C007047C04610B5002903D100F007F8203000 -:10261C0002E0080000F002F810BDC0461C210123A6 -:10262C001B04984201D3000C10391B0A984201D3A9 -:10263C00000A08391B09984201D30009043902A287 -:10264C00105C40187047C0460403020201010101EE -:10265C00000000000000000003460B437FD4002262 -:10266C0043088B4274D303098B425FD3030A8B421A -:10267C0044D3030B8B4228D3030C8B420DD3FF2284 -:10268C00090212BA030C8B4202D31212090265D052 -:10269C00030B8B4219D300E0090AC30B8B4201D305 -:1026AC00CB03C01A5241830B8B4201D38B03C01A4C -:1026BC005241430B8B4201D34B03C01A5241030BC3 -:1026CC008B4201D30B03C01A5241C30A8B4201D374 -:1026DC00CB02C01A5241830A8B4201D38B02C01A1F -:1026EC005241430A8B4201D34B02C01A5241030A96 -:1026FC008B4201D30B02C01A5241CDD2C3098B427B -:10270C0001D3CB01C01A524183098B4201D38B01F7 -:10271C00C01A524143098B4201D34B01C01A52419A -:10272C0003098B4201D30B01C01A5241C3088B42DF -:10273C0001D3CB00C01A524183088B4201D38B00CA -:10274C00C01A524143088B4201D34B00C01A52416C -:10275C00411A00D201465241104670475DE0CA0F43 -:10276C0000D04942031000D34042534000229C4603 -:10277C0003098B422DD3030A8B4212D3FC2289010D -:10278C0012BA030A8B420CD3890192118B4208D3E3 -:10279C00890192118B4204D389013AD0921100E045 -:1027AC008909C3098B4201D3CB01C01A5241830959 -:1027BC008B4201D38B01C01A524143098B4201D386 -:1027CC004B01C01A524103098B4201D30B01C01AB1 -:1027DC005241C3088B4201D3CB00C01A524183082B -:1027EC008B4201D38B00C01A5241D9D243088B4281 -:1027FC0001D34B00C01A5241411A00D20146634624 -:10280C0052415B10104601D34042002B00D5494287 -:10281C00704763465B1000D3404201B50020FFF7C0 -:10282C00EFFE02BD0029F8D016E77047002B11D13E -:10283C00002A0FD1002900D1002802D00021C94361 -:10284C00080007B4024802A14018029003BDC0461C -:10285C00B1FDFFFF03B4684601B5029800F006F81D -:10286C00019B9E4602B00CBC7047C046F0B5574663 -:10287C004E464546DE46E0B504000D0092469946AC -:10288C0083B08B4230D82DD049465046FFF7BAFE64 -:10289C00290006002000FFF7B5FE331A9846203BAE -:1028AC009B4633D45A465346934042461F005346E8 -:1028BC0093401E00AF423AD8AF4200D178E05B465D -:1028CC00A41BBD41002B00DA75E00022002300920E -:1028DC00019301235A4693400193012342469340AE -:1028EC00009328E08242CFD900220023009201936A -:1028FC000C9B002B01D01C605D600098019903B00B -:10290C00F0BCBB46B246A946A046F0BD42462023C9 -:10291C009B1A5246DA40414613004A468A40170039 -:10292C0042461F43534693401E00AF42C4D9002277 -:10293C000023009201934346002BD9D0FB07720869 -:10294C001A4346467B080EE0AB4201D1A2420CD89A -:10295C00A41A9D41012024196D410021013E241827 -:10296C004D41002E06D0AB42EED9013E24196D41EB -:10297C00002EF8D1009801995B4600196941002B93 -:10298C0024DB2B005A464446D3402A00E2401C006C -:10299C005B461500002B2ADB26009E4033002600E8 -:1029AC004746BE403200801A9941009001919FE742 -:1029BC00A342BCD883E74246202300219B1A002265 -:1029CC00009101920122DA40019286E742462023CF -:1029DC009B1A2A0046469A402300F3404446134370 -:1029EC002A00E2401C005B461500002BD4DA42465C -:1029FC002F002023260097409B1ADE403B003343D8 -:102A0C00CDE7C0460D488546FFF79AFB0C480D49AB -:102A1C000D4A002302E0D458C4500433C4188C422D -:102A2C00F9D30A4A0A4C002301E013600432A24293 -:102A3C00FBD301F029FB00F00FF8FEE7009000201B -:102A4C00000000206C000020A0590008700000203D -:102A5C000C220020FEE70000F0B5DE4657464E463D -:102A6C004546E0B5CFB000F0C3FF934800F0CEFF71 -:102A7C000722924B00215A63A0240D3213A801F0B7 -:102A8C0044FB0223E405169320000E3312A9129383 -:102A9C00FDF784FB129A236913409A4206D1884BA6 -:102AAC001B6883F30888874B1B6898470323A02671 -:102ABC009A4613930023F60598463000169312A9F4 -:102ACC0043331293FDF76AFB2023300012A91293B3 -:102ADC008025FDF763FB434601277B4C1593AD0026 -:102AEC000233200013971493129512A9A5629946EC -:102AFC00FDF754FB40237548129312A98361FDF72F -:102B0C004DFB272320001597129312A9A361FDF703 -:102B1C0045FB4B46139317934346C02415935346DA -:102B2C00A400149312943000B46212A9FDF736FB82 -:102B3C000C23300012A917971293FDF72FFB80215D -:102B4C005E4B09065A6D0120920092080A435A65A1 -:102B5C005F4ADA635F4A1A649A6B17439F635E4B52 -:102B6C001A6814431C605D4CFDF79EFB23685C4A9D -:102B7C005C4913401D435C4B25609A461B6858000A -:102B8C00C0184000FFF7B2FC80226369D20001300C -:102B9C00134202D105E0002803D0636901381342C7 -:102BAC00F9D180214D4A490013680B431360136817 -:102BBC000B42FCD00221414A4C4BD365D36D1942D8 -:102BCC00FCD0382391680B40D168102B01D100F058 -:102BDC0081FC002B01D000F081FC13684449536840 -:102BEC0019408023DB010B435360136841490B40B0 -:102BFC0013601368404A9B045B0FDA4053461A601B -:102C0C0053465868FDF750FB3C4A002832D1382017 -:102C1C002A498B680340102B01D100F024FE0B686D -:102C2C003748034080200B605469800403E05369EB -:102C3C001B1B022B1ED80B680342F8D1CB68314802 -:102C4C001840314B0343CB60802308685B0403437B -:102C5C000B608023C8685B050343CB6080215469FB -:102C6C001648890403E053691B1B022B02D8036826 -:102C7C000B42F8D0062318490868184201D100F01D -:102C8C0003FDE0230D49DB01886803438B608B68EF -:102C9C001E4803408B600B689B0101D400F006FDBD -:102CAC0007208B681A4C83431800022303438B6064 -:102CBC003820556934E0C0468057000800100240A7 -:102CCC000000FF1F0400FF1F00040050000800500C -:102CDC000300023001081200002002400070004086 -:102CEC00FFF9FFFF40420F000000002009800000A8 -:102CFC00FF80FFFFFFC7FFFF0024F4000C01002042 -:102D0C00FFFFFFFE8C80C11132301646FFF0FFFF33 -:102D1C008813000053695B1BA34201D900F0C6FC69 -:102D2C008B680340102BF5D10720F4490B68034046 -:102D3C00022B01D900F03DFDF14BF2499A680A4093 -:102D4C009A6038229968114201D000F01BFD1B6873 -:102D5C00ED489B045B0FD8401F22E94BEB4C9B6862 -:102D6C001B051B0F9B00E3185B6A1340D8405346AE -:102D7C0018605868FDF798FAE54AE6491368E64882 -:102D8C000B401360E54B1968534609051A68090D89 -:102D9C0000F03CFE84201022E14B1958914319504D -:102DAC00043819581143195019681143196059689E -:102DBC000A435A60DB4B1A68D20307D41A68DA4903 -:102DCC000A401A60DA6BD9490A40DA638023D54A83 -:102DDC005B02116801250B4313603F22D449092083 -:102DEC000B6893431A00052313430B60D14BD24954 -:102DFC001A681140D14A0A43D1491A6099600321DB -:102E0C00D04A93464A32DA605A68120C12040A43CA -:102E1C005A60CD4A5560022219680A431A6008228A -:102E2C0019680A431A601A6829002A431A60FDF7C8 -:102E3C0063F9C64B9A682A4207D1DA68C4490A403A -:102E4C00DA601A69920092081A618021BF4B8903DB -:102E5C00DA680A43DA608022920119681142FCD0C8 -:102E6C0007211A605A698A43110002220A43702111 -:102E7C005A615A698A43110050220A430F215A6140 -:102E8C009A6A8A439A625A69A2490A405A619A6AB2 -:102E9C00F231FF318A43110010220A4380219A62D9 -:102EAC005A6989000A435A619A6AAA491140C02298 -:102EBC00D2000A4380219A625A69C9010A435A61B5 -:102ECC009A68A5491140802252050A439A605346DC -:102EDC00A2491868FFF70AFB142343430893089B85 -:102EEC00002B05D0089B013B0893089B002BF9D1C4 -:102EFC00964B9B499A681140802212060A439A60AD -:102F0C009A68002AFCDB802212011A6020230893A5 -:102F1C00089B002B05D0089B013B0893089B002BBA -:102F2C00F9D18023894D9B052A69032113432B6119 -:102F3C0011230C206B60FDF7DFF80121EB68EB68C7 -:102F4C00AB680B4200D1B4E3864800F05FFD01256D -:102F5C007E4B85491A6912A8AA431A611A69D026B0 -:102F6C000A401A619A687E4976000A402A439A60A0 -:102F7C0049235A4616A9D554C82200F093FFD620EF -:102F8C00400001F0A5F8C8220100070010315200E2 -:102F9C0000F088FF754B2821BB51DC20D82308AAF0 -:102FAC005218D750400001F093F802001032110073 -:102FBC00C8228046520000F075FF2821DC274046CD -:102FCC0008AA5218D051002300224A924B93E8329F -:102FDC009046404608AA52181554654A643421009C -:102FEC001000914600F012FD524662491068FFF73E -:102FFC007DFA8023604ADB05013898625A631022FF -:10300C00022158469A611A6A5C4C2A431A62DA68A1 -:10301C000A43DA605A4A02605A4612A85060FA22F1 -:10302C005846120182600322586902435A610F20EC -:10303C001D60FDF761F8282108AA5218D359514A8E -:10304C0051489A51D22252009850584683615046AA -:10305C00DD311032FF31995200684049FFF746FAD2 -:10306C000138A0624848A26A40300100474800F08D -:10307C00CDFC474B0021A36111230D202362656019 -:10308C00FDF73AF800210E20FDF736F88423236073 -:10309C0088231B02E5604046636401F019F80400C4 -:1030AC00011DC8220290CC3000F0E8FCFF2328213F -:1030BC002200E03508A863554018273BC45808A8DF -:1030CC004118C959CC33E15001912F49CC37E25109 -:1030DC005C31484600F09AFC2E4BA35100F0A4FF43 -:1030EC0001002000FDF7CCFDE659735D7F2B00D865 -:1030FC00F0E2294B0693294B079351E00020024044 -:10310C0000100240FF8FFFFF0024F400F44F000872 -:10311C0000700040FFFEFFFF94570008005801406C -:10312C000018024000740040FFFF03FFFFFFF8FF90 -:10313C0000080240080002400F80FFFFA02500009D -:10314C00402401408C00002000000240002401407B -:10315C00C73FFFFFFFF0FFFFE8FFFF6F40420F008C -:10316C00E8FFFF7FB4570008FFFFFFDFB10900083D -:10317C009455000800093D00801A0600002C0140FF -:10318C0059030008D109000874500008D0570008F2 -:10319C00686800008D0C0008DC57000878520008A5 -:1031AC00346000F097FDE223F05280231B019C4613 -:1031BC00604400F08DFFDC23E022F0500023B35478 -:1031CC000632B352DB4ADC4B516D49270B43536536 -:1031DC008B23DA49CB600A68D94B13430B605B46EF -:1031EC00DB5D012B00D97EE202211C20FCF784FF61 -:1031FC005B465946DB5D5A1CCA55E1225BB29046D0 -:10320C00B354002B00DA74E23200CE4909A800F066 -:10321C0023FC0CAB18003200CB490FAF049300F029 -:10322C001BFC32003800C94900F016FC4346F3562B -:10323C00012B00D1D1E2E123F256C54B1D000393C3 -:10324C00C44B583529001800059300F0DFFBE12230 -:10325C009046B256012A00D1EBE22900059800F005 -:10326C00D5FB4246B256012A00D1E2E2290005986C -:10327C0000F0CCFBD423B8495B006C314846E558D0 -:10328C0000F0C4FB0024E7235A46EC5412A95F3B20 -:10329C00D15002990433D150282108AA5033521826 -:1032AC00D658D833F35CA3422AD0AC4B9946D223E0 -:1032BC005B009846AA4B043301934346F35825010F -:1032CC009C4665444846296800F0A0FB28896B6839 -:1032DC0000280ED0002204E0013292B20233904258 -:1032EC0007D019785D780D42F6D001999D4800F011 -:1032FC008DFBDA235B000134F35CE4B2A342DCD82F -:10330C00B623FF33F25C113BF35812019B18D42205 -:10331C0034005200B3509A89A934FF3422816422BC -:10332C00A2710022A280DB7A934200D1EFE18E4B96 -:10333C0001938E4B994600252389E571A572AB420A -:10334C0015D0D4235B009846200010A9FCF7F2FEA0 -:10335C0003783B7043787B70A379BB704346F3587A -:10336C009B7AFB703B79ED182389002BECD129005B -:10337C007F4800F04BFBB623FF33F25C113BF35854 -:10338C0012019B18D4225200B3509A8922816422D4 -:10339C00A2710022A280DB7A934200D1B1E100231A -:1033AC00744AE371A372A133FF33F25000F03CFE78 -:1033BC0001003000FEF7C4F812AA6F49380000F083 -:1033CC004BFB5B460C3316C816C39624032107200F -:1033DC00FCF792FE694800F019FB0399E400783180 -:1033EC00674800F013FB2100664800F00FFB5023E8 -:1033FC005A468025D452644B644A654C5A616369C1 -:10340C00AD002B4203D1634800F000FBA561624B79 -:10341C00E8259846D823DC249946604E282208AB30 -:10342C009B185B5D002B00D1C2E0282708ABDB1991 -:10343C001B5931001A001800019300F0AFFD002851 -:10344C00ECD14A4608ABDB199B5841461A001800D0 -:10345C00019300F0A3FD0028E0D112AA10005049FE -:10346C0000F09CFD071ED9D10121049800F0E8FA68 -:10347C00002800D072E172B6BFF34F8FBFF36F8F8D -:10348C0048235A46D35CFF2B00D1D8E148225B4637 -:10349C0059469B5C01338B5408AB203A9B18185946 -:1034AC0000F016FD002800D03AE148235A46D35CC0 -:1034BC00002B00D15FE148225B4659469B5C013BE7 -:1034CC00DBB28B54002BA9D1BFF34F8FBFF36F8F9F -:1034DC0062B6A3E70D3B1940022920D01549314AA9 -:1034EC000B68802013400B6080230A685B00134339 -:1034FC002D4A0B605469C00005E053691B1B022B5D -:10350C0001D9FFF7B7FB0B680342F6D04B6827488D -:10351C0018408023DB0103434B60FFF778FB1368F3 -:10352C002249536819408023DB010B435360FFF79A -:10353C0067FBC0460010024008000C00004400402D -:10354C0001000020611B000811030008290300087A -:10355C00744E0008B052000874500008245800083B -:10356C00F45000083458000848540008605400080F -:10357C004C5800084D150008410300086858000815 -:10358C007C5800081C54000800740040FF0F000019 -:10359C000004005080550008190A0008710A000840 -:1035AC00F5130008FFC7FFFF0C010020FF80FFFF91 -:1035BC0028218026DE4C08AADC335218D5586369C2 -:1035CC00B600334203D0DB4800F020FAA662D024C8 -:1035DC0064002E5900F036FD01002800B047D64B90 -:1035EC0028212B51D82308AA5218D5582E5900F04F -:1035FC0029FD01002800B047D04BD1482B5100F0D9 -:10360C0005FAD4235B00EC58C73BE256012A04D0E0 -:10361C0003990598583100F0F9F9DC23E05800F0D3 -:10362C0061FDE123FF22E254029AD35C7F2B05D883 -:10363C009121069A0798490000F0F8F9282402987D -:10364C0000F050FDDC2308AA1219D05800F04AFDF6 -:10365C00D82308AA1219D05800F044FD72B6B94804 -:10366C0000F0D4F900F0F6F91121B74A136A8B4334 -:10367C0013628022AE4B92009A62DA3AFF3A9A6158 -:10368C00B24B19329A62FEE7072002230C6884437E -:10369C0023430B605569AE4C0B680340022B01D1E0 -:1036AC00FFF7EFFA53695B1BA342F5D9A94CFFF75F -:1036BC0063FBEB68A84AEB681A40A84B1343EB601A -:1036CC00EB689B0200D442E4F023AA6A1B0213436A -:1036DC00AB623CE4A24BA34AF92118000692079373 -:1036EC0000F0A4F95CE5A04800F090F9E123FF227A -:1036FC00F2540CAB04939D4B0FAF03939C4B05936F -:10370C00B8E548214846019A00F090F947E6994BF4 -:10371C00994A482118009946019200F087F90AE667 -:10372C0028214A4608AB5B18985800F0D1FB0028BA -:10373C0000D1BAE612A800F0CBFB002800D1B4E609 -:10374C0080228E4F92007B69134200D0E2E004216C -:10375C008B4A13698B43136130BFA6E6049B8949DE -:10376C001B7868220193C87F00286ED12F2B7DD146 -:10377C002E3BCB777FE6A621834A8448890000F054 -:10378C0055F998E699681140082900D11EE199680D -:10379C001140102900D185E099681140202900D1F1 -:1037AC0017E19B681A40182A00D116E10020FFF798 -:1037BC00D3FA02230C68844323430B605569644C91 -:1037CC000B680340022B01D1FFF7B6FA53695B1B60 -:1037DC00A342F5D95F4CFFF7CFFA5B4609AA1C331D -:1037EC0023CA23C35B46049A283323CA23C3042366 -:1037FC0067490A6813430B604346F356012B00D00C -:10380C0019E55B465A469E63624B53635B463A002E -:10381C003C3323CA23C308235D490A6813430B6056 -:10382C004346F256514B0393514B0593012A00D05A -:10383C0003E52023564A11680B4313601AE5564AD8 -:10384C005649524800F0F2F820E6019B0A2B41D071 -:10385C00534800F0DBF80198FDF7E0FF5B460022CF -:10386C006833DA7707E6CB68FFF704FA5946454B1D -:10387C009B7FC918885401980A280AD0414F0133FC -:10388C00DBB2BB7788541E2B00D0F4E5444800F023 -:10389C00BDF85F4668373900424800F0B7F800239E -:1038AC00BB77E8E5DA68D968D243D8684906490F8E -:1038BC0040040131440E920700D192E03A48FEF7E1 -:1038CC0015FE6043394BD968490F0131FEF70EFEE6 -:1038DC00FFF742FA2B4B2B48997F4B1CDBB28377BB -:1038EC002F20594488541E2B08D12D4800F08EF8F7 -:1038FC0024492C4800F08AF8224B9F775F4600221F -:10390C006837BB7F3900FA54264800F07FF8002254 -:10391C00BA77A3E7534606201B6825495843FEF7A0 -:10392C00E5FD3B68234A013013403B6048E0C0464C -:10393C00000400506C550008D1090008B1090008BA -:10394C0090580008A0580008002C014000080050B6 -:10395C0088130000F44F00083CC2FEFF0310000067 -:10396C0078520008DC570008F0570008744E000825 -:10397C00B052000860540008485400080070004021 -:10398C0000ED00E0F4000020CC5200087851000853 -:10399C0000440040C90A0008885200089102000047 -:1039AC00A4580008805800080024F40000100240BD -:1039BC0040420F00FFBFFFFF002800D175E5013822 -:1039CC0080227B6992001342F6D1C0E60748FFF7CC -:1039DC00C3F980200002FFF7BFF9FA20C001FFF7FE -:1039EC00BBF90248FEF782FD60436BE700127A00D8 -:1039FC0010B5FEF7CDFB10BD00B583B0019101AA47 -:103A0C0001000020FEF7C8FB03B000BD0FB400B5E9 -:103A1C0083B004AB02CB01AA002000930193FEF704 -:103A2C00BBFB03B008BC04B01847C046130010B56C -:103A3C000A0001000148FFF7E9FFFEE7D058000833 -:103A4C000A0010B501000020FEF77CFBC343DB1716 -:103A5C00184010BD7047C04600238360426001606F -:103A6C007047C04610B503680400002B04D04068B2 -:103A7C009847A3680133A36010BDC04601604B1E7C -:103A8C00994100234942114041608360C3607047F3 -:103A9C0003009B68C068C01A43425841C0B27047CB -:103AAC000200C368581E9368C01A536800D5C0182A -:103ABC007047C04603008268C1685B68501A00D525 -:103ACC00C0187047F0B54646D6464F460500C0B5FF -:103ADC00EB688068013B0E0014001B1A1ED4934245 -:103AEC001AD31700002F05D12000E0BCBA46B1460E -:103AFC00A846F0BDAB6828689C463A00604431008B -:103B0C0000F0FAFAAB689C466B686744AF609F4262 -:103B1C00EAD10023AB60E7E70020E6E76A6890464D -:103B2C004344A342F8D30319994627009A42D9D8A3 -:103B3C00131A9A462B6852469C46604400F0DCFAF5 -:103B4C0000234246AB604B4656449F1ACAE7C04618 -:103B5C00F8B54746CE4680B5C668836805008846EA -:103B6C009C1B0BD4944207D82700002C20D1380082 -:103B7C00C0BCB946B046F8BD1400F5E74368994699 -:103B8C004C44944200D91400331927009945ECD8C1 -:103B9C004B469F1B2B683A009919404600F0ACFA33 -:103BAC004B46F61AA419B84400263F19002CDED057 -:103BBC00296822004046891900F09EFAD7E7C046D2 -:103BCC00F0B54F464646D646C0B50F008368C1686F -:103BDC00060014005B1A1ED493421AD31500002D54 -:103BEC0005D12000E0BCBA46B146A846F0BDF3684A -:103BFC0031689C462A006144380000F07DFAF36875 -:103C0C009C4673686544F5609D42EAD10023F360DD -:103C1C00E7E70020E6E7426890464344A342F8D326 -:103C2C000B19994625009A42D9D8531A9A4603681B -:103C3C0052469C463800614400F05EFA002342462E -:103C4C00F3604B4657449D1AC9E7C04670B5010056 -:103C5C000400861D1D4D1E4823781B025840082366 -:103C6C0004E0013BDBB280B2002B09D002B2400071 -:103C7C00002AF6DA013B6840DBB280B2002BF5D1AA -:103C8C000134A642E8D14B888A781D0A12021543EA -:103C9C001BD008314D190D4CADB20B781B0258409E -:103CAC00082304E0013BDBB280B2002B09D002B246 -:103CBC004000002AF6DA013B6040DBB280B2002BF8 -:103CCC00F5D101318BB2AB42E7D170BD21100000B0 -:103CDC00FFFF000008207047052804D883001B183C -:103CEC000248C01870470248FCE7C046F458000868 -:103CFC00F058000870B5040004A8007849000001D1 -:103D0C00084301210143072018400023D20002433D -:103D1C0063802371200000230725C9B221706270D3 -:103D2C00661D082201304B4004E0013AD2B2DBB2EE -:103D3C00002A09D059B25B000029F6DA013A6B402F -:103D4C00D2B2DBB2002AF5D1B04201D00178E8E75B -:103D5C0063712000FFF77AFF030AE071A371200062 -:103D6C0070BDC04670B5040004A840C84900058861 -:103D7C0020001B010B43D20031002370627008300D -:103D8C002A0000F0B9F92B0AA3700023E57020007B -:103D9C0007252371661D02785340082204E0013A7E -:103DAC00D2B2DBB2002A09D059B25B000029F6DA94 -:103DBC00013A6B40D2B2DBB2002AF5D10130B042ED -:103DCC00E9D163712000FFF741FF030AE071A37191 -:103DDC00200070BD70B5002307244679451D02787C -:103DEC005340082204E0013AD2B2DBB2002A09D0D7 -:103DFC0059B25B000029F6DA013A6340D2B2DBB269 -:103E0C00002AF5D10130A842E9D1F01A42425041C2 -:103E1C00C0B270BD00788006800F70470078000734 -:103E2C00400F704740788006400F7047437807205A -:103E3C0018407047827843881202180A1043704762 -:103E4C000830704710B50400FFF700FFE388A17934 -:103E5C001B0A09020B43181A42425041C0B210BD52 -:103E6C00B0B500AF050000F0DDF86A46C31DDB08F5 -:103E7C00DB00D31A9D460200040069462800FFF7B8 -:103E8C0067FE80B2844203D00024BD462000B0BD42 -:103E9C00684600F0F1F804002800FFF70BFE84429E -:103EAC00F2D8F2E770B505000C001600002905D019 -:103EBC00320028002100FFF7E1FD70BD3D21024AD0 -:103ECC000248FFF7B3FDF3E7145900082459000822 -:103EDC0010B5FFF7DDFD10BDF8B5DE4657464E4672 -:103EEC004546E0B500AF1E0080468A46914600F07C -:103EFC0099F86B46C41DE408E4001B1B9D460500A5 -:103F0C00801983B23200514668469B4600F0A8F8EF -:103F1C00FDF7CEFF4046FFF7C3FD002483450DD9C6 -:103F2C00FDF7A6FF5B46E01ABD4643425841C0B2BE -:103F3C00F0BCBB46B246A946A046F8BD2A0069466D -:103F4C004046FFF7BFFD4B4684B2002BE8D0320051 -:103F5C0049464046FFF7B6FD2418A4B2E0E7C04638 -:103F6C00F8B5060008000F0000F086F80500FDF714 -:103F7C009FFF3000FFF794FD0024854206D9FDF722 -:103F8C0077FF601B43425841C0B2F8BD2A0039008C -:103F9C003000FFF797FD84B2F1E7C046F8B54E4606 -:103FAC004546DE465746E0B500AF060089469046CA -:103FBC00FFF756FF0025041E07D1BD462800F0BCB4 -:103FCC00BB46B246A946A046F8BD6A46C31DDB08EF -:103FDC00DB00D31AEA469D46FDF76AFF22006946CC -:103FEC003000FFF7EDFD0600B6B2EB46FDF740FFE3 -:103FFC00002E01D1D546E0E7684600F03DF884423A -:10400C0005D159464046C8470125D546D5E7252157 -:10401C00024A0348FFF70AFDF3E7C0463C59000883 -:10402C00245900080C20704710B5FEF73FF8020029 -:10403C000B0003480260436080235B02836010BD69 -:10404C00E821002010B5FEF731F802000B00034800 -:10405C000260436080239B02836010BDD821002046 -:10406C0070B504000E001500FEF720F86681206084 -:10407C0061602581200070BD00890C3080B27047D2 -:10408C00807A70470C30704770B500260C4D0D4C83 -:10409C00641BA410A64209D1002600F001FD0A4DB4 -:1040AC000A4C641BA410A64205D170BDB300EB589A -:1040BC0098470136EEE7B300EB5898470136F2E724 -:1040CC009859000898590008985900089C590008FC -:1040DC0010B5034B0100186800F08CF810BDC046F9 -:1040EC000800002010B5034B0100186800F016F80A -:1040FC0010BDC04608000020002310B59A4200D124 -:10410C0010BDCC5CC4540133F8E703008218934211 -:10411C0000D1704719700133F9E7000070B5050044 -:10412C00002910D00C1F2368002B00DAE41828009B -:10413C0000F05CF91D4A1368002B05D16360146014 -:10414C00280000F05BF970BDA34208D92168601803 -:10415C008342F3D118685B6841182160EEE71A00BE -:10416C005B68002B01D0A342F9D911685018A0420A -:10417C000BD120680918501811608342E0D11868DF -:10418C005B68411811605360DAE7A04202D90C2336 -:10419C002B60D5E721686018834203D118685B68EF -:1041AC004118216063605460CAE7C046F8210020C2 -:1041BC0070B50F4E0D0031680400002902D100F0DB -:1041CC008FF830602900200000F08AF8431C0AD0D8 -:1041DC000323C51C9D43A84207D0291A200000F0D8 -:1041EC007FF8431C01D101256D42280070BDC046EB -:1041FC00FC210020F7B50322CB1C934308330600A7 -:10420C001F000C2B32D20C27B94231D8300000F0F1 -:10421C00EDF8324D2B681C00002C2ED139003000EB -:10422C00FFF7C6FF0400431C1ED12C682500002D8F -:10423C004AD123682900E3183000019300F050F8AC -:10424C00019B834243D123680337FF1A03239F4307 -:10425C0008370C2F00D20C2739003000FFF7A8FFCD -:10426C00431C34D02368DF19276013E0002BCBDA12 -:10427C000C23002533602800FEBD2268D11B20D4FE -:10428C000B2917D9E2192760A34211D12A60636860 -:10429C00116053603000250000F0B0F807220B3598 -:1042AC00231D9543EA1A9D42E5D05B1BA350E2E720 -:1042BC005A60ECE76268A34201D12A60EAE75A60CF -:1042CC00E8E723006468A7E72C006D68AFE70C23D0 -:1042DC003000336000F092F8CDE7C046F8210020A2 -:1042EC00002370B5064D040008002B6000F0CAFBDB -:1042FC00431C03D12B68002B00D0236070BDC0463B -:10430C00002200200CB430B5174B0C001D689DB07A -:10431C00002908DA8B2301202B6040421DB030BCF1 -:10432C0008BC02B0184782236A469B009382002384 -:10433C0002900690994200D04B1E049307930123E0 -:10434C006A465B42D382280021AB209A02A90193D2 -:10435C0000F0BEF8431C01DA8B232B60002CDDD05F -:10436C000023029A1370D9E70800002003000A7892 -:10437C0001311A700133002AF9D1704730B514009D -:10438C0005001A009BB0002C05DA8B23036001207A -:10439C0040421BB030BD822368469B0083810023C2 -:1043AC00009104919C4200D0631E0293059301235B -:1043BC0069465B42CB8128001E9B00F089F8431CA8 -:1043CC0001DA8B232B60002CE3D00023009A1370AE -:1043DC00DFE7000007B5009313000A000100024854 -:1043EC000068FFF7CBFF0EBD0800002010B5024897 -:1043FC0000F0F0FA10BDC0460422002010B50248AF -:10440C0000F0E9FA10BDC04604220020F0B58E6819 -:10441C0085B007000C00039201939E423CD8902378 -:10442C008A89DB001A4234D00969236860695B1AF7 -:10443C00029303234343DD0FED18019B02980133D4 -:10444C001B186D10AB4200D91D00530532D5290045 -:10445C003800FFF7CFFE061E09D10C233B6040232A -:10446C000120A28940421343A38105B0F0BD029AFA -:10447C002169FFF741FEA389144A1A408023134394 -:10448C00A381029B2661F61826606561019EED1AD8 -:10449C00A560019B9E4200D9019E320003992068C1 -:1044AC0000F0A5FAA36800209B1BA36023689E194B -:1044BC002660DAE72A00380000F0ACFA061EE0D1DC -:1044CC0038002169FFF72AFEC7E7C0467FFBFFFFD4 -:1044DC00F0B5A1B003901D008B890F0016001B06D0 -:1044EC0011D50B69002B0ED14021FFF783FE3860EC -:1044FC003861002805D10C23039A0138136021B0D0 -:10450C00F0BD40237B61002308AC636120336376EC -:10451C001033A376079535002B78002B01D0252B73 -:10452C0047D1AB1B0593B5420CD032003900039830 -:10453C00FFF76CFF431C00D1AEE06269059B94460B -:10454C00634463612B78002B00D1A5E0012200238A -:10455C005242626004A9543252186E1C2360E3600C -:10456C00A3601370A36505223178544800F034FA27 -:10457C00751C00281FD12268D30604D5532304A927 -:10458C005B1820211970130704D5532304A95B1859 -:10459C002B21197033782A2B16D0350000210A20D4 -:1045AC00E3682A786E1C303A092A4ED9002911D1B9 -:1045BC0017E00135B0E7414B2268C01A0123834054 -:1045CC0013432E002360CEE7079B191D1B68079130 -:1045DC00002B01DB0B9304E05B42E36002231343EB -:1045EC0023602B782E2B0AD16B782A2B35D1079B85 -:1045FC0002351A1D1B680792002B2BDB0993304EDA -:10460C0003223000297800F0E7F9002806D0402377 -:10461C00801B8340226801351343236029780622CE -:10462C0028486E1C217600F0D7F900283CD0264B88 -:10463C00002B25D10722079B07339343083307939D -:10464C006369049A9B18636165E743433500012154 -:10465C009B18A6E701235B42D0E700230A201A002F -:10466C000135636029786E1C3039092903D9002B78 -:10467C00C5D00992C3E74243350001235218F1E734 -:10468C0007AB00933A002100104B039800E000BFE9 -:10469C000490049B0133D3D1BB890D985B0600D4E5 -:1046AC002DE7012040422AE707AB00933A00210096 -:1046BC00064B039800F07CF8EAE7C0465C5900080A -:1046CC0062590008665900080000000019440008EF -:1046DC00F7B5150001938A680B690C0000909342A2 -:1046EC0000DA130022002B6043321278002A01D02A -:1046FC0001332B6023689B0602D52B6802332B6099 -:10470C002268062317001F401A4227D02300433388 -:10471C001B785A1E93412268920630D422000199CC -:10472C000098089E4332B047431C25D006232068CE -:10473C002A68E16800250340042B03D18D1AEB4352 -:10474C00DB171D40A3682269934201DD9B1AED180B -:10475C000027BD4220D1002010E00137E3682A6811 -:10476C009B1ABB42D2DD2200012301990098089EBE -:10477C001932B047431CF0D101204042FEBD30201D -:10478C00E1184331087021005A1C45310978A218F0 -:10479C00433202331170C1E72200012301990098C2 -:1047AC00089E1A32B047431CE6D00137D1E700000F -:1047BC00F0B58BB006920A00433207930590049231 -:1047CC000A7E0C00109B782A07D8622A09D8002A86 -:1047DC0000D1C1E0582A00D18CE02600423632705C -:1047EC0022E0100063381528F7D8FDF775FE160087 -:1047FC001F00F6FFF6FFF6FFF6FF1F00F6FFF6FFB1 -:10480C00F6FFF6FFA80036009A00F6FFF6FFB90097 -:10481C00F6FF3600F6FFF6FF9E0026001A684236B9 -:10482C00111D1960136833700123A7E0086819681B -:10483C000A1D05060BD50D681A60002D03DA2D2311 -:10484C00049A6D421370614B0A2703931BE00D68A9 -:10485C001A604106F1D52DB2EFE70D681968081DF5 -:10486C0018602E0601D50D6803E06D06FBD50D68AA -:10487C00ADB2564B082703936F2A00D002372300A2 -:10488C00002243331A706368A360002B03DB0422FD -:10489C00216891432160002D02D1049E002B0CD085 -:1048AC00049E28003900FDF7A7FE039B013E5B5CCC -:1048BC0033702B0005009F42F3D9082F09D12368D0 -:1048CC00DB0706D563682269934202DC3023013E84 -:1048DC003370049B9B1B2361079B2100009305985D -:1048EC00069B09AAFFF7F4FE431C4CD10120404261 -:1048FC000BB0F0BD45310A70344A03921A68216836 -:10490C0020CA1A60080616D5CB0702D520231943F6 -:10491C0021601027002DB2D1202322689A432260F7 -:10492C00ADE7202209680A43226022007821453233 -:10493C001170274AE1E74806E6D5ADB2E4E71A68FC -:10494C000D68101D4969186013682E0601D5196091 -:10495C0002E06D06FBD519800023049E2361BBE7A2 -:10496C001A68111D1960166800213000626800F089 -:10497C0033F8002801D0801B60606368236100233A -:10498C00049A1370A8E72369320006990598079DCD -:10499C00A847431CAAD023689B0715D4099BE06841 -:1049AC009842A5DA1800A3E722000123069905987E -:1049BC00079E1932B047431C98D00135E368099A19 -:1049CC009B1AAB42F0DCE9E70025F7E76D590008CC -:1049DC007E59000870477047C9B28218904201D1C5 -:1049EC000020704703788B42FBD00130F6E710B5FE -:1049FC00884202D98B18984203D3002307E08B5CC2 -:104A0C008354013AFBD210BDCC5CC45401339A429E -:104A1C00FAD1F8E7F7B507000E001400002905D10C -:104A2C001100FFF7E7FB05002800FEBD002A03D1AB -:104A3C00FFF774FB2500F7E700F01BF801908442A8 -:104A4C0003D835004308A342EED321003800FFF70A -:104A5C00D1FB051EE8D0019B22009C4200D91A0014 -:104A6C0031002800FFF748FB31003800FFF756FBF8 -:104A7C00DAE70B1F1B68181F002B01DA0B58C01844 -:104A8C0070470000044A03001068002802D0C318C5 -:104A9C00136070470148FAE708220020102200201A -:104AAC00F8B5C046F8BC08BC9E467047F8B5C04681 -:084ABC00F8BC08BC9E467047DF -:104AC4001E14000810140008101400081014000824 -:104AD400101400083A140008101400081C140008EC -:104AE4001014000810140008101400081014000812 -:104AF4004A140008101400081014000810140008C8 -:104B040010140008101400081014000810140008F1 -:104B14001014000810140008101400089014000861 -:104B2400641500087A150008881500086415000843 -:104B3400641500086415000864150008641500086D -:104B4400641500086415000864150008641500085D -:104B5400641500086415000864150008641500084D -:104B6400641500086415000864150008641500083D -:104B740096150008641500086415000864150008FB -:104B8400641500086415000864150008641500081D -:104B940064150008C0150008FA150008641500081B -:104BA4006415000864150008041600080E160008B1 -:104BB4007C16000892160008A01600087C1600084F -:104BC4007C1600087C1600087C1600087C16000879 -:104BD4007C1600087C1600087C1600087C16000869 -:104BE4007C1600087C1600087C1600087C16000859 -:104BF4007C1600087C1600087C1600087C16000849 -:104C0400AE1600087C1600087C1600087C16000806 -:104C14007C1600087C1600087C1600087C16000828 -:104C24007C160008D8160008EA1600087C1600084E -:104C34007C1600087C16000822170008F4160008E9 -:104C440070170008861700089A17000870170008E4 -:104C54007017000870170008701700087017000814 -:104C64007017000870170008701700087017000804 -:104C740070170008701700087017000870170008F4 -:104C840070170008701700087017000870170008E4 -:104C9400C81700087017000870170008701700087C -:104CA40070170008701700087017000870170008C4 -:104CB40070170008FC170008F217000870170008A6 -:104CC400701700089617000896170008A817000820 -:104CD400641900084A1800084A1800084A1800080D -:104CE4004A1800084A1800084A1800084A18000818 -:104CF4004A1800084A1800083E1800083E18000820 -:104D04003E1800083E1800083E1800084219000822 -:104D14003E1800083E1800083E1800083E18000817 -:104D24003E1800083E1800083E1800083E18000807 -:104D34003E1800083E1800083E1800083E180008F7 -:104D44003E1800083E1800083E1800083E180008E7 -:104D54003E1800083E1800083E1800083E180008D7 -:104D64003E1800083E1800083E1800083E180008C7 -:104D74003E1800083E1800083E1800083E180008B7 -:104D84003E1800083E1800083E1800083E180008A7 -:104D94003E1800084A190008F41800083E180008D4 -:104DA400A01800083E1800083E1800083E18000825 -:104DB4003E1800083E1800083E1800083E18000877 -:104DC400DE1800083E180008301900083E180008D4 -:104DD4003E1800081A1900083E1800083E1800087A -:104DE4003E180008CC18000812190008AE2200086A -:104DF40086220008862200088622000886220008EF -:104E040086220008862200088622000886220008DE -:104E14008622000886220008F023000836230008B2 -:104E240086220008862200088622000886220008BE -:104E340086220008862200088622000886220008AE -:104E4400862200088622000886220008142300080F -:104E54008622000886220008EE2200088622000826 -:104E6400CE2200088622000886220008AE2200080E -:104E74006173736572745F6661696C6564000000D8 -:104E840072784572726F7243616C6C6261636B001D -:104E940074784572726F7243616C6C6261636B000B -:104EA400303132333435363738394142434445465C -:104EB40073746174654E6F700000000073746174E4 -:104EC400654E6F70000000004253505F646F43688A -:104ED400616E6E656C416374696F6E0073746174A6 -:104EE4006549646C650000005075736820746865DA -:104EF40020627574746F6E20746F20706C617920F9 -:104F04006F72207061757365203A2D290A000000C4 -:104F140068616E646C655265616452657175657330 -:104F24007400000068616E646C6557726974655240 -:104F3400657175657374000068616E646C655265B3 -:104F44007175657374000000726573706F6E6457D9 -:104F540069746841636B4672616D6500646973705E -:104F6400617463684576656E7400000073746174DF -:104F74006549646C65000000737461746550617503 -:104F840073656400737461746550756C73696E67DE -:104F9400000000004253505F747269676765724194 -:104FA4004443000068616E646C65496E636F6D69AB -:104FB4006E674672616D6500486172644661756C26 -:104FC400745F48616E646C65720000007370757282 -:104FD400696F75734952510054494D315F42524BC8 -:104FE4005F55505F5452475F434F4D5F495251489C -:104FF400616E646C65720000444D41315F436861C9 -:105004006E6E656C315F49525148616E646C6572B5 -:10501400000000000000000000000000000000008C -:10502400000000000000000000000000000000007C -:105034000000000001000000020000000300000066 -:105044000400000006000000070000000800000043 -:10505400090000004253505F72656769737465729A -:1050640041707054696D657248616E646C6572005C -:10507400A85800084C51000802007D03C800000035 -:10508400B458000844510008040032052C01000003 -:10509400BC5800083C51000804001405C800000076 -:1050A400C85800081851000812001E092800000002 -:1050B4004253505F726567697374657250756C739F -:1050C4006544656C6567617465000000436F6E74C8 -:1050D400726F6C6C65725F696E69740044617461AF -:1050E4004C696E6B5F77616974466F7253796E6356 -:1050F400000000005061747465726E4974657261D9 -:10510400746F725F636865636B5061747465726E0B -:10511400000000000102020504020A040408080554 -:1051240001080A01050A020105020204040A08042E -:1051340005080801010A0A0501080204040208011D -:105144000102040802010804050A0A05257328253A -:10515400732C202575290A002573282575290A0032 -:1051640070742D3E706163655F6D73203E3D203524 -:10517400000000007372632F6273705F73746D3389 -:1051840032673037312E630070742D3E70756C7346 -:10519400655F77696474685F6D6963726F732021FA -:1051A4003D20300070742D3E6E725F6F665F7075C7 -:1051B4006C73657320213D203000000028656C630A -:1051C4006F6E5B305D202620656C636F6E5B315DB6 -:1051D40029203D3D203000005465726D696E616C7C -:1051E4000000000052545400534547474552000004 -:1051F400436F6E74726F6C6C65725F257320756E8D -:105204006578706563746564206576656E743A20AC -:1052140025750A0053657175656E6365725F257344 -:1052240020756E6578706563746564206576656E57 -:10523400743A2025750A00007366203D3D204E55C2 -:105244004C4C00007372632F636F6E74726F6C6CDE -:1052540065722E63000000007372632F73657175AD -:10526400656E6365722E63006E6272203D3D20316F -:10527400000000007372632F646174616C696E6B6B -:105284002E6300006273702E637269746963616CCB -:105294005F73656374696F6E5F6C6576656C2021FE -:1052A4003D2055434841525F4D4158002573282500 -:1052B40075293A20756E6B6E6F776E20646576691A -:1052C40063652069640A00006273702E63726974F6 -:1052D4006963616C5F73656374696F6E5F6C657637 -:1052E400656C20213D203000436F6E74726F6C6CCE -:1052F40065725F257320454E5452590A0000000020 -:10530400436F6E74726F6C6C65725F2573204558C1 -:1053140049540A005472616E73616374696F6E203C -:105324002568753A207265616420617474726962DB -:10533400757465202568750A0000000025733A20FD -:10534400756E6B6E6F776E206174747269627574BA -:10535400652069643D2568750A0000005472616E19 -:1053640073616374696F6E202568753A207772697A -:10537400746520617474726962757465202568753A -:105384000A00000025732C20756E6B6E6F776E20FB -:105394006F70636F64652030782530326868780AEE -:1053A400000000004672616D65207061796C6F6168 -:1053B4006420746F6F206269673A202568752062E3 -:1053C40079746573000000002573282568687529C1 -:1053D40020746F20636F6E74726F6C6C65720A0058 -:1053E40054696D6520253032753A253032753A2579 -:1053F4003032750A000000005265636569766564A1 -:10540400207369676E616C2025640A002573282562 -:105414006875293F0A00000053657474696E67203B -:105424005663617020746F20256875206D560A00DC -:10543400537769746368696E6720746F20272573D6 -:10544400270A000070642D3E6E725F6F665F73748E -:1054540065707320213D2030000000007372632FBB -:105464007061747465726E5F697465722E63000096 -:1054740053657175656E6365725F257320454E547F -:1054840052590A0053657175656E6365725F2573C1 -:1054940020455849540A0000497072696D3D2575CC -:1054A400206D412C20566361703D2575206D562C6E -:1054B40020566261743D2575206D560A0000000077 -:1054C4005374617274696E6720272573270A00007C -:1054D40050756C736520747261696E206C617374AD -:1054E4002070756C736520646F6E650A000000009F -:1054F40046696E697368656420272573270A00006E -:10550400257320454E5452590A0000002573204546 -:105514005849540A00000000526573756D696E673E -:1055240020272573270A000050617573696E672070 -:10553400272573270A000000436F6D6D616E647345 -:105544003A202F3F202F61202F62202F64202F6CC0 -:10555400202F6E202F71202F75202F76202F3020A2 -:105564002F312E2E2F390A005475726E696E672002 -:1055740056636170204F46460A0000005475726EEF -:10558400696E672056636170204F4E0A0000000068 -:1055940025730A004669726D776172652076302E34 -:1055A40033302D626574610A00000000556E6B6E25 -:1055B4006F776E20636F6D6D616E6420272F256396 -:1055C400270A0000476F742041434B20666F722006 -:1055D4006672616D6520256868750A00476F7420DE -:1055E40053594E43206672616D652C207365715F5B -:1055F4006E723D256868750A00000000476F7420CC -:105604006465627567206672616D652C20736571CF -:105614005F6E723D256868752C20636F6D6D616ED9 -:1056240064206C656E6774683D2568750A00000027 -:1056340027252E2A73273F0A00000000476F742095 -:105644007061636B6574206672616D652C2073658F -:10565400715F6E723D256868752C207061636B659F -:10566400742073697A653D2568750A00476F742054 -:105674002573206672616D652C207365715F6E728F -:105684003D256868752C207061796C6F61645F7367 -:10569400697A653D2568750A0000000025733A2083 -:1056A400626164206672616D650A000025732C20B6 -:1056B400494353523D307825780A0000202054692C -:1056C400703A2068616C74204350552C20636861E3 -:1056D4006E676520677561726420402025702074B0 -:1056E4006F20302C207468656E20737465702E0AE8 -:1056F4000000000050742053523D307825780A0091 -:10570400414443206F76657272756E0A0000000092 -:105714004144432072656164790A00004144432096 -:105724006368616E6E656C20636F6E666967207274 -:10573400656164790A00000041444320454F430AEF -:105744000000000041444320454F530A000000007C -:10575400414443312D3E4953523D307825780A0067 -:1057640025732C2054454946310A000025732C200A -:105774004953523D307825780A000000496E697417 -:1057840069616C6973696E672E2E2E0A0000000031 -:1057940044657649643D307825782C2053797374B8 -:1057A400656D436F7265436C6F636B3D25750A00CD -:1057B4004C4C5F4144435F5245475F496E697420D6 -:1057C4006572726F723D25750A00000025733A20D8 -:1057D4005053433D25750A006D652D3E6368616E27 -:1057E4006E656C5F6664203C2030000043616E206F -:1057F4006F6E6C7920757365206F6E6520736572AA -:1058040069616C20706F7274206174206120746906 -:105814006D652C20666F72206E6F770A00000000A1 -:10582400436865636B696E6720272573270A000048 -:1058340025733A2073686F727420696E20656C63F7 -:105844006F6E202568750A00546F74616C206E7544 -:105854006D626572206F662070756C7365733A2093 -:1058640025750A005374617274696E67204E656F02 -:10587400444B210A0000000025730000436F6E733F -:105884006F6C653A20272573270A0000456E642053 -:105894006F662073657373696F6E0A0042796521C0 -:1058A4000A0000004A61636B68616D6D65720000F7 -:1058B400546F67676C65000043726F7373546F674E -:1058C400676C6500436972636C650000415353451E -:1058D4005254494F4E204641494C45442028257393 -:1058E400203A202575292025730A000042414400EE -:1058F4004E4F4E450041434B00004E414B00005378 -:10590400594E430044415441004F50545300000049 -:1059140073746F7261676520213D204E554C4C00B5 -:105924006D616F6C69622F7372632F6576656E7437 -:1059340071756575652E63006576656E745F736950 -:105944007A65203D3D20414F4576656E745F7369ED -:105954007A65286576742900232D302B2000686C25 -:105964004C0065666745464700303132333435367E -:1059740037383941424344454600303132333435B7 -:0C598400363738396162636465660000E4 -:08599000E8CEFF7F01000000DA -:04599800E50000081E -:04599C00BD00000842 -:1059A0000024F400040000000C00002000000000AF -:1059B00000000000000000000000000000000000E7 -:1059C00000000000000000000000000000000000D7 -:1059D00000000000000000000000000000000000C7 -:1059E00000000000000000000000000000000000B7 -:1059F00000000000000000000000000000000000A7 -:0C5A00000000000000000000000000009A -:0400000508002A11B4 +:10013C0000E100E0F0B501224F46D64646460B687A +:10014C0000249146C0B5002B1AD14BE01700574341 +:10015C007B00DB19DB43C568AC4666460D691E4067 +:10016C007D433543C5604D68022D2DD07D4302681B +:10017C0013402B4303600B681A000134E24031D06A +:10018C004D461A00A5402A402B42F5D04B68013B46 +:10019C00012BDBD81700574383688D6898467B008A +:1001AC009C467D43BC44AA4646466546AE43350054 +:1001BC00564663462E438660CE6845685643954343 +:1001CC003543DB434560C6E7FF2A10D83D007D432D +:1001DC00026A2E01761BB2434E6975432A430262B2 +:1001EC004D68C3E7E0BCBA46B146A846F0BD120A5A +:1001FC0052435243456A1601B61AB5434E697243CF +:10020C002A4342624D68B1E710B511240200084838 +:10021C000B00016AA14301628020064980008862BC +:10022C00DA38FF3888610449044803F0D9FBFEE74B +:10023C00002C014000040050944E00087C51000832 +:10024C00FA2170B5124C05008900206802F0B0F953 +:10025C00802301385B04984201D3012070BDC0217A +:10026C000C4A090650600C48036A1B021B0A0B431C +:10027C0003620721002393601160032DEDD8026AFD +:10028C00A9071202120A0A43026218006560E5E728 +:10029C000000002010E000E000ED00E010B50A00C6 +:1002AC0002490348103103F09BFB10BD944E00082B +:1002BC008851000810B50A0002490348203103F0A8 +:1002CC008FFB10BD944E00088851000870B50C00CF +:1002DC0064260500164803F083FBDB2366435B00B2 +:1002EC00EC543100134803F07BFB5023124AD652D6 +:1002FC00124B321C9E4200D91A1C114B92B29A42DC +:10030C0000D21A000D4B28349A1A0E4BE4B2534308 +:10031C008022120194460C4A63441B0B536121004A +:10032C000A4803F05DFBB823FF33EC5470BDC046A4 +:10033C0090510008B05100088C000020D327000019 +:10034C00B20400004907000000740040C8510008C6 +:10035C004B1E9941012310B54942994300220023B9 +:10036C000E3103F0A3FD10BD70B5060014001D0086 +:10037C0082B080360092019332687368A41A9D4152 +:10038C00002D04D1074B9C4201D802B070BD08234C +:10039C006A46132103F08AFD009B019C3360746054 +:1003AC00F3E7C046BFE1E40030B50100040083B0C0 +:1003BC00174803F015FB5023164D221CEC52164B1C +:1003CC009C4200D91A1C154B92B29A4200D21A00C8 +:1003DC00114B64219A1A124B5343802212019446FA +:1003EC00104A63441B0B53615023E85A2B005833BB +:1003FC0098836B46DC1D02F0DBF82830207001235B +:10040C0022002121E86E03F051FD03B030BDC0463F +:10041C00B05100088C000020D3270000B20400006B +:10042C004907000000740040F0B5D6464F464646DA +:10043C000300C0B5A933FF331D8902000020002D35 +:10044C0004D1E0BCBA46B146A846F0BDD4219C7A92 +:10045C004900515898881A79002C7ED1CC7AD879D9 +:10046C005200241A0120013CE4B2987248689B792E +:10047C0085189946865C6D788F7AC82B7ED80123B7 +:10048C005B424B449846042F00D89BE04B46002B14 +:10049C0005D1704B704A1800704903F0B1FA002C6A +:1004AC0000D185E07B01DB1B9801C01AFA23C00048 +:1004BC00C01980019B04984274D36948002206211C +:1004CC00684B013CD8621C635A621A698A431A61F0 +:1004DC00354200D09BE0052333427ED042460221B8 +:1004EC00604B35435A63DA680A43DA605A6901395A +:1004FC000A435A614022ED4301205B4B9A61EBB2F7 +:10050C00054200D09CE0594A022190620422082046 +:10051C0019401A400340002900D08DE002205349B5 +:10052C008862002A6FD10421504A9162002B50D06E +:10053C0020224E4B9A61002352214D4A494C535272 +:10054C006363A36390692E39002203F0AFFC012290 +:10055C00236801201343236073E701320C89D6B260 +:10056C00B4422DD07200DC790134E4B2DC71CE7A65 +:10057C00013EB44252D00020987277E7C7239846C8 +:10058C00042F8CD8334B3B4A18003B499A4603F056 +:10059C0037FA002C0ED07B01DB1B9801C01AC0006F +:1005AC00C0198001FA21890002F002F8013885E7B0 +:1005BC00284B9A465046314A314903F021FA71E7EB +:1005CC000022D0E7234B2B4A18002B4903F018FAD2 +:1005DC005CE72022254B9A62ADE742460421214B71 +:1005EC0035439A63DA680A43DA605A6903390A4375 +:1005FC005A61002D1ED140221B4B9A621B4B3E3A76 +:10060C0099619A6108230421184A91618EE762214D +:10061C001C4A1048FF3103F0F3F95CE70026013067 +:10062C0080B2DE7198800F898742A4D1013D9E80F3 +:10063C001D81A0E7ADB25DE702200C49886170E72F +:10064C00082402213C3A19401A402340074CA0616F +:10065C0061E7C04600520008145200083E03000037 +:10066C00FEFF0000002C0140000800500004005068 +:10067C008C000020EC5100083D03000030520008B3 +:10068C003F03000048520008032310B5104C114AD8 +:10069C0023616361104BA261E36180239B012362A0 +:1006AC000023A3626362E36222660C4A0C4978322F +:1006BC0062661022E01DA2662367E366636703F09F +:1006CC004DFE2000074903F049FE2023A37110BD05 +:1006DC002421002064520008240100208C000020FA +:1006EC007052000874520008F8B54746CE4680B5E3 +:1006FC008368C56899465B1B9846436804000E00E6 +:10070C0017005819904507D9ED1903F0EDFCE56079 +:10071C00C0BCB946B046F8BD424603F0E5FC4B46BA +:10072C003100ED19ED1A2A006068414403F0DCFC3D +:10073C00E560EDE7F0B557464E464546DE46E0B57A +:10074C00354B83B09A461B78060015000191002B9F +:10075C0056D07700BB19DB0053441A6F9046DA6E03 +:10076C009146904525D8130042462C009B1A9D4279 +:10077C0009D8002C09D1200003B0F0BCBB46B2460E +:10078C00A946A046F0BD1C1EF5D0A146BB19DB0046 +:10079C005344596E220041440198A04403F0A4FC38 +:1007AC004C46002CE7D04346BF19FF0057443B672B +:1007BC00E1E742469B6E2C009B1A9D4227D8BB1941 +:1007CC00DB0053449B46596E22004144019803F0D0 +:1007DC008BFC5B469B6EA0442D1B434519D04B46AE +:1007EC0042469B1A99464D450DD8002DD9D0019BF8 +:1007FC00A1469C46A44463462C000193A944C5E73A +:10080C00FFF742FFA5E74D46002DCAD0EFE71C00CD +:10081C00D5E700239846E6E724210020F8B5574693 +:10082C004E46DE4645468946411CE0B517004A0057 +:10083C0052180300D2009246344A5E0093461000D0 +:10084C00F618F6005E44F36A50449846012B0CD01F +:10085C00022B27D0002B17D0002398464046F0BC23 +:10086C00BB46B246A946A046F8BDB36A726A93422B +:10087C0047D9013B9B1AB8469F4200D9984642463D +:10088C004946FFF731FFE9E7B36A726A934233D9FD +:10089C00013B9B1A9F42E1D83A004946FFF724FFDF +:1008AC00B846DBE70023746A98461DE0013B356AC5 +:1008BC001B1BBB4200D93B002D1B9D4200D91D00C8 +:1008CC005B46534458682A004946001903F00CFC57 +:1008DC00336A6419E31A5A1E93415B421C40A844C4 +:1008EC00A9447F1B7462B9D0B36AA342DED8356ABF +:1008FC005B19013B1B1BDCE7316A5B18013B9B1A44 +:10090C00C8E7316A5B18013B9B1AB4E7242100202D +:10091C00F0B5C64600B5856843686A1C04009A4267 +:10092C0007D8036859551500C36882600133C3604A +:10093C0043689D4202D080BCB846F0BD236827694D +:10094C0098460E4B1B78002B15D0EFF31086012127 +:10095C0081F310882A0041463800FFF75FFF86F3C9 +:10096C001088A368834203D001235B42E360E2E773 +:10097C000023A360DFE7FFF787FEE6E724210020D2 +:10098C00F0B54E4645465746DE46E0B583B09A462E +:10099C000C9B80460E0015009946914200D27DE0DA +:1009AC0008000127290001F003FE01378542F9D91F +:1009BC00574500D2574601230D9A1A4001920D9AC1 +:1009CC0013424ED14B46002B4BD0130020249B07D7 +:1009DC005ED44F4545D201235B429C4621004046E4 +:1009EC00E144FFF795FF4346DB68002B32DB4B46B7 +:1009FC00002BEED153460124012B07D901235B4276 +:100A0C009C46E24453466C43012BF7D8210030003E +:100A1C0001F0CEFD8542F5D9214B9B4630239A46F9 +:100A2C0006E02900200001F0C3FDAC420FD3040006 +:100A3C003000210001F042FE534658440E00C15CC8 +:100A4C004046FFF765FF4346DB68002BE9DA019B64 +:100A5C00002B19D103B0F0BCBB46B246A946A04648 +:100A6C00F0BD4346DB68002BC4DAF3E74F45F1D207 +:100A7C0001235B429C4620214046E144FFF748FF9E +:100A8C004346DB68002BE5DB4B46002BEED1E1E760 +:100A9C0053465C425C41240120349AE7012787E7E6 +:100AAC00944E000810B5080003F0D4FA0349020074 +:100ABC004031034802F094FF002010BD944E000812 +:100ACC007C52000810B5080003F0C4FA0349020078 +:100ADC004C31034802F084FF002010BD944E0008F6 +:100AEC00A052000810B50400806F03F0DBF9002859 +:100AFC0001D1002010BD606F03F0D4F90028F8D0AC +:100B0C00200003F0CFF9F5E770B5D02676008359B5 +:100B1C0004009847051E1BD0A65903F07DFA01006E +:100B2C002000B047002804D0E3210A4A0A4802F00A +:100B3C0067FFD0235B00E55003F060FA0100200052 +:100B4C00A847002804D0E621024A034802F058FFC7 +:100B5C0070BDC046C4520008D052000870B5D026F3 +:100B6C007600835904009847051E1DD0A65903F042 +:100B7C0053FA01002000B047002805D09E210B4AF3 +:100B8C000B48490002F03CFFD0235B00E55003F01A +:100B9C0035FA01002000A847002805D04021034A5F +:100BAC000348FF3102F02CFF70BDC046C452000850 +:100BBC00E4520008F8B50600CC36050001223000DE +:100BCC0002F0E8FF012804D0C321244A244802F093 +:100BDC0017FF72B6BFF34F8FBFF36F8F4827214CAF +:100BEC00E35DFF2B2CD0482201333000A35402F0DC +:100BFC004BFF00280FD04825635D002B18D04822EE +:100C0C00013BDBB2A354002B04D1BFF34F8FBFF3D6 +:100C1C006F8F62B6F8BDE123EA56012A17D048253A +:100C2C0011491248583102F0DBFE635D002BE6D10E +:100C3C00A6210F4A0F48890002F0E2FE635DDEE751 +:100C4C000D4A0E490B4802F0DBFEE35DCBE7802139 +:100C5C000B4A13688B431360CDE7C046F45200086F +:100C6C00005300088C000020944E000838530008F4 +:100C7C005453000800520008105300089102000061 +:100C8C0000440040F0B5CE4647460400E22380B550 +:100C9C00E65A83B01000B6186A46F31DDB08DB0079 +:100CAC00D31A02AF9D4602AB9846E623E25C019054 +:100CBC00009100230421404603F03EF872B6BFF3C6 +:100CCC004F8FBFF36F8F4823234D9946EB5CFF2B5F +:100CDC0034D0482220000133AB5441463200CC3092 +:100CEC0002F0DAFE002814D148242B5D002B1DD015 +:100CFC004822013BDBB2AB54002B04D1BFF34F8F26 +:100D0C00BFF36F8F62B6BD4601B0C0BCB946B046EA +:100D1C00F0BDE123E256012A18D048240F491048AF +:100D2C00583102F05DFE2B5D002BE1D1A6210D4A5E +:100D3C000D48890002F064FE2B5DD9E70B4A0C4983 +:100D4C00094802F05DFE4B46EB5CC2E78021094A84 +:100D5C0013680B431360C7E78C000020944E000807 +:100D6C003853000854530008005200081053000870 +:100D7C009102000000440040F0B5DE4657464E4656 +:100D8C004546E0B58DB0834602AF08000C0003F079 +:100D9C0061F9152826D011D8012837D002282BD17B +:100DAC00BF49C0486C3102F01BFE0020BD460BB0A1 +:100DBC00F0BCBB46B246A946A046F0BD17281BD1D5 +:100DCC00200003F049F9027A0400851D062A42D05E +:100DDC00082A21D0022A2AD0B349B4485C3102F047 +:100DEC00FFFDE2E7D4235A46AD495B00D058783179 +:100DFC002622FFF747FFD8E7200003F02BF9A8497C +:100E0C0002006C31AA4802F0EBFDCEE7A449A948D8 +:100E1C006C3102F0E5FDC8E7C188AA88A64802F04B +:100E2C00DFFDA149A548483102F0DAFDBDE7AA88EB +:100E3C00C188A34802F0D4FDAA88062A00D147E154 +:100E4C00072A3ED0052A00D19FE097499D482031C2 +:100E5C0002F0C6FDA9E7AA88C1889B4802F0C0FD34 +:100E6C00AA88072A1DD0082A15D1AB790C2B9CD146 +:100E7C005A469933FF33D658EB790E34042B00D1F4 +:100E8C006FE2052B00D1ABE11D21002300223000C5 +:100E9C0003F00CF889E784498A48343102F0A0FD4C +:100EAC0083E7AB79042B00D07FE759462200A133AE +:100EBC00FF33C858A43B20210D32FF3B02F0F6FF54 +:100ECC0073E7D2235A465B00D2581233D45C00230A +:100EDC007A8B3B767B837B761E232900BA83F818AA +:100EEC00062203F001F920220523BA1813702422DC +:100EFC00013BBA1813702133FB181C70D4235A46CB +:100F0C005B00D5580E2290466E46C63BEB5A042128 +:100F1C0098441533DB08DB00F31A9D4602AB994667 +:100F2C00E623EA5CD83B01930A33FB18009348464E +:100F3C00012302F001FF72B6BFF34F8FBFF36F8F27 +:100F4C004823624C9A46E35CFF2B00D1CAE148224D +:100F5C0028000133A35449464246CC3002F09CFD94 +:100F6C00002800D0B3E14825635D002B00D18AE155 +:100F7C004822013BDBB2A354002B04D1BFF34F8FAB +:100F8C00BFF36F8F62B6B5460FE76B46FB60D2239B +:100F9C005A465B00D25810336946D35C98469B0086 +:100FAC007B600733DB08DB00CB1A9D46434602AC63 +:100FBC003C61002B00D1ACE1D2235B00D0584646FB +:100FCC000023190141589A000133A150DAB296421C +:100FDC00F7D83B69B0469A462B00022400265546AA +:100FEC00994601CD01F0D2FAFF239C4680B284458C +:100FFC009B415B420233C01801362418F6B2A4B2EE +:10100C00B045EED123006A460C339BB20733DB08A4 +:10101C00DB00D31A9D4602AEBE6073880E24B380EB +:10102C0000236C440622338073804946200003F071 +:10103C005BF80523A37005AB7A687B611623944695 +:10104C00012533733B69A846634455463B6114E064 +:10105C0002220C239246337070700A3B02045444F3 +:10106C00F01844444946120C03F03EF8A3B29846DB +:10107C003B690435AB4200D1BCE02B687E6918009B +:10108C00994601F083FA84B24644FF2CE0D90D2333 +:10109C0003223370230AB370924603237070DDE78A +:1010AC00944E00088C530008144F00085854000844 +:1010BC00A052000874530008205400084054000843 +:1010CC00A0530008C8530008E85300088C00002007 +:1010DC00D2225B4652009958B623FF33CB5C8A5818 +:1010EC001B019C586E46200001F050FAFF2380B281 +:1010FC0083429B415B42C0180E3083B20733DB083E +:10110C00DB00F31A9D4602AB984642465B882900E9 +:10111C0093800023138053800E336B449946062230 +:10112C00180002F0E1FF05234A462000937001F0FD +:10113C002DFA83B29946FF2B00D9ACE00C23424622 +:10114C00022513730E23507343440204210018002C +:10115C00120C02F0C9FF4B460C33ED18D4235A463F +:10116C005B00D358ADB29A46E2235246D35A6A4634 +:10117C009946A9444B460733DB08DB00D31A9D463E +:10118C0002AB9B465246E623D25C434604210093B5 +:10119C0058460123019502F0CFFD72B6BFF34F8F75 +:1011AC00BFF36F8F4825784C635DFF2B00D1A1E016 +:1011BC00482250460133A35459464A46CC3002F0DB +:1011CC006BFC002800D1CEE6E1235246D256012A10 +:1011DC0000D181E06D496E48583102F001FCC2E645 +:1011EC006C490522200002F071FF1B21002800D061 +:1011FC004AE64AE641460D3189B245460B001822B3 +:10120C007869425558469132FF328658C63AB55ADB +:10121C006A46ED18EB1DDB08DB00D31A9D4602ABCA +:10122C009846E623F25C0191BB680421009340468A +:10123C00012302F081FD72B6BFF34F8FBFF36F8FA6 +:10124C004823514C9946E35CFF2B5AD0482230007E +:10125C000133A35441462A00CC3002F01DFC002877 +:10126C0023D14825635D002B29D04822013BDBB2FA +:10127C00A354002B04D1BFF34F8FBFF36F8F62B613 +:10128C00FB689D4691E5A621434A4448890002F03B +:10129C00B7FB635D6CE642460D2313734B461B0A8A +:1012AC00937303250F2350734EE7E123F256012A63 +:1012BC0051D036493648583102F092FBD1E7A6217D +:1012CC00354A3648890002F09BFB635DCDE7E1238C +:1012DC00EA56012A00D07DE78021314A13680B437E +:1012EC00136040E62F4A30492C4802F089FB5346E4 +:1012FC00E35C2CE62B4A2C49284802F081FB635D09 +:10130C0056E7284A2849254802F07AFB4B46E35C0D +:10131C009CE700237A8B3B767B837B761E2329000C +:10132C00BA83F818062202F0DFFE20220523BA1831 +:10133C00137024221133BA1813700C2294460C32F9 +:10134C009046B844C44462467A61424601250E2157 +:10135C00083BBA6053E78021114A13680B431360B2 +:10136C007FE704222000114902F0B0FE002809D0CA +:10137C00042220000E4902F0A9FE002800D083E5CB +:10138C001C2182E51A2180E58C000020944E000877 +:10139C003853000818540008545300080052000831 +:1013AC000044004010530008910200001054000843 +:1013BC0078540008F0B50400E025DC20C646E2268F +:1013CC00635D00B55A1C62552258D154615DA35B14 +:1013DC00994206D327580FD0E422A05A1B189942E1 +:1013EC0003D0002080BCB846F0BDE02300223800BA +:1013FC00E25402F0FDFCF5E7380002F0D5FC0028C1 +:10140C000DD0380002F000FDE4239846E052802312 +:10141C0001001B01984215D8615DA35BDEE7635D9B +:10142C00013BDBB26355002BDBD00023DC25E03025 +:10143C006259D1184978D154225C0133DBB29A42FB +:10144C00F6D8CEE7034802F0CBFA00234246A3526B +:10145C00C7E7C04680540008F0B5CE4647460B009F +:10146C00E22180B583B0465A6946F41DE408E400D5 +:10147C00091B02AF8D4602A9884600920500002286 +:10148C000121404602F020FC72B6BFF34F8FBFF330 +:10149C006F8F4823234C9946E35CFF2B34D04822B2 +:1014AC0028000133A35441463200CC3002F0F4FA48 +:1014BC00002814D14825635D002B1DD04822013B28 +:1014CC00DBB2A354002B04D1BFF34F8FBFF36F8F4C +:1014DC0062B6BD4601B0C0BCB946B046F0BDE12312 +:1014EC00EA56012A18D048250F491048583102F005 +:1014FC0077FA635D002BE1D1A6210D4A0D488900D6 +:10150C0002F07EFA635DD9E70B4A0C49094802F0F8 +:10151C0077FA4B46E35CC2E78021094A13680B4318 +:10152C001360C7E78C000020944E00083853000865 +:10153C005453000800520008105300089102000098 +:10154C00004400400FB430B597B01AA920C9280048 +:10155C00019102F03BFA2A0004005021019B02A8E1 +:10156C0002F030FF002806DD064B013082B202A9E2 +:10157C00186FFFF787FB200017B030BC08BC04B015 +:10158C001847C0468C00002070B5050008000C0000 +:10159C0002F060FDC31FDBB21A2B03D823499B005A +:1015AC00CB589F46224902006C31224802F018FAAF +:1015BC0070BD2100A86F02F0BDFCF9E7200002F01D +:1015CC004BFD0023416800681B4A01F091F90400AF +:1015DC003C21200001F072F820000E003C2100F0AC +:1015EC00E7FF3C2101F06AF80D00E1212000090120 +:1015FC0000F0DEFF330001002A001048FFF7A2FFC5 +:10160C00D6E7200002F028FD04680D482100FFF702 +:10161C0099FF022CCCD188230022EA54C8E700237E +:10162C0000221E21A86F02F041FCC1E7B44A000859 +:10163C00144F0008D054000840420F00A454000876 +:10164C00BC54000870B5040008000D0002F002FD47 +:10165C0020285DD030D8142846D01F283AD10A2132 +:10166C002000FEF733FEB622DA21FF32A35C4900DC +:10167C000133DBB2A354615C994251D01B01D222DD +:10168C005200A5582B48ED182968FFF75BFFB823CB +:10169C00D422FF335200E35CA550A934FF34AA894D +:1016AC00A37100232281A380EB7A002B3BD0002373 +:1016BC00E371A372002070BD21280BD1280002F029 +:1016CC00CBFC05781C48290002F08AF9B823FF33BB +:1016DC00E554EFE7280002F0BDFC184902007C310C +:1016EC00174802F07DF9E5E7280002F0B5FC154A31 +:1016FC0041888388008853434A43C1010918090172 +:10170C00091A9B0B920B890A0F48FFF71BFFD1E7B5 +:10171C00280002F0A1FC01782000FEF7D7FDC9E7F4 +:10172C000023A354ABE74821084A094802F068F9A2 +:10173C00BDE7C04604550008C8510008144F000806 +:10174C007C5200084DCE0000DC54000818550008EF +:10175C003055000870B5040008000D0002F07AFC4A +:10176C00262803D8254A800013589F4629002000BC +:10177C00FFF768FF70BDB623FF33E25C113BE35803 +:10178C0012019B18B822D426FF32A25C7600A3511A +:10179C00A5199989AA7100222981AA80DA7A002ACE +:1017AC0024D00022EA71AA7219681548FFF7CAFE04 +:1017BC001448DFE714491548083102F011F90020EC +:1017CC00D8E711491248083102F00AF90020D1E794 +:1017DC00104802F005F90020CCE7D4235B00E35855 +:1017EC000D481968FFF7AEFE0020C3E748210B4AED +:1017FC000B4802F005F9A359D3E7C046204B00086B +:10180C006C55000831180008944F00084455000826 +:10181C00585500087C5500089055000818550008CC +:10182C003055000870B5050008000C0002F012FCE1 +:10183C00262803D8164A800013589F4621002800FA +:10184C00FFF700FF70BD0020FCE72800FEF7ECFD61 +:10185C0003000020002BF5D1A933FF33EB580D48C2 +:10186C001968FFF76FFE0C48ECE70C490C48143173 +:10187C0002F0B6F82800FEF7D7FD0020E2E7074992 +:10188C000848143102F0ACF80020DBE70648D9E731 +:10189C00BC4B00089055000861170008944F0008D5 +:1018AC00A0550008AC550008B918000870B5050023 +:1018BC0008000C0002F0CEFB262803D81D4A80003D +:1018CC0013589F4621002800FFF7BCFE70BDD4239F +:1018DC005B00EB5818481968FFF734FE1748F5E71A +:1018EC0017491848243102F07BF80020EEE7144920 +:1018FC001548243102F074F80020E7E70020E5E7F2 +:10190C00D8235B00EB5A002B08D1A933FF33EB58DB +:10191C000E481968FFF716FE0D48D7E7D4235B0075 +:10192C00EB580C481968FFF70DFE0020CEE708486D +:10193C00CCE7C046584C0008B855000831180008D0 +:10194C00944F0008A0550008AC55000890550008AD +:10195C0061170008C855000870B50400303CE3B2AC +:10196C0082B0462B03D84D4A9B00D3589F460100AA +:10197C004B48FFF7E7FD02B070BD8026494DB6001D +:10198C006B69334203D1484802F02AF8AE61FA2061 +:10199C008000604380B2FEF707FDECE7434B583301 +:1019AC00988B434B643898420FDCFA239B00984287 +:1019BC0000DA180080B2FEF7F7FCDCE73B4B58333B +:1019CC00988B3B4B64309842EFDD1800EDE780229A +:1019DC003849D2034869030413404022824313431D +:1019EC008B61C8E7314C002300220C21E06E02F021 +:1019FC005DFA002300220E21E06E02F057FABAE7DE +:101A0C002D48FFF79FFDB6E702230193274B0721D3 +:101A1C00D86E01AA042302F049FAACE7234B00224A +:101A2C001F21D86E002302F041FAA4E72348FFF7E8 +:101A3C0089FDA0E722492348303101F0D1FF224A29 +:101A4C00224993680B4004210B43936093E7802554 +:101A5C00144CAD0063692B421BD100211C4801F0D2 +:101A6C00BFFF00235022114C1A49A3521A4A0020DE +:101A7C005161220058329383642100F099FD01AD2D +:101A8C002830287001232A002121E06E02F00EFA82 +:101A9C0071E7124801F0A4FFA562DEE7F44C0008E0 +:101AAC004C560008000400501C5600088C00002006 +:101ABC00D82700000008005034560008D8550008FC +:101ACC00944F00083056000800240140E8FFFF7FC7 +:101ADC00B0510008FF0F00000074004008560008C9 +:101AEC00F0B54546DE4657464E46E0B583B08046D7 +:101AFC0002AF08000C0002F07BF905002000012D5C +:101B0C0045D002F079F98146032D58D0200002F01F +:101B1C007BF90600042D10D0280002F0C7F8330022 +:101B2C0001004A46384801F05BFFBD4601B0F0BCED +:101B3C00BB46B246A946A046F0BD200002F054F9BF +:101B4C000600200002F066F90500200002F05CF9A6 +:101B5C000300002E24D1022802D12A782F2A4ED03D +:101B6C001A0069460C32D208D2008A1AEB46954606 +:101B7C0002AA92465E1D31005046244A009502F09E +:101B8C00B9FB002801DD864231D8DD460EE002F0BB +:101B9C0037F9431C072042461840E623D054C4E7CB +:101BAC0040462A001721006802F080F9200002F05C +:101BBC001BF9494602004046FFF74EFCB5E7010011 +:101BCC00134801F00DFF200002F00EF90400020092 +:101BDC0049464046FFF740FC4346210018684B1E1F +:101BEC00994100220023153102F060F99DE7094B61 +:101BFC0082B25146186FFFF745F8DD46D6E7687894 +:101C0C00FFF7AAFED2E7C04690560008845600089B +:101C1C00645600088C00002070B5E725435D040075 +:101C2C00002B0ED10A2905D0C9B2FFF7C3FB03283C +:101C3C0018D070BD01220339FFF70EFC0123635548 +:101C4C00F7E7C9B2FFF7B6FB0028F2D0DC23E55862 +:101C5C00280002F0E1F8002813D029002000FFF73B +:101C6C003FFFE6E7DC23E558280002F0D5F8002812 +:101C7C000DD029002000FFF733FFE7230122E254A7 +:101C8C00D7E706490648403101F0AAFED1E70349DF +:101C9C000348403101F0A4FEEFE7C046944F000822 +:101CAC00C0560008112110B50E4A0F48136A8B4319 +:101CBC00136280220D4B92009A62DA3AFF3A9A61D3 +:101CCC000B490C4B54315A6801F08AFE0A4C012323 +:101CDC0021000A480831237201F082FE237A002B7E +:101CEC00FCD110BD002C0140D0560008000400505F +:101CFC00944F000800ED00E00C010020E0560008B5 +:101D0C00024AD3680133D3607047C0460C010020EF +:101D1C0010B5EFF3058203490348683101F060FE0A +:101D2C0010BDC046944F000888510008012210B520 +:101D3C00144B19690A421DD0062019689143196089 +:101D4C00D9688143D96019690130814319614021F7 +:101D5C000D4B99620D4B1A399A6101329A6102321C +:101D6C009A611C329A610A4B00229869002302F096 +:101D7C009DF810BD07491A697431074801F030FE0F +:101D8C00F7E7C046002C014000080050000400504A +:101D9C008C000020944F000818570008022210B540 +:101DAC00254BD9680A4202D019690A423AD1234913 +:101DBC000422214BD868024202D0186902420CD18D +:101DCC005223CA5A1C4B1B6B01339A4212D01A4B2A +:101DDC001B491A690A4218D110BD18699043186141 +:101DEC005223CA5A013292B2CA52134B1B6B0133A3 +:101DFC009A42ECD1002300228869252102F056F882 +:101E0C000D4B0F491A690A42E6D01B690D4819405F +:101E1C0001F0E6FDEFF305820B490C48683101F047 +:101E2C00DFFDD9E7196991435222196103498B5A95 +:101E3C0001338B52BCE7C046002C01408C000020C3 +:101E4C00E0FF0C0018570008944F00088851000858 +:101E5C00F8B580230222DB0519690A420FD1012152 +:101E6C001A69114203D01A698A431A61F8BDEFF35B +:101E7C00058228492848683101F0B2FDF6E7196956 +:101E8C00264C914319612668676872B6BFF34F8F71 +:101E9C00BFF36F8F4825635DFF2B33D048215A1C4D +:101EAC00D2B2625480211E4DC9052869496A296144 +:101EBC00884202D9696901316961002A17D0482228 +:101ECC00A354002B04D1BFF34F8FBFF36F8F62B6B7 +:101EDC006B692A69990792080A439B083800B04736 +:101EEC008022D205536BA1685B185363BEE7A62111 +:101EFC000C4A0D48890001F083FD4823E35C013B4B +:101F0C00DBB2DCE7094A0A49074801F079FD635D59 +:101F1C00C4E7C046944F0008885100088C0000208C +:101F2C000C01002054530008005200081053000804 +:101F3C009102000070B548250B4C635D002B0BD053 +:101F4C004822013BDBB2A354002B04D1BFF34F8FCB +:101F5C00BFF36F8F62B670BDA621044A0448890096 +:101F6C0001F04EFD635DEBE78C000020545300083C +:101F7C000052000870B572B6BFF34F8FBFF36F8F6E +:101F8C004825074C635DFF2B03D048220133A35433 +:101F9C0070BD044A0449054801F032FD635DF4E765 +:101FAC008C00002010530008910200000052000821 +:101FBC00102210B50E4BD9680A4211D119690A4288 +:101FCC0007D1EFF305820B490B48683101F008FD8E +:101FDC0010BD0A4800211A610C3001F02DFDF7E705 +:101FEC0006480121DA600C3001F026FDF0E7C0460E +:101FFC0000180240944F0008885100088C00002003 +:10200C0010B5EFF3058203490348683101F0E8FC91 +:10201C0010BDC046944F000888510008102210B51E +:10202C001C4B19680A421AD1012219680A4211D1B3 +:10203C00802219689201114222D1042219680A42A5 +:10204C0023D1082219680A420ED01A60124801F0F6 +:10205C00C7FC03E011481A6001F0C2FC10BD1A6005 +:10206C000F4801F0BDFCF9E719680E4801F0B8FC07 +:10207C00EFF305820C490D48683101F0B1FCEDE736 +:10208C001A600B4801F0ACFCE8E71A60094801F053 +:10209C00A7FCE3E700240140685700083457000808 +:1020AC002457000874570008944F00088851000802 +:1020BC00405700085C570008022310B5134C2268E7 +:1020CC00134218D108232268134208D11049226800 +:1020DC001048143101F084FC0423636010BD0C49DA +:1020EC00636014310C4801F07BFC01210B4A13682E +:1020FC000B431360F2E76360094B14211A009869D3 +:10210C004A32062301F0D2FEE8E7C0460000024046 +:10211C00145000089057000884570008080002402B +:10212C008C00002010B50D4BDA69920610D4DB69D7 +:10213C001B0605D50A4B0B49986B5B6B984710BD7A +:10214C00EFF3058208490948683101F049FCF6E7CC +:10215C000348596A1C3001F06FFCF0E70044004062 +:10216C008C00002028440040944F0008885100083F +:10217C0070B572B6BFF34F8FBFF36F8F48241B4DF2 +:10218C002B5DFF2B2BD048215A1CD2B26A548021D4 +:10219C00174CC9052069496A2161884202D96169D5 +:1021AC0001316161002A0FD04822AB54002B04D1BD +:1021BC00BFF34F8FBFF36F8F62B6616920698B07D6 +:1021CC0080081843890870BDA6210A4A0A4889006C +:1021DC0001F016FC4823EB5C013BDBB2E4E7074A59 +:1021EC000749054801F00CFC2B5DCCE78C00002066 +:1021FC000C01002054530008005200081053000832 +:10220C00910200007047C04610B50B00EFF310842C +:10221C00012181F310881900FEF78CFA84F31088E1 +:10222C0010BDC04610B582B0EFF31084012181F3CC +:10223C0010886B460122D91D0020FEF77BFA84F32F +:10224C001088012803D16B46D87902B010BD01204B +:10225C004042FAE710B5FEF717FA10BDF0B5DE46AE +:10226C004E4657464546E0B59BB00AAB0593402316 +:10227C00069300230793089301330C0091469B4669 +:10228C000290099005E005A8FEF742FB089800288B +:10229C0059DB2178013400295CD02529F3D12200A7 +:1022AC001378002602250820140021392D2B0CD080 +:1022BC002D2B0ED8232B11D02B2B00D05FE10E43EE +:1022CC000132137814002D2BF2D15B4601321E43E0 +:1022DC00F7E7302B05D12E430132F2E706430132EA +:1022EC00EFE71A00303A0025092A0DD81A00AB0086 +:1022FC005B1901345B009B182278303B1D001300E6 +:10230C00303B092BF3D913002E2B00D1D8E000273A +:10231C002378042101E0637801341A008A43682A87 +:10232C00F9D0252B07D0583BDBB2202B07D8954A88 +:10233C009B00D3589F46252105A8FEF7E9FA08987B +:10234C0001340028A5DA1BB0F0BCBB46B246A94646 +:10235C00A046F0BD08980028F5DD079C002C00D0A5 +:10236C00C6E00019EFE74B4649461B6805A81A1D45 +:10237C000A60196810223B0001960095FEF700FBDD +:10238C0001340898DDE74B4649461B6805A81A1D21 +:10239C000A6019680A223B0001960095FEF7F0FAD4 +:1023AC0001340898CDE74B4649461B681A1D0A6054 +:1023BC001D6805E005A8FEF7ABFA08980028BFDBFE +:1023CC00297801350029F5D10898B9E74B464946DB +:1023DC001B6805A81A1D0A601968002301930833AD +:1023EC0010220093FEF7CCFA01340898A9E74B466B +:1023FC0049461B681A1D0A601B68DA179818039364 +:10240C00012350409A4609280DDDAA46A0461D001E +:10241C000A210400013500F081F9632CF8DC2B0053 +:10242C00444655469A46B846574575D3002D36D086 +:10243C00039B002B74DB730772D4B30701D5002FF9 +:10244C002DD05B4633422AD1002D28D04346A046DE +:10245C001C00AC4220D205A82021FEF759FA08989E +:10246C00013D002800DA87E0002DF2D1230044461C +:10247C009846039B002B58DB730761D4032333402E +:10248C00022B62D005A83B000A2203990196009505 +:10249C00FEF776FA089853E72300444698460898C6 +:1024AC000028E6DA01344CE74B4649461B6805A880 +:1024BC001A1D0A601978FEF72BFA0134089840E7C8 +:1024CC006378621C1900303914000027092900D9DF +:1024DC001FE71A00BB00DB1901345B009B18227844 +:1024EC00303B1F001300303B092BF3D9130010E7CE +:1024FC00254B1B78002B15D0EFF31085012181F3B0 +:10250C001088220002980AA9FEF788F985F3108832 +:10251C000898079C001916E7D046002DBFD087E716 +:10252C00013D8AE7FEF7B0F8E6E75B422D2105A8EE +:10253C000393FEF7EDF9089800289FDA013400E7C1 +:10254C002B2105A8FEF7E4F9F5E7002F9AD10AE054 +:10255C00A8450CD205A83021FEF7DAF90898013D00 +:10256C00002800DAECE6002DF2D100258AE7089865 +:10257C00002887DA0134E4E644460134E1E600251C +:10258C00C5E6C046104E0008242100200023C25C82 +:10259C000133002AFBD1581E7047000003B471466A +:1025AC00490840004900095E49008E4403BC70474D +:1025BC00002243088B4274D303098B425FD3030A76 +:1025CC008B4244D3030B8B4228D3030C8B420DD389 +:1025DC00FF22090212BA030C8B4202D31212090217 +:1025EC0065D0030B8B4219D300E0090AC30B8B4255 +:1025FC0001D3CB03C01A5241830B8B4201D38B0303 +:10260C00C01A5241430B8B4201D34B03C01A5241A7 +:10261C00030B8B4201D30B03C01A5241C30A8B42EA +:10262C0001D3CB02C01A5241830A8B4201D38B02D5 +:10263C00C01A5241430A8B4201D34B02C01A524179 +:10264C00030A8B4201D30B02C01A5241CDD2C309EB +:10265C008B4201D3CB01C01A524183098B4201D367 +:10266C008B01C01A524143098B4201D34B01C01A52 +:10267C00524103098B4201D30B01C01A5241C308CA +:10268C008B4201D3CB00C01A524183088B4201D339 +:10269C008B00C01A524143088B4201D34B00C01A25 +:1026AC005241411A00D20146524110467047FFE791 +:1026BC0001B5002000F006F802BDC0460029F7D095 +:1026CC0076E770477047C04610B5002903D100F07B +:1026DC0007F8203002E0080000F002F810BDC046F8 +:1026EC001C2101231B04984201D3000C10391B0A36 +:1026FC00984201D3000A08391B09984201D30009FA +:10270C00043902A2105C40187047C0460403020250 +:10271C0001010101000000000000000003460B4312 +:10272C007FD4002243088B4274D303098B425FD3BE +:10273C00030A8B4244D3030B8B4228D3030C8B42EA +:10274C000DD3FF22090212BA030C8B4202D31212D0 +:10275C00090265D0030B8B4219D300E0090AC30BA5 +:10276C008B4201D3CB03C01A5241830B8B4201D352 +:10277C008B03C01A5241430B8B4201D34B03C01A3B +:10278C005241030B8B4201D30B03C01A5241C30AB3 +:10279C008B4201D3CB02C01A5241830A8B4201D324 +:1027AC008B02C01A5241430A8B4201D34B02C01A0E +:1027BC005241030A8B4201D30B02C01A5241CDD2B3 +:1027CC00C3098B4201D3CB01C01A524183098B42FE +:1027DC0001D38B01C01A524143098B4201D34B01E7 +:1027EC00C01A524103098B4201D30B01C01A52414A +:1027FC00C3088B4201D3CB00C01A524183088B42D1 +:10280C0001D38B00C01A524143088B4201D34B00B9 +:10281C00C01A5241411A00D201465241104670472B +:10282C005DE0CA0F00D04942031000D34042534030 +:10283C0000229C4603098B422DD3030A8B4212D3F0 +:10284C00FC22890112BA030A8B420CD38901921122 +:10285C008B4208D3890192118B4204D389013AD05F +:10286C00921100E08909C3098B4201D3CB01C01A34 +:10287C00524183098B4201D38B01C01A5241430947 +:10288C008B4201D34B01C01A524103098B4201D335 +:10289C000B01C01A5241C3088B4201D3CB00C01AA2 +:1028AC00524183088B4201D38B00C01A5241D9D2BA +:1028BC0043088B4201D34B00C01A5241411A00D23B +:1028CC000146634652415B10104601D34042002B37 +:1028DC0000D54942704763465B1000D3404201B5B6 +:1028EC000020FFF7EFFE02BD0029F8D016E7704775 +:1028FC00002B11D1002A0FD1002900D1002802D0C1 +:10290C000021C943080007B4024802A140180290F4 +:10291C0003BDC046B1FDFFFF03B4684601B5029884 +:10292C0000F006F8019B9E4602B00CBC7047C046F6 +:10293C00F0B557464E464546DE46E0B504000D0060 +:10294C009246994683B08B4230D82DD0494650469A +:10295C00FFF7BAFE290006002000FFF7B5FE331A78 +:10296C009846203B9B4633D45A46534693404246A6 +:10297C001F00534693401E00AF423AD8AF4200D1DD +:10298C0078E05B46A41BBD41002B00DA75E0002209 +:10299C0000230092019301235A4693400193012393 +:1029AC0042469340009328E08242CFD90022002374 +:1029BC00009201930C9B002B01D01C605D60009871 +:1029CC00019903B0F0BCBB46B246A946A046F0BD87 +:1029DC00424620239B1A5246DA40414613004A468F +:1029EC008A40170042461F43534693401E00AF4295 +:1029FC00C4D900220023009201934346002BD9D066 +:102A0C00FB0772081A4346467B080EE0AB4201D125 +:102A1C00A2420CD8A41A9D41012024196D41002119 +:102A2C00013E24184D41002E06D0AB42EED9013E9A +:102A3C0024196D41002EF8D1009801995B460019BC +:102A4C006941002B24DB2B005A464446D3402A0014 +:102A5C00E2401C005B461500002B2ADB26009E4042 +:102A6C00330026004746BE403200801A9941009040 +:102A7C0001919FE7A342BCD883E742462023002163 +:102A8C009B1A0022009101920122DA40019286E702 +:102A9C00424620239B1A2A0046469A402300F340C4 +:102AAC00444613432A00E2401C005B461500002BF1 +:102ABC00D4DA42462F002023260097409B1ADE4092 +:102ACC003B003343CDE7C0460D488546FFF79AFBE4 +:102ADC000C480D490D4A002302E0D458C45004336D +:102AEC00C4188C42F9D30A4A0A4C002301E0136043 +:102AFC000432A242FBD301F0B1FA00F00FF8FEE76A +:102B0C0000900020000000206C000020A459000858 +:102B1C007000002004220020FEE70000F0B5DE4625 +:102B2C0057464E464546E0B5B7B000F04BFF9148CE +:102B3C0000F056FF0722904B00215A63A0240D325F +:102B4C0013A801F0DAFA0223E405169320000E33E1 +:102B5C0012A91293FDF7EEFA129A236913409A42C6 +:102B6C0006D1864B1B6883F30888854B1B689847F6 +:102B7C000323A0269A4613930023F60598463000AB +:102B8C00169312A943331293FDF7D4FA2023300085 +:102B9C0012A912938025FDF7CDFA43460127794CF3 +:102BAC001593AD000233200013971493129512A9BC +:102BBC00A5629946FDF7BEFA40237348129312A9F9 +:102BCC008361FDF7B7FA272320001597129312A9FA +:102BDC00A361FDF7AFFA4B46139317934346C024FA +:102BEC0015935346A400149312943000B46212A9A6 +:102BFC00FDF7A0FA0C23300012A917971293FDF7DA +:102C0C0099FA80215C4B09065A6D012092009208BA +:102C1C000A435A655D4ADA635D4A1A649A6B174334 +:102C2C009F635C4B1A6814431C605B4CFDF708FBFC +:102C3C0023685A4A5A4F13401D4325603B68594933 +:102C4C005800C0184000FFF7B3FC80226369D20023 +:102C5C000130134202D105E0002803D0636901382A +:102C6C001342F9D180214C4A490013680B4313607D +:102C7C0013680B42FCD002213F4A4B4BD365D36DFA +:102C8C001942FCD0382391680B40D168102B01D12C +:102C9C0000F031FC002B01D000F031FC13684349EB +:102CAC00536819408023DB010B4353601368404980 +:102CBC000B40136013683F4A9B045B0FDA403A6089 +:102CCC007868FDF7BDFA3C4A002832D138202A49F1 +:102CDC008B680340102B01D100F0B4FD0B68374812 +:102CEC00034080200B60D468800403E0D3681B1B76 +:102CFC00022B1ED80B680342F8D1CB683048184021 +:102D0C00304B0343CB60802308685B0403430B60A8 +:102D1C008023C8685B050343CB608021D4681648C8 +:102D2C00890403E0D3681B1B022B02D803680B42F7 +:102D3C00F8D0062317490868184201D100F09CFC12 +:102D4C00E0230D49DB01886803438B608B681E48C8 +:102D5C0003408B600B689B0101D400F09FFC0720A3 +:102D6C008B681A4C83431800022303438B60382072 +:102D7C00D56833E0A0570008001002400000FF1F88 +:102D8C000400FF1F00040050000800500300023034 +:102D9C00010812000020024000700040FFF9FFFF04 +:102DAC000000002040420F0009800000FF80FFFF60 +:102DBC00FFC7FFFF0024F4000C010020FFFFFFFE03 +:102DCC008C80C11132301646FFF0FFFF88130000D3 +:102DDC00D3685B1BA34201D900F060FC8B680340F5 +:102DEC00102BF5D10720EF490B680340022B01D9BA +:102DFC0000F0D0FCEC4BED499A680A409A603822FE +:102E0C009968114201D000F0AEFC1B68E8489B04A5 +:102E1C005B0FD840E74AE44B91461F229B681B0589 +:102E2C001B0F9B004B441B6B1340D84038607868D9 +:102E3C00FDF706FAE04AE1491368E1480B401360DC +:102E4C00E04B3A6819680905090D00F0C9FD8420AA +:102E5C001022DD4B1958914319500438195811435D +:102E6C00195019681143196059680A435A60D74BB5 +:102E7C001A68D20307D41A68D5490A401A60DA6B6B +:102E8C00D4490A40DA638023D04A5B0211680125D9 +:102E9C000B4313603F22D04909200B6893431A005F +:102EAC00052313430B60CD4BCD491A681140CD4A15 +:102EBC000A43CD491A6099600321CC4A93464A32A1 +:102ECC00DA605A68120C12040A435A60C84A5560F8 +:102EDC00022219680A431A60082219680A431A6008 +:102EEC001A6829002A431A60FDF706F9C14B9A6843 +:102EFC002A4207D1DA68C0490A40DA601A6992009E +:102F0C0092081A618021BB4B8903DA680A43DA60A4 +:102F1C008022920119681142FCD007211A605A696B +:102F2C008A43110002220A4370215A615A698A436A +:102F3C00110050220A430F215A619A6A8A439A62FD +:102F4C005A699E490A405A619A6AF231FF318A43A2 +:102F5C00110010220A4380219A625A6989000A439F +:102F6C005A619A6AA5491140C022D2000A438021B5 +:102F7C009A625A69C9010A435A619A68A049114078 +:102F8C00802252050A439A609E493868FFF710FB6D +:102F9C00142343430893089B002B05D0089B013B4B +:102FAC000893089B002BF9D1924B97499A681140D2 +:102FBC00802212060A439A609A68002AFCDB80225F +:102FCC0012011A6020230893089B002B05D0089B44 +:102FDC00013B0893089B002BF9D18023854D9B0561 +:102FEC002A69032113432B6111230C206B60FDF71D +:102FFC0083F80121EB68EB68AB680B4200D151E31D +:10300C00824800F0EDFC01257A4B81491A6912A81F +:10301C00AA431A611A69D0260A401A619A687A4939 +:10302C0076000A402A439A6049235A4616A9D55479 +:10303C00642200F021FFD620400001F033F8C822B2 +:10304C00010052001031040000F016FFDC20714B1F +:10305C004000A3512F9401F025F8C82201008046AE +:10306C001031520000F008FF434600223093002339 +:10307C00282132923393882308AA52184946D554F2 +:10308C00654B70311800984600F0AAFC386863490B +:10309C00FFF78EFA8023624ADB05013898625A6387 +:1030AC001022022158469A611A6A5E4C2A431A620F +:1030BC00DA680A43DA605C4A02605A4612A8506029 +:1030CC00FA225846120182600322586902435A615F +:1030DC000F201D60FDF710F8309B544A38689A5148 +:1030EC00D222520091464946514A0C325A50DA22A9 +:1030FC00603152009952002292465146B732FF324B +:10310C0099545A463F499361FFF752FA484901389E +:10311C00A062A26A4C31474800F062FC464B514613 +:10312C00A36111230D2023626560FCF7E5FF514676 +:10313C000E20FCF7E1FF8423236088231B02E5604B +:10314C00E820636400F0AEFFC8220400011D029069 +:10315C00CC3000F07DFCE1239A4651461E3363547B +:10316C00309B220001934B46D4242F9D019964007F +:10317C00E9502F492A516831404600F031FC2F4B61 +:10318C00AB5100F03BFF01002800FDF7F5FD534665 +:10319C002C59E35C7F2B00D895E2294B0693294BE5 +:1031AC00079351E00020024000100240FF8FFFFF08 +:1031BC000024F4001450000800700040FFFEFFFFD4 +:1031CC00B457000800580140001802400074004039 +:1031DC00FFFF03FFFFFFF8FF00080240080002405A +:1031EC000F80FFFFA0250000402401408C00002030 +:1031FC000000024000240140C73FFFFFFFF0FFFF2B +:10320C00E8FFFF6F40420F00E8FFFF7FD457000834 +:10321C00FFFFFFDFD10A00083056000800093D000F +:10322C00801A0600002C014075030008B10A000842 +:10323C0094500008F057000868680000850D0008DD +:10324C00FC57000800530008256000F02DFDE22318 +:10325C00E05280231B019C46604400F023FFDC23DA +:10326C00E022E0500023A3540632A352B94ABA4BD1 +:10327C00516D0B4353658B23B849CB600A68B84B2F +:10328C0013430B60492399465B464A469B5C012BD2 +:10329C0000D921E202211C20FCF72EFF4A465B4696 +:1032AC00484659469B5C5A1C0A54E1225BB2914633 +:1032BC00A354002B00DA15E209AB22001800A9492F +:1032CC009A4600F0B3FB0CAB22001800A6490493FD +:1032DC0000F0ACFB0FAB18002200A449019300F0E6 +:1032EC00A5FB4B46E356012B00D165E2E123E256E8 +:1032FC009F4B1E0003939F4B5836310018009A4683 +:10330C00059300F06DFBE1229146A256012A00D1F3 +:10331C007EE23100504600F063FB4A46A256012A79 +:10332C0000D175E23100504600F05AFBD42392498B +:10333C005B0040467831ED58002400F051FBE72348 +:10334C00EC545B4612AADA66029A309E1A67DA23AC +:10335C005B00F35CA3422BD01022884B924699461B +:10336C00D2235B009846864B9A444346F35825017A +:10337C009C4665444846296800F032FB28896B68F6 +:10338C0000280ED0002204E0013292B202339042A7 +:10339C0007D019785D780D42F6D05146794800F087 +:1033AC001FFBDA235B000134F35CE4B2A342DCD8EC +:1033BC00B623D222FF33F35C5200B2581B01D31850 +:1033CC00B822D4213400FF32B25C4900A9347350C6 +:1033DC00FF349989A27100222181A280DB7A934269 +:1033EC0000D188E10023684AE371A372A133FF3353 +:1033FC00F25000F003FE80250100644C3000FEF713 +:10340C00A9F90A213000FCF761FF6369AD002B427A +:10341C0003D15F4800F0E4FAA56112AA5D49019856 +:10342C0000F004FB5B460C3316C816C303210720BF +:10343C00FCF762FE584800F0D3FA039957487831EC +:10344C0000F0CEFA564B88249A46564B564D994668 +:10345C00282208AB9B181B5D002B00D1ACE0309BE5 +:10346C0029001A001800019300F082FD0028EFD10A +:10347C002F9B51461A001800019300F079FD00288B +:10348C00E6D112AA4946100000F072FD061EDFD1EB +:10349C000121049800F0BEFA002800D04CE172B66D +:1034AC00BFF34F8FBFF36F8F48235A46D35CFF2B6C +:1034BC0000D1B3E148225B4659469B5C30980133FE +:1034CC008B5400F0EFFC002800D01AE148235A4638 +:1034DC00D35C002B00D13FE148225B4659469B5CF4 +:1034EC00013BDBB28B54002BB2D1BFF34F8FBFF338 +:1034FC006F8F62B6ACE70D3B1940022920D01549FD +:10350C002A4A0B68802013400B6080230A685B00FA +:10351C001343274A0B60D468C00005E0D3681B1B1B +:10352C00022B01D9FFF705FC0B680342F6D04B6860 +:10353C00204818408023DB0103434B60FFF7C6FB98 +:10354C0013681C49536819408023DB010B435360FB +:10355C00FFF7B6FB0010024008000C0000440040CE +:10356C0001000020251C0008A9020008C102000867 +:10357C00944E000838530008945000084458000832 +:10358C00145100085458000861170008000400503A +:10359C001C5600085D0300086C5800088058000891 +:1035AC00150B000895150008690B0008FFC7FFFFF5 +:1035BC000C010020FF80FFFFD0252F9C6D00665969 +:1035CC0000F02AFD01002000B047DC4BDC486351C1 +:1035DC0000F006FAD4235B00E458C73BE256012AFC +:1035EC0004D003990598583100F0FAF9DC23E0581F +:1035FC0000F062FDE123FF228026D24DE2546B697C +:10360C00B600309C334203D0CF4800F0E9F9AE62EB +:10361C00D0256D00665900F0FFFC01002000B0477A +:10362C00CA4B029A6351E123D35C7F2B05D822212C +:10363C00069A0798FF3100F0E3F9029800F03CFD80 +:10364C00309800F039FD2F9800F036FD72B6C04866 +:10365C0000F0C6F900F0E8F91121BE4A136A8B4359 +:10366C0013628022B74B92009A62DA3AFF3A9A615F +:10367C00B94B19329A62FEE7072002230C68844387 +:10368C0023430B60D568B54C0B680340022B01D16A +:10369C00FFF756FBD3685B1BA342F5D9B04B994699 +:1036AC00FFF7C8FBEB68AF4AEB681A40AE4B13430D +:1036BC00EB60EB689B0200D4A5E4F023AA6A1B0222 +:1036CC001343AB629FE4A94BA94AF8211800069258 +:1036DC00079300F095F9B7E5A64800F081F9E123CE +:1036EC00FF22E2540CAB04930FAB0193A24B039358 +:1036FC00A24B05931AE64821A14AA24800F080F992 +:10370C0070E62F9800F0CEFB002800D1DEE612A860 +:10371C0000F0C8FB002800D1D8E680229A4E920017 +:10372C0073699046134200D0E2E00421974A136972 +:10373C008B43136130BFC9E65822049B19781300E0 +:10374C0001915B44987F984600286DD12F297CD13C +:10375C00012342469377A2E6A6218D4A8D48890023 +:10376C0000F04EF9B8E699681140082900D1D4E070 +:10377C0099681140102900D182E0996811402029E4 +:10378C0000D1CDE09B681A40182A00D1CCE0002073 +:10379C00FFF740FB02230C68844323430B60D5687E +:1037AC006E4C0B680340022B01D1FFF723FBD3684F +:1037BC005B1BA342F5D971E75B4652461C3343CAE7 +:1037CC0043C35B46049A283343CA43C30423724958 +:1037DC000A6813430B604B46E356012B00D085E57A +:1037EC005B465A469C636D4B53635B46019A3C3374 +:1037FC0043CA43C3082368490A6813430B604B460A +:10380C00E2565D4B03935D4B0593012A00D06FE5A7 +:10381C002023614A11680B43136087E5604A6149B4 +:10382C005C4800F0EDF845E6019B0A2B3FD05E4862 +:10383C0000F0D6F80198FEF78FF85B46002258335B +:10384C009A772CE6CB68FFF774FA5946DB7FC918D8 +:10385C00885401980A280AD046460133DBB2F37724 +:10386C008854142B00D01AE64F4800F0B9F85E4685 +:10387C00583631004D4800F0B3F80023F3770EE6CC +:10388C00DA68D968D243D8684906490F4004013137 +:10389C00440E92074CD04648FEF78AFE6043454BD7 +:1038AC00D968490F0131FEF783FEFFF7B3FA43469F +:1038BC004046D97F4B1CDBB2C3772F205944885428 +:1038CC00142B08D1384800F08BF84146374800F0EB +:1038DC0087F84346DE7700225E4690465836F37FE3 +:1038EC003100F254314800F07BF84346F377A4E7FB +:1038FC0006203B6830495843FEF75AFE33682F4A7E +:10390C0001301340336003E0002800D1DEE50138BC +:10391C00424673691342F7D107E72948FFF77AFA51 +:10392C0080200002FFF776FAFA20C001FFF772FA46 +:10393C002348FEF73DFE6043B1E7C046D10A0008BC +:10394C00945800080004005008560008B10A0008FA +:10395C00A4580008002C01400008005088130000F7 +:10396C00145000083CC2FEFF031000000053000876 +:10397C00FC57000810580008944E000838530008F3 +:10398C0018550008305500080070004000ED00E0AC +:10399C00545300080052000800440040C10B0008BA +:1039AC001053000891020000A85800088458000821 +:1039BC000024F4000010024040420F00FFBFFFFF44 +:1039CC0000127A0010B5FEF745FC10BD00B583B0AF +:1039DC00019101AA01000020FEF740FC03B000BDDC +:1039EC000FB400B583B004AB02CB01AA0020009346 +:1039FC000193FEF733FC03B008BC04B01847C04673 +:103A0C00130010B50A0001000148FFF7E9FFFEE7BB +:103A1C00D45800080A0010B501000020FEF7F4FB92 +:103A2C00C343DB17184010BD7047C04600238360AA +:103A3C00426001607047C04610B503680400002B5B +:103A4C0004D040689847A3680133A36010BDC046FA +:103A5C0001604B1E99410023494211404160836033 +:103A6C00C360704703009B68C068C01A434258414A +:103A7C00C0B270470200C368581E9368C01A5368DE +:103A8C0000D5C0187047C04603008268C1685B68E7 +:103A9C00501A00D5C0187047F0B54646D6464F466A +:103AAC000500C0B5EB688068013B0E0014001B1AC2 +:103ABC001ED493421AD31700002F05D12000E0BC6E +:103ACC00BA46B146A846F0BDAB6828689C463A0099 +:103ADC006044310000F008FBAB689C466B6867449F +:103AEC00AF609F42EAD10023AB60E7E70020E6E736 +:103AFC006A6890464344A342F8D3031999462700B9 +:103B0C009A42D9D8131A9A462B6852469C4660445E +:103B1C0000F0EAFA00234246AB604B4656449F1A2B +:103B2C00CAE7C046F8B54746CE4680B5C668836836 +:103B3C00050088469C1B0BD4944207D82700002C08 +:103B4C0020D13800C0BCB946B046F8BD1400F5E72A +:103B5C00436899464C44944200D914003319270009 +:103B6C009945ECD84B469F1B2B683A009919404657 +:103B7C0000F0BAFA4B46F61AA419B84400263F19BD +:103B8C00002CDED0296822004046891900F0ACFADE +:103B9C00D7E7C046F0B54F464646D646C0B50F00EF +:103BAC008368C168060014005B1A1ED493421AD3B2 +:103BBC001500002D05D12000E0BCBA46B146A84640 +:103BCC00F0BDF36831689C462A006144380000F06F +:103BDC008BFAF3689C4673686544F5609D42EAD1A4 +:103BEC000023F360E7E70020E6E742689046434491 +:103BFC00A342F8D30B19994625009A42D9D8531AE7 +:103C0C009A46036852469C463800614400F06CFAB0 +:103C1C0000234246F3604B4657449D1AC9E7C04601 +:103C2C0070B501000400861D1D4D1E4823781B0233 +:103C3C005840082304E0013BDBB280B2002B09D0D2 +:103C4C0002B24000002AF6DA013B6840DBB280B2D7 +:103C5C00002BF5D10134A642E8D14B888A781D0A95 +:103C6C00120215431BD008314D190D4CADB20B7817 +:103C7C001B025840082304E0013BDBB280B2002B4E +:103C8C0009D002B24000002AF6DA013B6040DBB2F8 +:103C9C0080B2002BF5D101318BB2AB42E7D170BDB4 +:103CAC0021100000FFFF000008207047052804D8F1 +:103CBC0083001B180248C01870470248FCE7C04636 +:103CCC00F8580008F458000870B5040004A80078EF +:103CDC00490000010843012101430720184000233B +:103CEC00D200024363802371200000230725C9B250 +:103CFC0021706270661D082201304B4004E0013ACD +:103D0C00D2B2DBB2002A09D059B25B000029F6DA34 +:103D1C00013A6B40D2B2DBB2002AF5D1B04201D0ED +:103D2C000178E8E763712000FFF77AFF030AE0717E +:103D3C00A371200070BDC04670B5040004A840C833 +:103D4C004900058820001B010B43D2003100237071 +:103D5C00627008302A0000F0C7F92B0AA370002308 +:103D6C00E570200007252371661D02785340082258 +:103D7C0004E0013AD2B2DBB2002A09D059B25B009E +:103D8C000029F6DA013A6B40D2B2DBB2002AF5D147 +:103D9C000130B042E9D163712000FFF741FF030A03 +:103DAC00E071A371200070BD70B500230724467923 +:103DBC00451D02785340082204E0013AD2B2DBB22E +:103DCC00002A09D059B25B000029F6DA013A6340A7 +:103DDC00D2B2DBB2002AF5D10130A842E9D1F01AF7 +:103DEC0042425041C0B270BD00788006800F7047CF +:103DFC0000780007400F704740788006400F7047EE +:103E0C004378072018407047827843881202180ABA +:103E1C00104370470830704710B50400FFF700FFDF +:103E2C00E388A1791B0A09020B43181A424250413C +:103E3C00C0B210BDB0B500AF050000F0DDF86A46A9 +:103E4C00C31DDB08DB00D31A9D4602000400694643 +:103E5C002800FFF767FE80B2844203D00024BD46E1 +:103E6C002000B0BD684600F0F1F804002800FFF710 +:103E7C000BFE8442F2D8F2E770B505000C00160078 +:103E8C00002905D0320028002100FFF7E1FD70BDAC +:103E9C003D21024A0248FFF7B3FDF3E71859000829 +:103EAC002859000810B5FFF7DDFD10BDF8B5DE464A +:103EBC0057464E464546E0B500AF1E0080468A4642 +:103ECC00914600F099F86B46C41DE408E4001B1BF6 +:103EDC009D460500801983B23200514668469B46C8 +:103EEC0000F0A8F8FEF746F84046FFF7C3FD0024A3 +:103EFC0083450DD9FEF71EF85B46E01ABD464342DA +:103F0C005841C0B2F0BCBB46B246A946A046F8BD6B +:103F1C002A0069464046FFF7BFFD4B4684B2002B92 +:103F2C00E8D0320049464046FFF7B6FD2418A4B24B +:103F3C00E0E7C046F8B5060008000F0000F086F870 +:103F4C000500FEF717F83000FFF794FD00248542BA +:103F5C0006D9FDF7EFFF601B43425841C0B2F8BDD4 +:103F6C002A0039003000FFF797FD84B2F1E7C04614 +:103F7C00F8B54E464546DE465746E0B500AF06005E +:103F8C0089469046FFF756FF0025041E07D1BD4613 +:103F9C002800F0BCBB46B246A946A046F8BD6A460E +:103FAC00C31DDB08DB00D31AEA469D46FDF7E2FF92 +:103FBC00220069463000FFF7EDFD0600B6B2EB4675 +:103FCC00FDF7B8FF002E01D1D546E0E7684600F0BA +:103FDC003DF8844205D159464046C8470125D5468F +:103FEC00D5E72521024A0348FFF70AFDF3E7C0464F +:103FFC0040590008285900080C20704710B5FEF7EE +:10400C00B7F802000B0003480260436080235B0298 +:10401C00836010BDE021002010B5FEF7A9F8020066 +:10402C000B0003480260436080239B02836010BD39 +:10403C00D021002070B504000E001500FEF798F892 +:10404C006681206061602581200070BD00890C3084 +:10405C0080B27047807A70470C30704770B500267C +:10406C000C4D0D4C641BA410A64209D1002600F087 +:10407C000FFD0A4D0A4C641BA410A64205D170BD5D +:10408C00B300EB5898470136EEE7B300EB5898476E +:10409C000136F2E79C5900089C5900089C5900080D +:1040AC00A059000810B5034B0100186800F09AF8ED +:1040BC0010BDC0460800002010B5034B0100186865 +:1040CC0000F024F810BDC0460800002030B50024D4 +:1040DC000139A24201D1002005E0035D01340D5DE0 +:1040EC00AB42F6D0581B30BD002310B59A4200D11C +:1040FC0010BDCC5CC4540133F8E703008218934222 +:10410C0000D1704719700133F9E7000070B5050054 +:10411C00002910D00C1F2368002B00DAE4182800AB +:10412C0000F05CF91D4A1368002B05D16360146024 +:10413C00280000F05BF970BDA34208D92168601813 +:10414C008342F3D118685B6841182160EEE71A00CE +:10415C005B68002B01D0A342F9D911685018A0421A +:10416C000BD120680918501811608342E0D11868EF +:10417C005B68411811605360DAE7A04202D90C2346 +:10418C002B60D5E721686018834203D118685B68FF +:10419C004118216063605460CAE7C046F0210020DA +:1041AC0070B50F4E0D0031680400002902D100F0EB +:1041BC008FF830602900200000F08AF8431C0AD0E8 +:1041CC000323C51C9D43A84207D0291A200000F0E8 +:1041DC007FF8431C01D101256D42280070BDC046FB +:1041EC00F4210020F7B50322CB1C934308330600BF +:1041FC001F000C2B32D20C27B94231D8300000F002 +:10420C00EDF8324D2B681C00002C2ED139003000FB +:10421C00FFF7C6FF0400431C1ED12C682500002D9F +:10422C004AD123682900E3183000019300F050F8BC +:10423C00019B834243D123680337FF1A03239F4317 +:10424C0008370C2F00D20C2739003000FFF7A8FFDD +:10425C00431C34D02368DF19276013E0002BCBDA22 +:10426C000C23002533602800FEBD2268D11B20D40E +:10427C000B2917D9E2192760A34211D12A60636870 +:10428C00116053603000250000F0B0F807220B35A8 +:10429C00231D9543EA1A9D42E5D05B1BA350E2E730 +:1042AC005A60ECE76268A34201D12A60EAE75A60DF +:1042BC00E8E723006468A7E72C006D68AFE70C23E0 +:1042CC003000336000F092F8CDE7C046F0210020BA +:1042DC00002370B5064D040008002B6000F0CAFBEB +:1042EC00431C03D12B68002B00D0236070BDC0464B +:1042FC00F82100200CB430B5174B0C001D689DB094 +:10430C00002908DA8B2301202B6040421DB030BC01 +:10431C0008BC02B0184782236A469B009382002394 +:10432C0002900690994200D04B1E049307930123F0 +:10433C006A465B42D382280021AB209A02A90193E2 +:10434C0000F0BEF8431C01DA8B232B60002CDDD06F +:10435C000023029A1370D9E70800002003000A78A2 +:10436C0001311A700133002AF9D1704730B51400AD +:10437C0005001A009BB0002C05DA8B23036001208A +:10438C0040421BB030BD822368469B0083810023D2 +:10439C00009104919C4200D0631E0293059301236B +:1043AC0069465B42CB8128001E9B00F089F8431CB8 +:1043BC0001DA8B232B60002CE3D00023009A1370BE +:1043CC00DFE7000007B5009313000A000100024864 +:1043DC000068FFF7CBFF0EBD0800002010B50248A7 +:1043EC0000F0F0FA10BDC046FC21002010B50248C8 +:1043FC0000F0E9FA10BDC046FC210020F0B58E6833 +:10440C0085B007000C00039201939E423CD8902388 +:10441C008A89DB001A4234D00969236860695B1A07 +:10442C00029303234343DD0FED18019B02980133E4 +:10443C001B186D10AB4200D91D00530532D5290055 +:10444C003800FFF7CFFE061E09D10C233B6040233A +:10445C000120A28940421343A38105B0F0BD029A0A +:10446C002169FFF741FEA389144A1A4080231343A4 +:10447C00A381029B2661F61826606561019EED1AE8 +:10448C00A560019B9E4200D9019E320003992068D1 +:10449C0000F0A5FAA36800209B1BA36023689E195B +:1044AC002660DAE72A00380000F0ACFA061EE0D1EC +:1044BC0038002169FFF72AFEC7E7C0467FFBFFFFE4 +:1044CC00F0B5A1B003901D008B890F0016001B06E0 +:1044DC0011D50B69002B0ED14021FFF783FE3860FC +:1044EC003861002805D10C23039A0138136021B0E0 +:1044FC00F0BD40237B61002308AC636120336376FD +:10450C001033A376079535002B78002B01D0252B83 +:10451C0047D1AB1B0593B5420CD032003900039840 +:10452C00FFF76CFF431C00D1AEE06269059B94461B +:10453C00634463612B78002B00D1A5E0012200239A +:10454C005242626004A9543252186E1C2360E3601C +:10455C00A3601370A36505223178544800F034FA37 +:10456C00751C00281FD12268D30604D5532304A937 +:10457C005B1820211970130704D5532304A95B1869 +:10458C002B21197033782A2B16D0350000210A20E4 +:10459C00E3682A786E1C303A092A4ED9002911D1C9 +:1045AC0017E00135B0E7414B2268C01A0123834064 +:1045BC0013432E002360CEE7079B191D1B68079140 +:1045CC00002B01DB0B9304E05B42E36002231343FB +:1045DC0023602B782E2B0AD16B782A2B35D1079B95 +:1045EC0002351A1D1B680792002B2BDB0993304EEA +:1045FC0003223000297800F0E7F9002806D0402388 +:10460C00801B8340226801351343236029780622DE +:10461C0028486E1C217600F0D7F900283CD0264B98 +:10462C00002B25D10722079B0733934308330793AD +:10463C006369049A9B18636165E743433500012164 +:10464C009B18A6E701235B42D0E700230A201A003F +:10465C000135636029786E1C3039092903D9002B88 +:10466C00C5D00992C3E74243350001235218F1E744 +:10467C0007AB00933A002100104B039800E000BFF9 +:10468C000490049B0133D3D1BB890D985B0600D4F5 +:10469C002DE7012040422AE707AB00933A002100A6 +:1046AC00064B039800F07CF8EAE7C0466059000816 +:1046BC00665900086A590008000000000944000807 +:1046CC00F7B5150001938A680B690C0000909342B2 +:1046DC0000DA130022002B6043321278002A01D03A +:1046EC0001332B6023689B0602D52B6802332B60A9 +:1046FC002268062317001F401A4227D02300433399 +:10470C001B785A1E93412268920630D422000199DC +:10471C000098089E4332B047431C25D006232068DE +:10472C002A68E16800250340042B03D18D1AEB4362 +:10473C00DB171D40A3682269934201DD9B1AED181B +:10474C000027BD4220D1002010E00137E3682A6821 +:10475C009B1ABB42D2DD2200012301990098089ECE +:10476C001932B047431CF0D101204042FEBD30202D +:10477C00E1184331087021005A1C45310978A21800 +:10478C00433202331170C1E72200012301990098D2 +:10479C00089E1A32B047431CE6D00137D1E700001F +:1047AC00F0B58BB006920A00433207930590049241 +:1047BC000A7E0C00109B782A07D8622A09D8002A96 +:1047CC0000D1C1E0582A00D18CE02600423632706C +:1047DC0022E0100063381528F7D8FDF7DFFE16002D +:1047EC001F00F6FFF6FFF6FFF6FF1F00F6FFF6FFC1 +:1047FC00F6FFF6FFA80036009A00F6FFF6FFB900A8 +:10480C00F6FF3600F6FFF6FF9E0026001A684236C9 +:10481C00111D1960136833700123A7E0086819682B +:10482C000A1D05060BD50D681A60002D03DA2D2321 +:10483C00049A6D421370614B0A2703931BE00D68B9 +:10484C001A604106F1D52DB2EFE70D681968081D05 +:10485C0018602E0601D50D6803E06D06FBD50D68BA +:10486C00ADB2564B082703936F2A00D002372300B2 +:10487C00002243331A706368A360002B03DB04220D +:10488C00216891432160002D02D1049E002B0CD095 +:10489C00049E28003900FDF711FF039B013E5B5C71 +:1048AC0033702B0005009F42F3D9082F09D12368E0 +:1048BC00DB0706D563682269934202DC3023013E94 +:1048CC003370049B9B1B2361079B2100009305986D +:1048DC00069B09AAFFF7F4FE431C4CD10120404271 +:1048EC000BB0F0BD45310A70344A03921A68216846 +:1048FC0020CA1A60080616D5CB0702D52023194307 +:10490C0021601027002DB2D1202322689A43226007 +:10491C00ADE7202209680A43226022007821453243 +:10492C001170274AE1E74806E6D5ADB2E4E71A680C +:10493C000D68101D4969186013682E0601D51960A1 +:10494C0002E06D06FBD519800023049E2361BBE7B2 +:10495C001A68111D1960166800213000626800F099 +:10496C0033F8002801D0801B60606368236100234A +:10497C00049A1370A8E72369320006990598079DDD +:10498C00A847431CAAD023689B0715D4099BE06851 +:10499C009842A5DA1800A3E722000123069905988E +:1049AC00079E1932B047431C98D00135E368099A29 +:1049BC009B1AAB42F0DCE9E70025F7E771590008D8 +:1049CC008259000870477047C9B28218904201D1D1 +:1049DC000020704703788B42FBD00130F6E710B50E +:1049EC00884202D98B18984203D3002307E08B5CD2 +:1049FC008354013AFBD210BDCC5CC45401339A42AF +:104A0C00FAD1F8E7F7B507000E001400002905D11C +:104A1C001100FFF7E7FB05002800FEBD002A03D1BB +:104A2C00FFF774FB2500F7E700F01BF801908442B8 +:104A3C0003D835004308A342EED321003800FFF71A +:104A4C00D1FB051EE8D0019B22009C4200D91A0024 +:104A5C0031002800FFF748FB31003800FFF756FB08 +:104A6C00DAE70B1F1B68181F002B01DA0B58C01854 +:104A7C0070470000044A03001068002802D0C318D5 +:104A8C00136070470148FAE700220020082200203A +:104A9C00F8B5C046F8BC08BC9E467047F8B5C04691 +:084AAC00F8BC08BC9E467047EF +:104AB4000E160008B0150008B0150008B01500085F +:104AC400B01500082A160008B0150008BC15000827 +:104AD400B0150008B0150008B0150008B01500089E +:104AE400C8150008B0150008B0150008B015000876 +:104AF400B0150008B0150008B0150008B01500087E +:104B0400B0150008B0150008B0150008B01500086D +:104B1400BE150008B0150008BE1500087817000877 +:104B2400C0170008CE170008781700087817000887 +:104B34007817000878170008781700087817000815 +:104B44007817000878170008781700087817000805 +:104B540078170008781700087817000878170008F5 +:104B640078170008781700087817000878170008E5 +:104B740078170008781700087817000878170008D5 +:104B840078170008821700087817000878170008BB +:104B940078170008821700087817000878170008AB +:104BA40078170008781700087817000878170008A5 +:104BB400DC170008E61700084818000876180008F3 +:104BC4008A180008481800084818000848180008FF +:104BD4004818000848180008481800084818000831 +:104BE4004818000848180008481800084818000821 +:104BF4004818000848180008481800084818000811 +:104C04004818000848180008481800084818000800 +:104C140048180008481800084818000848180008F0 +:104C240048180008481800087218000848180008B6 +:104C34009818000848180008481800084818000880 +:104C440048180008481800085218000852180008AC +:104C540056180008D0180008EC180008FA180008C4 +:104C6400D0180008D0180008D0180008D018000880 +:104C7400D0180008D0180008D0180008D018000870 +:104C8400D0180008D0180008D0180008D018000860 +:104C9400D0180008D0180008D0180008D018000850 +:104CA400D0180008D0180008D0180008D018000840 +:104CB400D0180008D0180008D0180008E818000818 +:104CC400D01800083A190008D0180008DA180008AB +:104CD400D0180008D0180008D0180008D018000810 +:104CE400D0180008D0180008081900080C1900088A +:104CF4005A1A00088619000886190008861900083F +:104D04008619000886190008861900088619000803 +:104D140086190008861900087A1900087A1900080B +:104D24007A1900087A1900087A190008381A000854 +:104D34007A1900087A1900087A1900087A19000803 +:104D44007A1900087A1900087A1900087A190008F3 +:104D54007A1900087A1900087A1900087A190008E3 +:104D64007A1900087A1900087A1900087A190008D3 +:104D74007A1900087A1900087A1900087A190008C3 +:104D84007A1900087A1900087A1900087A190008B3 +:104D94007A1900087A1900087A1900087A190008A3 +:104DA4007A1900087A1900087A1900087A19000893 +:104DB4007A190008401A0008F01900087A19000846 +:104DC400A81900087A1900087A1900087A19000845 +:104DD4007A1900087A1900087A1900087A19000863 +:104DE400DA1900087A190008281A00087A19000844 +:104DF4007A190008141A00087A1900087A190008A8 +:104E04007A190008C81900080C1A0008722300084F +:104E14004A2300084A2300084A2300084A230008BA +:104E24004A2300084A2300084A2300084A230008AA +:104E34004A2300084A230008B4240008FA2300087F +:104E44004A2300084A2300084A2300084A2300088A +:104E54004A2300084A2300084A2300084A2300087A +:104E64004A2300084A2300084A230008D8230008DC +:104E74004A2300084A230008B22300084A230008F2 +:104E8400922300084A2300084A23000872230008DA +:104E94006173736572745F6661696C6564000000B8 +:104EA40072784572726F7243616C6C6261636B00FD +:104EB40074784572726F7243616C6C6261636B00EB +:104EC400303132333435363738394142434445463C +:104ED40073746174654E6F700000000073746174C4 +:104EE400654E6F70000000004253505F646F43686A +:104EF400616E6E656C416374696F6E007374617486 +:104F04006549646C650000005075736820746865B9 +:104F140020627574746F6E20746F20706C617920D8 +:104F24006F72207061757365203A2D290A000000A4 +:104F340068616E646C655265616452657175657310 +:104F44007400000068616E646C6557726974655220 +:104F5400657175657374000068616E646C65496E93 +:104F6400766F6B65526571756573740068616E6404 +:104F74006C655265717565737400000064697370C3 +:104F8400617463684576656E7400000073746174BF +:104F94006543616E6F707900737461746549646C04 +:104FA40065000000737461746550756C73696E6795 +:104FB400000000007374617465506175736564006A +:104FC4004253505F747269676765724144430000DD +:104FD40068616E646C65496E636F6D696E67467275 +:104FE400616D6500486172644661756C745F486107 +:104FF4006E646C657200000073707572696F75730E +:105004004952510054494D315F42524B5F55505FF4 +:105014005452475F434F4D5F49525148616E646C2F +:1050240065720000444D41315F4368616E6E656C8A +:10503400315F49525148616E646C65720000000032 +:10504400000000000000000000000000000000005C +:10505400000000000000000000000000000000004C +:105064000100000002000000030000000400000032 +:10507400060000000700000008000000090000000E +:105084004253505F726567697374657241707054FE +:10509400696D657248616E646C657200AC58000895 +:1050A4007851000802007D03C8000000B8580008C9 +:1050B40070510008040032052C010000C05800089B +:1050C4006851000804001405C8000000CC5800080A +:1050D4004451000812001E09280000004253505F8A +:1050E400726567697374657250756C736544656C39 +:1050F4006567617465000000436F6E74726F6C6C59 +:1051040065725F696E697400446174614C696E6BA9 +:105114005F77616974466F7253796E6300000000B3 +:105124005061747465726E4974657261746F725FF4 +:10513400636865636B5061747465726E000000008F +:105144000102020504020A040408080501080A0110 +:10515400050A020105020204040A080405080801FC +:10516400010A0A05010802040402080101020408F4 +:1051740002010804050A0A0525732825732C202535 +:1051840075290A002573282575290A005365747446 +:10519400696E6720696E74656E7369747920746FC3 +:1051A400202568687525250A00000000536574747D +:1051B400696E67205663617020746F2025687520BE +:1051C4006D560A0053657474696E672070756C734C +:1051D4006520776964746820746F20256868752079 +:1051E400C2B5730A0000000070742D3E70616365DF +:1051F4005F6D73203E3D2035000000007372632F05 +:105204006273705F73746D3332673037312E6300AD +:1052140070742D3E70756C73655F77696474685F34 +:105224006D6963726F7320213D20300070742D3ED0 +:105234006E725F6F665F70756C73657320213D20BD +:105244003000000028656C636F6E5B305D202620A3 +:10525400656C636F6E5B315D29203D3D203000003D +:105264005465726D696E616C000000005254540004 +:10527400534547474552000053657175656E636534 +:10528400725F257320756E6578706563746564203C +:105294006576656E743A2025750A0000436F6E7456 +:1052A400726F6C6C65725F257320756E65787065BE +:1052B40063746564206576656E743A2025750A000A +:1052C4007366203D3D204E554C4C00007372632F95 +:1052D400636F6E74726F6C6C65722E6300000000F5 +:1052E4007372632F73657175656E6365722E6300E7 +:1052F4006E6272203D3D2031000000007372632F06 +:10530400646174616C696E6B2E6300006273702E4D +:10531400637269746963616C5F73656374696F6EEA +:105324005F6C6576656C20213D2055434841525F92 +:105334004D4158002573282575293A20756E6B6EEA +:105344006F776E206465766963652069640A00007E +:105354006273702E637269746963616C5F736563F1 +:1053640074696F6E5F6C6576656C20213D2030003A +:10537400436F6E74726F6C6C65725F257320454E5B +:105384005452590A00000000436F6E74726F6C6CC3 +:1053940065725F257320455849540A005472616E42 +:1053A40073616374696F6E202568753A2072656154 +:1053B4006420617474726962757465202568750A65 +:1053C4000000000025733A20756E6B6E6F776E20B7 +:1053D4006174747269627574652069643D256875C9 +:1053E4000A0000005472616E73616374696F6E2009 +:1053F4002568753A207772697465206174747269DE +:1054040062757465202568750A000000706C617906 +:105414000000000070617573650000005472616ED5 +:1054240073616374696F6E202568753A20696E76BE +:105434006F6B65202568750A000000002573206ED7 +:105444006F7420696D706C656D656E746564207928 +:1054540065740A0025732C20756E6B6E6F776E2051 +:105464006F70636F64652030782530326868780A1D +:105474000000000073746F70000000004672616DDC +:1054840065207061796C6F616420746F6F2062694C +:10549400673A2025687520627974657300000000FE +:1054A40054696D6520253032753A253032753A25B8 +:1054B4003032750A000000005265636569766564E0 +:1054C400207369676E616C2025640A0025732825A2 +:1054D4006875293F0A000000497072696D3D2575A1 +:1054E400206D412C20566361703D2575206D562C2E +:1054F40020566261743D2575206D560A0000000037 +:10550400537769746368696E6720746F2027257305 +:10551400270A000070642D3E6E725F6F665F7374BD +:1055240065707320213D2030000000007372632FEA +:105534007061747465726E5F697465722E630000C5 +:1055440053657175656E6365725F257320454E54AE +:1055540052590A0053657175656E6365725F2573F0 +:1055640020455849540A00005374617274696E6787 +:1055740020272573270A00004C6173742070756C12 +:10558400736520646F6E650A0000000046696E69E9 +:105594007368656420272573270A00002573204556 +:1055A4004E5452590A000000257320455849540AA4 +:1055B40000000000526573756D696E6720272573BE +:1055C400270A000050617573696E672027257327C9 +:1055D4000A000000436F6D6D616E64733A202F3FC3 +:1055E400202F61202F62202F64202F6C202F6E200B +:1055F4002F71202F75202F76202F30202F312E2E23 +:105604002F390A005475726E696E67205663617093 +:10561400204F46460A0000005475726E696E67207A +:1056240056636170204F4E0A0000000025730A0083 +:105634004669726D776172652076302E33312D6242 +:105644006574610A00000000556E6B6E6F776E2002 +:10565400636F6D6D616E6420272F2563270A000038 +:10566400476F742053594E43206672616D652C2038 +:105674007365715F6E723D256868750A00000000ED +:1056840027252E2A73273F0A00000000476F742045 +:105694002573206672616D652C207365715F6E726F +:1056A4003D256868752C207061796C6F61645F7347 +:1056B400697A653D2568750A0000000025733A2063 +:1056C400626164206672616D650A000025732C2096 +:1056D400494353523D307825780A0000202054690C +:1056E400703A2068616C74204350552C20636861C3 +:1056F4006E67652067756172642040202570207490 +:105704006F20302C207468656E20737465702E0AC7 +:105714000000000050742053523D307825780A0070 +:10572400414443206F76657272756E0A0000000072 +:105734004144432072656164790A00004144432076 +:105744006368616E6E656C20636F6E666967207254 +:10575400656164790A00000041444320454F430ACF +:105764000000000041444320454F530A000000005C +:10577400414443312D3E4953523D307825780A0047 +:1057840025732C2054454946310A000025732C20EA +:105794004953523D307825780A000000496E6974F7 +:1057A40069616C6973696E672E2E2E0A0000000011 +:1057B40044657649643D307825782C205379737498 +:1057C400656D436F7265436C6F636B3D25750A00AD +:1057D4004C4C5F4144435F5245475F496E697420B6 +:1057E4006572726F723D25750A00000025733A20B8 +:1057F4005053433D25750A006D652D3E6368616E07 +:105804006E656C5F6664203C2030000043616E204E +:105814006F6E6C7920757365206F6E652073657289 +:1058240069616C20706F72742061742061207469E6 +:105834006D652C20666F72206E6F770A0000000081 +:10584400436865636B696E6720272573270A000028 +:1058540025733A2073686F727420696E20656C63D7 +:105864006F6E202568750A005374617274696E67DF +:10587400204E656F444B210A000000002573000090 +:10588400436F6E736F6C653A20272573270A0000F7 +:10589400456E64206F662073657373696F6E0A00CA +:1058A400427965210A0000004A61636B68616D6D8D +:1058B40065720000546F67676C65000043726F7314 +:1058C40073546F67676C6500436972636C650000AD +:1058D400415353455254494F4E204641494C454447 +:1058E40020282573203A202575292025730A0000D5 +:1058F400424144004E4F4E450041434B00004E414F +:105904004B000053594E430044415441004F5054FE +:105914005300000073746F7261676520213D204E4F +:10592400554C4C006D616F6C69622F7372632F6507 +:1059340076656E7471756575652E63006576656E42 +:10594400745F73697A65203D3D20414F4576656EED +:10595400745F73697A65286576742900232D302B6A +:105964002000686C4C00656667454647003031325C +:1059740033343536373839414243444546003031B3 +:105984003233343536373839616263646566000012 +:08599400A8CFFF7F0100000015 +:04599C00E50000081A +:0459A000BD0000083E +:1059A4000024F400040000000C00002000000000AB +:1059B40000000000000000000000000000000000E3 +:1059C40000000000000000000000000000000000D3 +:1059D40000000000000000000000000000000000C3 +:1059E40000000000000000000000000000000000B3 +:1059F40000000000000000000000000000000000A3 +:0C5A040000000000000000000000000096 +:0400000508002AD5F0 :00000001FF diff --git a/firmware/inc/app_event.h b/firmware/inc/app_event.h index 38d9d58..c20a036 100644 --- a/firmware/inc/app_event.h +++ b/firmware/inc/app_event.h @@ -22,8 +22,8 @@ enum { ET_APP_HEARTBEAT, ET_ADC_DATA_AVAILABLE, ET_DEBUG_SYNC, ET_DATAGRAM_SYNC, ET_INCOMING_PACKET, ET_CONTROLLER_CONNECTED, ET_CONTROLLER_DISCONNECTED, - ET_CONTROLLER_SENT_REQUEST, ET_CONTROLLER_SENT_CHOICE, - ET_SEQUENCER_READY, ET_PLAY_PAUSE, ET_NEXT_ROUTINE, + ET_PLAY, ET_PAUSE, ET_STOP, ET_UNKNOWN_COMMAND, ET_TOGGLE_PLAY_PAUSE, + ET_NEXT_ROUTINE, ET_SET_INTENSITY, ET_SET_PULSE_WIDTH, ET_BURST_REQUESTED, ET_BURST_REJECTED, ET_BURST_STARTED, ET_BURST_COMPLETED, ET_BURST_EXPIRED, }; diff --git a/firmware/inc/bsp_app.h b/firmware/inc/bsp_app.h index e73eb63..f8b8283 100644 --- a/firmware/inc/bsp_app.h +++ b/firmware/inc/bsp_app.h @@ -42,7 +42,6 @@ int BSP_closeSerialPort(int fd); // Pulse generation related functions. uint16_t BSP_setPrimaryVoltage_mV(uint16_t V_prim_mV); -uint16_t BSP_changePrimaryVoltage_mV(int16_t delta_mV); void BSP_primaryVoltageEnable(bool must_be_on); bool BSP_startPulseTrain(PulseTrain const *); diff --git a/firmware/inc/matter.h b/firmware/inc/matter.h index 529f7a6..6ec31cf 100644 --- a/firmware/inc/matter.h +++ b/firmware/inc/matter.h @@ -13,6 +13,8 @@ #ifndef INC_MATTER_H_ #define INC_MATTER_H_ +#include + typedef enum { OC_NONE, OC_STATUS_RESPONSE, OC_READ_REQUEST, OC_SUBSCRIBE_REQUEST, OC_SUBSCRIBE_RESPONSE, OC_REPORT_DATA, OC_WRITE_REQUEST, OC_WRITE_RESPONSE, OC_INVOKE_REQUEST, OC_INVOKE_RESPONSE, OC_TIMED_REQUEST @@ -27,4 +29,19 @@ typedef enum { EE_NULL, EE_STRUCT, EE_ARRAY, EE_LIST, EE_END_OF_CONTAINER } ElementEncoding; +#ifdef __cplusplus +extern "C" { +#endif + +uint16_t Matter_encodedIntegerLength(uint8_t nr_of_octets); +uint16_t Matter_encodeUnsignedInteger(uint8_t dst[], uint8_t const *src, uint8_t nr_of_octets); +uint16_t Matter_encodedStringLength(char const *str); +uint16_t Matter_encodeString(uint8_t dst[], char const *str); +uint16_t Matter_encodedStringArrayLength(char const *strings[], uint8_t nr_of_strings); +uint16_t Matter_encodeStringArray(uint8_t dst[], char const *strings[], uint8_t nr_of_strings); + +#ifdef __cplusplus +} +#endif + #endif diff --git a/firmware/inc/pattern_iter.h b/firmware/inc/pattern_iter.h index 5a7f515..e510f17 100644 --- a/firmware/inc/pattern_iter.h +++ b/firmware/inc/pattern_iter.h @@ -38,7 +38,7 @@ typedef struct { bool PatternIterator_checkPattern(uint8_t const pattern[][2], uint16_t nr_of_elcons); // Instance methods. -void PatternIterator_init(PatternIterator *, PatternDescr const *); +void PatternIterator_init(PatternIterator *, PatternDescr const *, uint8_t pulse_width); bool PatternIterator_done(PatternIterator *); bool PatternIterator_getNextPulseTrain(PatternIterator *, PulseTrain *); diff --git a/firmware/inc/sequencer.h b/firmware/inc/sequencer.h index 2f5b7c3..8bcedc0 100644 --- a/firmware/inc/sequencer.h +++ b/firmware/inc/sequencer.h @@ -15,11 +15,8 @@ #include -#define DEFAULT_PRIMARY_VOLTAGE_mV 1200 - typedef struct _Sequencer Sequencer; // Opaque type. - // Class method. Sequencer *Sequencer_new(void); diff --git a/firmware/src/bsp_stm32g071.c b/firmware/src/bsp_stm32g071.c index 914e132..65a16ac 100644 --- a/firmware/src/bsp_stm32g071.c +++ b/firmware/src/bsp_stm32g071.c @@ -824,15 +824,6 @@ uint16_t BSP_setPrimaryVoltage_mV(uint16_t V_prim_mV) } -uint16_t BSP_changePrimaryVoltage_mV(int16_t delta_mV) -{ - int32_t soll_mV = (int32_t)bsp.V_prim_mV + delta_mV; - if (soll_mV < VPRIM_MIN_mV) soll_mV = VPRIM_MIN_mV; - else if (soll_mV > VPRIM_MAX_mV) soll_mV = VPRIM_MAX_mV; - return BSP_setPrimaryVoltage_mV(soll_mV); -} - - bool BSP_startPulseTrain(PulseTrain const *pt) { M_ASSERT(pt->pace_ms >= 5); // Repetition rate <= 200 Hz. diff --git a/firmware/src/controller.c b/firmware/src/controller.c index 5adb774..234d780 100644 --- a/firmware/src/controller.c +++ b/firmware/src/controller.c @@ -1,5 +1,5 @@ /* - * controller.c + * controller.c -- the interface to the controlling client * * NOTICE (do not remove): * This file is part of project NeoDK (https://github.com/Onwrikbaar/NeoDK). @@ -12,7 +12,6 @@ #include #include -#include #include "bsp_dbg.h" #include "bsp_app.h" @@ -30,9 +29,8 @@ typedef struct { uint8_t message[0]; } PacketHeader; - typedef enum { - AI_ALL_PATTERN_NAMES = 5, AI_CURRENT_PATTERN_NAME, AI_INTENSITY + AI_ALL_PATTERN_NAMES = 5, AI_CURRENT_PATTERN_NAME, AI_INTENSITY_PERCENT, AI_PLAY_PAUSE_STOP } AttributeId; typedef struct { @@ -58,78 +56,6 @@ struct _Controller { static uint8_t const welcome_msg[] = "Push the button to play or pause :-)\n"; -static uint16_t encodedIntegerLength(uint8_t nr_of_octets) -{ - return 1 + nr_of_octets; -} - - -static uint16_t encodeUnsignedInteger(uint8_t dst[], uint8_t const *src, uint8_t nr_of_octets) -{ - switch (nr_of_octets) - { - case 1: dst[0] = EE_UNSIGNED_INT_1; break; - case 2: dst[0] = EE_UNSIGNED_INT_2; break; - case 4: dst[0] = EE_UNSIGNED_INT_4; break; - case 8: dst[0] = EE_UNSIGNED_INT_8; break; - default: - nr_of_octets = 1; - dst[0] = EE_UNSIGNED_INT_1; - } - uint16_t nbe = 1; - for (uint8_t i = 0; i < nr_of_octets; i++) { - dst[nbe++] = src[i]; - } - return nbe; -} - - -static uint16_t encodedStringLength(char const *str) -{ - uint16_t nbe = strlen(str); - return nbe + (nbe < 256 ? 2 : 3); -} - - -static uint16_t encodeString(uint8_t dst[], char const *str) -{ - uint16_t nbe = 0; - uint16_t str_len = strlen(str); - if (str_len < 256) { - dst[nbe++] = EE_UTF8_1LEN; - dst[nbe++] = str_len; - } else { - dst[nbe++] = EE_UTF8_2LEN; - dst[nbe++] = str_len; - dst[nbe++] = str_len >> 8; - } - memcpy(dst + nbe, str, str_len); - return nbe + str_len; -} - - -static uint16_t encodedStringArrayLength(char const *strings[], uint8_t nr_of_strings) -{ - uint16_t nbe = 2; // 2 bytes to encode array. - for (uint8_t i = 0; i < nr_of_strings; i++) { - nbe += encodedStringLength(strings[i]); - } - return nbe; -} - - -static uint16_t encodeStringArray(uint8_t dst[], char const *strings[], uint8_t nr_of_strings) -{ - uint16_t nbe = 0; - dst[nbe++] = EE_ARRAY; - for (uint8_t i = 0; i < nr_of_strings; i++) { - nbe += encodeString(dst + nbe, strings[i]); - } - dst[nbe++] = EE_END_OF_CONTAINER; - return nbe; -} - - static void initResponsePacket(PacketHeader *ph, AttributeAction const *req_aa) { ph->flags = 0x00; @@ -148,11 +74,11 @@ static void readPatternNames(Controller *me, AttributeAction const *aa) char const *pattern_names[nr_of_patterns]; // Reserve enough space. Sequencer_getPatternNames(me->sequencer, pattern_names, nr_of_patterns); uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); - uint16_t packet_size = nbtw + encodedStringArrayLength(pattern_names, nr_of_patterns); + uint16_t packet_size = nbtw + Matter_encodedStringArrayLength(pattern_names, nr_of_patterns); // TODO Ensure packet_size does not exceed max frame payload size. uint8_t packet[packet_size]; initResponsePacket((PacketHeader *)packet, aa); - nbtw += encodeStringArray(packet + nbtw, pattern_names, nr_of_patterns); + nbtw += Matter_encodeStringArray(packet + nbtw, pattern_names, nr_of_patterns); DataLink_sendDatagram(me->datalink, packet, nbtw); } @@ -161,22 +87,22 @@ static void readCurrentPatternName(Controller *me, AttributeAction const *aa) { char const *cpn = Sequencer_getCurrentPatternName(me->sequencer); uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); - uint16_t packet_size = nbtw + encodedStringLength(cpn); + uint16_t packet_size = nbtw + Matter_encodedStringLength(cpn); uint8_t packet[packet_size]; initResponsePacket((PacketHeader *)packet, aa); - nbtw += encodeString(packet + nbtw, cpn); + nbtw += Matter_encodeString(packet + nbtw, cpn); DataLink_sendDatagram(me->datalink, packet, nbtw); } static void readIntensityPercentage(Controller *me, AttributeAction const *aa) { - uint8_t intensity_perc = Sequencer_getIntensityPercentage(me->sequencer); + uint8_t intensity_percent = Sequencer_getIntensityPercentage(me->sequencer); uint16_t nbtw = sizeof(PacketHeader) + sizeof(AttributeAction); - uint16_t packet_size = nbtw + encodedIntegerLength(sizeof intensity_perc); + uint16_t packet_size = nbtw + Matter_encodedIntegerLength(sizeof intensity_percent); uint8_t packet[packet_size]; initResponsePacket((PacketHeader *)packet, aa); - nbtw += encodeUnsignedInteger(packet + nbtw, &intensity_perc, sizeof intensity_perc); + nbtw += Matter_encodeUnsignedInteger(packet + nbtw, &intensity_percent, sizeof intensity_percent); DataLink_sendDatagram(me->datalink, packet, nbtw); } @@ -191,7 +117,7 @@ static void handleReadRequest(Controller *me, AttributeAction const *aa) case AI_CURRENT_PATTERN_NAME: readCurrentPatternName(me, aa); break; - case AI_INTENSITY: + case AI_INTENSITY_PERCENT: readIntensityPercentage(me, aa); break; default: @@ -201,12 +127,28 @@ static void handleReadRequest(Controller *me, AttributeAction const *aa) } +static EventType eventTypeForCommand(uint8_t const *cs, uint16_t len) +{ + if (len == 4 && memcmp(cs, "play", len) == 0) return ET_PLAY; + if (len == 5 && memcmp(cs, "pause", len) == 0) return ET_PAUSE; + if (len == 4 && memcmp(cs, "stop", len) == 0) return ET_STOP; + return ET_UNKNOWN_COMMAND; +} + + static void handleWriteRequest(Controller *me, AttributeAction const *aa) { switch (aa->attribute_id) { - case AI_INTENSITY: - // TODO Send the new intensity to the sequencer. + case AI_INTENSITY_PERCENT: + if (aa->data[0] == EE_UNSIGNED_INT_1) { + EventQueue_postEvent((EventQueue *)me->sequencer, ET_SET_INTENSITY, &aa->data[1], sizeof aa->data[1]); + } + break; + case AI_PLAY_PAUSE_STOP: + if (aa->data[0] == EE_UTF8_1LEN) { + EventQueue_postEvent((EventQueue *)me->sequencer, eventTypeForCommand(aa->data + 2, aa->data[1]), NULL, 0); + } break; default: BSP_logf("%s: unknown attribute id=%hu\n", __func__, aa->attribute_id); @@ -215,6 +157,12 @@ static void handleWriteRequest(Controller *me, AttributeAction const *aa) } +static void handleInvokeRequest(Controller *me, AttributeAction const *aa) +{ + BSP_logf("%s not implemented yet\n", __func__); +} + + static void handleRequest(Controller *me, AttributeAction const *aa) { switch (aa->opcode) @@ -227,6 +175,10 @@ static void handleRequest(Controller *me, AttributeAction const *aa) BSP_logf("Transaction %hu: write attribute %hu\n", aa->transaction_id, aa->attribute_id); handleWriteRequest(me, aa); break; + case OC_INVOKE_REQUEST: + BSP_logf("Transaction %hu: invoke %hu\n", aa->transaction_id, aa->attribute_id); + handleInvokeRequest(me, aa); + break; default: BSP_logf("%s, unknown opcode 0x%02hhx\n", __func__, aa->opcode); break; @@ -308,8 +260,6 @@ void Controller_start(Controller *me) { BSP_logf("Starting NeoDK!\n"); BSP_logf("%s", welcome_msg); - BSP_setPrimaryVoltage_mV(DEFAULT_PRIMARY_VOLTAGE_mV); - BSP_primaryVoltageEnable(true); } diff --git a/firmware/src/datalink.c b/firmware/src/datalink.c index 1707823..b9ddd86 100644 --- a/firmware/src/datalink.c +++ b/firmware/src/datalink.c @@ -109,7 +109,7 @@ static void respondWithAckFrame(DataLink *me, uint8_t ack_nr, NetworkServiceType { uint8_t ack_frame[me->header_size]; PhysFrame_initHeaderWithAck((PhysFrame *)ack_frame, FT_ACK, 0, ack_nr, nst); - BSP_logf("%s(%hhu) to controller\n", __func__, ack_nr); + // BSP_logf("%s(%hhu) to controller\n", __func__, ack_nr); writeFrame(me, ack_frame, sizeof ack_frame); } @@ -117,14 +117,13 @@ static void respondWithAckFrame(DataLink *me, uint8_t ack_nr, NetworkServiceType static void handleIncomingDataFrame(DataLink *me, PhysFrame const *frame) { NetworkServiceType nst = PhysFrame_serviceType(frame); - uint8_t rx_seq_nr = PhysFrame_seqNr(frame); uint8_t const *payload = PhysFrame_payload(frame); uint16_t payload_size = PhysFrame_payloadSize(frame); if (nst == NST_DEBUG) { - BSP_logf("Got debug frame, seq_nr=%hhu, command length=%hu\n", rx_seq_nr, payload_size); + // BSP_logf("Got debug frame, seq_nr=%hhu, command length=%hu\n", PhysFrame_seqNr(frame), payload_size); CLI_handleRemoteInput(payload, payload_size); } else { - BSP_logf("Got packet frame, seq_nr=%hhu, packet size=%hu\n", rx_seq_nr, payload_size); + // BSP_logf("Got packet frame, seq_nr=%hhu, packet size=%hu\n", PhysFrame_seqNr(frame), payload_size); EventQueue_postEvent(me->delegate_queue, ET_INCOMING_PACKET, payload, payload_size); } } @@ -140,7 +139,7 @@ static void handleIncomingFrame(DataLink *me, PhysFrame const *frame) FrameType frame_type = PhysFrame_type(frame); if (frame_type == FT_ACK) { uint8_t ack_nr = PhysFrame_ackNr(frame); - BSP_logf("Got ACK for frame %hhu\n", ack_nr); + // BSP_logf("Got ACK for frame %hhu\n", ack_nr); me->tx_seq_nr = (ack_nr + 1) & 0x7; return; } diff --git a/firmware/src/debug_cli.c b/firmware/src/debug_cli.c index b960102..0c6c2af 100644 --- a/firmware/src/debug_cli.c +++ b/firmware/src/debug_cli.c @@ -22,11 +22,12 @@ typedef struct { - uint8_t buf[30]; - uint8_t len; - uint8_t state; + uint8_t buf[20]; EventQueue *delegate_queue; DataLink *datalink; + uint16_t V_prim_mV; + uint8_t state; + uint8_t len; } CmndInterp; static CmndInterp my = {0}; @@ -42,6 +43,23 @@ static void gatherInputCharacters(CmndInterp *me, char ch) } } + +static void setPrimaryVoltage_mV(CmndInterp *me, uint16_t mV) +{ + me->V_prim_mV = BSP_setPrimaryVoltage_mV(mV); + uint8_t pulse_width = 40 + me->V_prim_mV / 100; + EventQueue_postEvent(me->delegate_queue, ET_SET_PULSE_WIDTH, &pulse_width, sizeof pulse_width); +} + + +static void changePrimaryVoltage_mV(CmndInterp *me, int16_t delta_mV) +{ + int32_t soll_mV = (int32_t)me->V_prim_mV + delta_mV; + if (soll_mV < 1000) soll_mV = 1000; + else if (soll_mV > 10200) soll_mV = 10200; + setPrimaryVoltage_mV(me, soll_mV); +} + /** * @brief Console commands for interactive testing. */ @@ -54,11 +72,11 @@ static void interpretCommand(CmndInterp *me, char ch) break; case '0': BSP_primaryVoltageEnable(false); - BSP_setPrimaryVoltage_mV(0); + setPrimaryVoltage_mV(me, 0); break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': BSP_primaryVoltageEnable(true); // Turn on the buck converter. - BSP_setPrimaryVoltage_mV((ch - '0') * 1000U); + setPrimaryVoltage_mV(me, (ch - '0') * 1000U); break; case 'a': BSP_triggerADC(); @@ -67,8 +85,8 @@ static void interpretCommand(CmndInterp *me, char ch) EventQueue_postEvent(me->delegate_queue, ET_BUTTON_PUSHED, NULL, 0); EventQueue_postEvent(me->delegate_queue, ET_BUTTON_RELEASED, NULL, 0); break; - case 'd': // Voltage down. - BSP_changePrimaryVoltage_mV(-200); + case 'd': // Intensity down. + changePrimaryVoltage_mV(me, -100); break; case 'l': BSP_toggleTheLED(); @@ -81,11 +99,11 @@ static void interpretCommand(CmndInterp *me, char ch) EventQueue_postEvent(me->delegate_queue, ET_POSIX_SIGNAL, (uint8_t const *)&sig, sizeof sig); break; } - case 'u': // Voltage up. - BSP_changePrimaryVoltage_mV(+200); + case 'u': // Intensity up. + changePrimaryVoltage_mV(me, +100); break; case 'v': - CLI_logf("Firmware v0.30-beta\n"); + CLI_logf("Firmware v0.31-beta\n"); break; default: CLI_logf("Unknown command '/%c'\n", ch); diff --git a/firmware/src/matter.c b/firmware/src/matter.c new file mode 100644 index 0000000..2ae9113 --- /dev/null +++ b/firmware/src/matter.c @@ -0,0 +1,87 @@ +/* + * matter.h -- Matter data encoding and decoding + * + * NOTICE (do not remove): + * This file is part of project NeoDK (https://github.com/Onwrikbaar/NeoDK). + * See https://github.com/Onwrikbaar/NeoDK/blob/main/LICENSE.txt for full license details. + * + * Created on: 12 October 2024 + * Author: Mark + * Copyright 2024 Neostim™ + */ + +#include +#include "matter.h" + + +uint16_t Matter_encodedIntegerLength(uint8_t nr_of_octets) +{ + return 1 + nr_of_octets; +} + + +uint16_t Matter_encodeUnsignedInteger(uint8_t dst[], uint8_t const *src, uint8_t nr_of_octets) +{ + switch (nr_of_octets) + { + case 1: dst[0] = EE_UNSIGNED_INT_1; break; + case 2: dst[0] = EE_UNSIGNED_INT_2; break; + case 4: dst[0] = EE_UNSIGNED_INT_4; break; + case 8: dst[0] = EE_UNSIGNED_INT_8; break; + default: + dst[0] = EE_UNSIGNED_INT_1; + dst[1] = 0; + return 2; + } + uint16_t nbe = 1; + for (uint8_t i = 0; i < nr_of_octets; i++) { + dst[nbe++] = src[i]; + } + return nbe; +} + + +uint16_t Matter_encodedStringLength(char const *str) +{ + uint16_t nbe = strlen(str); + return nbe + (nbe < 256 ? 2 : 3); +} + + +uint16_t Matter_encodeString(uint8_t dst[], char const *str) +{ + uint16_t nbe = 0; + uint16_t str_len = strlen(str); + if (str_len < 256) { + dst[nbe++] = EE_UTF8_1LEN; + dst[nbe++] = str_len; + } else { + dst[nbe++] = EE_UTF8_2LEN; + dst[nbe++] = str_len; + dst[nbe++] = str_len >> 8; + } + memcpy(dst + nbe, str, str_len); + return nbe + str_len; +} + + +uint16_t Matter_encodedStringArrayLength(char const *strings[], uint8_t nr_of_strings) +{ + uint16_t nbe = 2; // 2 bytes to Matter_encode array. + for (uint8_t i = 0; i < nr_of_strings; i++) { + nbe += Matter_encodedStringLength(strings[i]); + } + return nbe; +} + + +uint16_t Matter_encodeStringArray(uint8_t dst[], char const *strings[], uint8_t nr_of_strings) +{ + uint16_t nbe = 0; + dst[nbe++] = EE_ARRAY; + for (uint8_t i = 0; i < nr_of_strings; i++) { + nbe += Matter_encodeString(dst + nbe, strings[i]); + } + dst[nbe++] = EE_END_OF_CONTAINER; + return nbe; +} diff --git a/firmware/src/neodk_main.c b/firmware/src/neodk_main.c index c840643..58b64e6 100644 --- a/firmware/src/neodk_main.c +++ b/firmware/src/neodk_main.c @@ -28,7 +28,7 @@ typedef struct { EventQueue event_queue; // This MUST be the first member. - uint8_t event_storage[200]; + uint8_t event_storage[100]; Controller *controller; Sequencer *sequencer; uint64_t prev_micros; @@ -79,12 +79,13 @@ static void dispatchEvent(Boss *me, AOEvent const *evt) handlePosixSignal(me, *(int const *)AOEvent_data(evt)); break; case ET_BUTTON_PUSHED: - EventQueue_postEvent((EventQueue *)me->sequencer, ET_PLAY_PAUSE, NULL, 0); + EventQueue_postEvent((EventQueue *)me->sequencer, ET_TOGGLE_PLAY_PAUSE, NULL, 0); break; case ET_BUTTON_RELEASED: // Ignore for now. break; case ET_NEXT_ROUTINE: + case ET_SET_PULSE_WIDTH: EventQueue_repostEvent((EventQueue *)me->sequencer, evt); break; default: @@ -140,9 +141,8 @@ static void setupAndRunApplication(Boss *me) if (Boss_handleEvent(me)) continue; BSP_idle((bool (*)(const void *))&noEventsPending, me); } - - Sequencer_stop(me->sequencer); Controller_stop(me->controller); + Sequencer_stop(me->sequencer); DataLink_delete(datalink); } diff --git a/firmware/src/pattern_iter.c b/firmware/src/pattern_iter.c index 0903b1a..59da34f 100644 --- a/firmware/src/pattern_iter.c +++ b/firmware/src/pattern_iter.c @@ -63,11 +63,11 @@ bool PatternIterator_checkPattern(uint8_t const pattern[][2], uint16_t nr_of_elc } -void PatternIterator_init(PatternIterator *me, PatternDescr const *pd) +void PatternIterator_init(PatternIterator *me, PatternDescr const *pd, uint8_t pulse_width) { me->pattern_descr = pd; me->nr_of_reps = pd->nr_of_reps; - me->pulse_width_micros = 100; + me->pulse_width_micros = pulse_width; me->elcon_nr = 0; M_ASSERT(pd->nr_of_steps != 0); me->step_nr = 0; diff --git a/firmware/src/sequencer.c b/firmware/src/sequencer.c index 8a2869f..526108f 100644 --- a/firmware/src/sequencer.c +++ b/firmware/src/sequencer.c @@ -23,6 +23,7 @@ #include "sequencer.h" #define MAX_PULSE_WIDTH_MICROS 200 +#define DEFAULT_INTENSITY_PERCENT 10 typedef void *(*StateFunc)(Sequencer *, AOEvent const *); @@ -34,6 +35,8 @@ struct _Sequencer { PatternIterator pi; uint8_t nr_of_patterns; uint8_t pattern_index; + uint8_t intensity_percent; + uint8_t pulse_width; }; enum { EL_0, EL_A, EL_B, EL_C = 4, EL_AC = (EL_A | EL_C), EL_D = 8, EL_BD = (EL_B | EL_D) }; @@ -124,13 +127,29 @@ static PatternDescr const pattern_descriptors[] = }; +static void setPulseWidth(Sequencer *me, uint8_t width_µs) +{ + BSP_logf("Setting pulse width to %hhu µs\n", width_µs); + me->pulse_width = width_µs; +} + + +static void setIntensityPercentage(Sequencer *me, uint8_t perc) +{ + BSP_logf("Setting intensity to %hhu%%\n", perc); + me->intensity_percent = perc; + BSP_setPrimaryVoltage_mV(perc * 100); + setPulseWidth(me, 40 + perc); +} + + static void selectNextRoutine(Sequencer *me) { - BSP_setPrimaryVoltage_mV(DEFAULT_PRIMARY_VOLTAGE_mV); + setIntensityPercentage(me, DEFAULT_INTENSITY_PERCENT); if (++me->pattern_index == me->nr_of_patterns) me->pattern_index = 0; PatternDescr const *pd = &me->pattern_descr[me->pattern_index]; CLI_logf("Switching to '%s'\n", pd->name); - PatternIterator_init(&me->pi, pd); + PatternIterator_init(&me->pi, pd, me->pulse_width); } @@ -149,6 +168,29 @@ static void *stateNop(Sequencer *me, AOEvent const *evt) return NULL; } + +static void *stateCanopy(Sequencer *me, AOEvent const *evt) +{ + switch (AOEvent_type(evt)) + { + case ET_ADC_DATA_AVAILABLE: + printAdcValues((uint16_t const *)AOEvent_data(evt)); + break; + case ET_NEXT_ROUTINE: + selectNextRoutine(me); + break; + case ET_SET_INTENSITY: + setIntensityPercentage(me, *(uint8_t const *)AOEvent_data(evt)); + break; + case ET_SET_PULSE_WIDTH: + setPulseWidth(me, *(uint8_t const *)AOEvent_data(evt)); + break; + default: + BSP_logf("Sequencer_%s unexpected event: %u\n", __func__, AOEvent_type(evt)); + } + return NULL; +} + // Forward declaration. static void *statePulsing(Sequencer *, AOEvent const *); @@ -163,24 +205,19 @@ static void *stateIdle(Sequencer *me, AOEvent const *evt) case ET_AO_EXIT: BSP_logf("Sequencer_%s EXIT\n", __func__); break; - case ET_ADC_DATA_AVAILABLE: - printAdcValues((uint16_t const *)AOEvent_data(evt)); - break; - case ET_PLAY_PAUSE: - PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index]); + case ET_TOGGLE_PLAY_PAUSE: + case ET_PLAY: + PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index], me->pulse_width); CLI_logf("Starting '%s'\n", me->pi.pattern_descr->name); return &statePulsing; // Transition. - case ET_NEXT_ROUTINE: - selectNextRoutine(me); - break; case ET_BURST_COMPLETED: - BSP_logf("Pulse train last pulse done\n"); + BSP_logf("Last pulse done\n"); break; case ET_BURST_EXPIRED: CLI_logf("Finished '%s'\n", me->pi.pattern_descr->name); break; default: - BSP_logf("Sequencer_%s unexpected event: %u\n", __func__, AOEvent_type(evt)); + return stateCanopy(me, evt); } return NULL; } @@ -196,12 +233,13 @@ static void *statePaused(Sequencer *me, AOEvent const *evt) case ET_AO_EXIT: BSP_logf("%s EXIT\n", __func__); break; - case ET_PLAY_PAUSE: + case ET_TOGGLE_PLAY_PAUSE: CLI_logf("Resuming '%s'\n", me->pi.pattern_descr->name); + // Fall through. + case ET_PLAY: return &statePulsing; - case ET_NEXT_ROUTINE: - selectNextRoutine(me); - break; + case ET_STOP: + return &stateIdle; case ET_BURST_COMPLETED: // BSP_logf("Last pulse done\n"); break; @@ -212,11 +250,8 @@ static void *statePaused(Sequencer *me, AOEvent const *evt) } CLI_logf("Pausing '%s'\n", me->pi.pattern_descr->name); break; - case ET_ADC_DATA_AVAILABLE: - printAdcValues((uint16_t const *)AOEvent_data(evt)); - break; default: - BSP_logf("Sequencer_%s unexpected event: %u\n", __func__, AOEvent_type(evt)); + return stateCanopy(me, evt); } return NULL; } @@ -248,11 +283,10 @@ static void *statePulsing(Sequencer *me, AOEvent const *evt) case ET_AO_EXIT: BSP_logf("%s EXIT\n", __func__); break; - case ET_PLAY_PAUSE: + case ET_TOGGLE_PLAY_PAUSE: return &statePaused; // Transition. - case ET_NEXT_ROUTINE: - selectNextRoutine(me); - break; + case ET_STOP: + return &stateIdle; // Transition. case ET_BURST_STARTED: // BSP_logf("Pulse train started\n"); break; @@ -265,11 +299,8 @@ static void *statePulsing(Sequencer *me, AOEvent const *evt) return &stateIdle; // Transition. } break; - case ET_ADC_DATA_AVAILABLE: - printAdcValues((uint16_t const *)AOEvent_data(evt)); - break; default: - BSP_logf("Sequencer_%s unexpected event: %u\n", __func__, AOEvent_type(evt)); + return stateCanopy(me, evt); } return NULL; } @@ -307,6 +338,7 @@ Sequencer *Sequencer_init(Sequencer *me) me->pattern_descr = pattern_descriptors; me->nr_of_patterns = M_DIM(pattern_descriptors); me->pattern_index = 2; + me->intensity_percent = 0; BSP_registerPulseDelegate(&me->event_queue); return me; } @@ -320,18 +352,11 @@ void Sequencer_start(Sequencer *me) PatternIterator_checkPattern(pd->pattern, pd->nr_of_elcons); } - PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index]); - uint32_t total_nr_of_pulses = 0; - PulseTrain pt; - while (PatternIterator_getNextPulseTrain(&me->pi, &pt)) { - // BSP_logf(" %3hu * {%s, %s}\n", pt.nr_of_pulses, elset_str[pt.elcon[0]], elset_str[pt.elcon[1]]); - total_nr_of_pulses += pt.nr_of_pulses; - } - BSP_logf("Total number of pulses: %u\n", total_nr_of_pulses); - - PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index]); + PatternIterator_init(&me->pi, &me->pattern_descr[me->pattern_index], me->pulse_width); me->state = stateIdle; me->state(me, AOEvent_newEntryEvent()); + setIntensityPercentage(me, DEFAULT_INTENSITY_PERCENT); + BSP_primaryVoltageEnable(true); } @@ -364,8 +389,7 @@ char const *Sequencer_getCurrentPatternName(Sequencer const *me) uint8_t Sequencer_getIntensityPercentage(Sequencer const *me) { - // TODO Return the actual value. - return 33; + return me->intensity_percent; }