jdk-24/test/hotspot/jtreg/compiler/intrinsics/base64/longLineHEX.txt
Corey Ashford ccb48b7203 8248188: Add IntrinsicCandidate and API for Base64 decoding
8248188: Add IntrinsicCandidate and API for Base64 decoding, add Power64LE intrinsic implementation.

This patch set encompasses the following commits:

Adds a new intrinsic candidate to the java.lang.Base64 class - decodeBlock(), and provides a flexible API for the intrinsic. The API is similar to the existing encodeBlock intrinsic.

Adds the code in HotSpot to check and martial the new intrinsic's arguments to the arch-specific intrinsic implementation.

Adds a Power64LE-specific implementation of the decodeBlock intrinsic.

Adds a JMH microbenchmark for both Base64 encoding and encoding.

Enhances the JTReg hotspot intrinsic "TestBase64.java" regression test to more fully test both decoding and encoding.

Reviewed-by: rriggs, mdoerr, kvn
2020-11-11 21:31:07 +00:00

101 lines
61 KiB
Plaintext

000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
93aaf803ccadb3313a2b42ea2572df621d7555537d6e60e8666ba78d609014b12138e8a945ca45f790d6f1139a8e2b66df4ebcfa43e06b7a9df63b4d669b46437affa579b543b1810947279e9c99969133ab0877e1564480038ddcd22a0081085908f5fc008bb551bd3b03286f735bbc4691c29f7e635c27144ca70dfe1cd9914ab0b81f131dbf3ef3281f5007d2bb16655196a68f722d1ffc6c6dc8c38468c71ce3ece956e3cdbc65a6a5b399
581ae9ec9868e857c1c8216f5b4ee91ea7d6edc5de88f9203307ad682364a5e31d90001ef159eaaa5a81230a9bd52e1f875e454de834ad58d2c371459c5c10073410c4a65f856362d7aecc6b7410a56be275d14d586f41b83d79c0d65761b46f89972b3a1627892f39d97a4d659083d2b1e42573f11da1874887241feaeb08695aa147a780649c13db867a5dc2472cb2933d21b082f2ba0b86f1e8cf007a3cae514763a95992b0c5d828da6d44d60c721f2b5d9b24bcc87c30a2158d5eec6300b1f070f3a69e1c4817c73400250caf6e859a363e93088670028fa8d9a94d216e0a0145e40610084d8dc8e29b281ca4b0fe1bead7199bbf497c486ff95f945cb7fe223972ed1ea8d1256336752c149b1a7e174906a946cb2811712c7f98ec734f917b8dc12c5e9583dc3f1debb505566a454a7ff584966cdbcaa564d6fae27984848c31f06091d05c7fb7b94ff165d39eaa0a6be50ad79252cf3a6169731ff94346015a93b906eb0ba44c7280c1333f3bc4d314b51ff5861060
f1d72c07ba04e5186961a313cd9444bbfddb354531f85099b1d9acb6f420b8ca52b736e8084c9605b28eca2ea9b6873dd0f61160a745746fbc3acac9600c6111d66e7809075d44ee8e5ff519928f407396aec0764733c1e9ad94f7307e507747bf9a5949877ab2e1466646a631069178120b56af68430ccfb6b9f787ecd34b39cd85a9a6e059a45d53f2589c296f3c9ff76bfca15c8e8c99214ecc9bd9df0655fe3341464b2a99e27334b02e9af52553348a6a4287d6cd30bf704ae6051caac90c77e7794dc68f03128e138a48477fab3bd0d214adeeeb7cedd5cb56b205069d14a5ec2c9c81558e88983909ebfe241db676cf0c17119938abd57ffaf369172dfd4a035f0d13f032ad575c6f25499de035ffcbafeb8b79914ae5d701e164558a0d78df10092f7e32451c1ec8935e57744d756ae9574d3f0b31099191365d6e4d382a021c032f39a0b7a3566193237fd3b408691cfade1f3735b2dcfdcf84ec4a9d2e529c776bf8a3a5d233521e9f16d0ca7481ec11300fa5058c1ecf8d514aadc026ea3ce9a8c345d0bb402c55aba91617b7c440f0
4aab2bc2d42a2085f50bf61da0096f31f849d93cc1352b5e3758489cf8fc3900ad6f272d0e0a392abaca8124d43a3c07708c4ee1f0c2b8c4c92712976df4592957bd15fb0bdb98182483e88cf16cafbf436b936a962eaa4d31f09772d19fcd321e1e753e73e789733fbe032334e36d718ab81e8d82e367837aa4b94484f5ad3a48c87df5a71c41b553a7380d2935f757b3b2845e5bfc4a7d868ae547e416f5331bc48403b7b49faf021d6fac68fc4f82e68ae6f35209879753b7d0f01a1a19d4b2ed04906c28d5115ab23e1413f61a39f1f222af2c6337e572b5ade2e1ab607ca42dae69f90877f14e17c4968724ca70452e6ac52f9a08ee2bc8542eccc8796af48814c2bf2666d32564bfd6
644de67d36a86969811024cd6ddf678a4be4ddd17368f5b69c30b24bda53fa6bfac364f65e3133d34d439ca86e4200a2a6958ca1ebd1aaee29428c157f085f909eb499ed045d31d0541a8b3a2e4d8433565f0cdedcd3f6af6991e9f32e7c6d017e521bb5ce642f92dbcd00029cab1b2b93a78b37534ee6b6671beb8f8a4bee5fb437086de818a7cd89bf628b4354dc7eb5d67485ee91fc0d04d35c515aaa80d5bc2fc5cfd4f4ef56e98c2d1216f677dad7166e0c23012004ba7037ded2399076628963823afd0914893d6f6e54cbad572dd04187c6d881c438a43ef6408b72dfa86121814dfcb0d435178c961f7117a499741b835d76e4ff58340249a7ddfa931f7e910a2a871174c4a3bb58382bc133f5fcb284b7c7e63ee774feb3be8c3292482cdd9bcb66b6f90344c7bf671d13dd96c0cc7b5640b04bd2b2206adfb7a0b05a99af7e02c71fec3b0697a607fc908c8909a40619f39d3b22f862945398952716433460f7cc90aac803ecf640b4e0570ee6b500b330498e52bbddcc961816e902d9cc74b5e9920152f8e711687fb1a2c0cd61d869439ff785f0db16f90ed12aa734cba73e9d9cb31777d2ea0af8e1ba027bfa3d9ec44a35100474bf2fbea3af46c7ea5ea4f97453d642a44f209b82701d9daf939ffc1f92d9351da54701364c881cd03fb581c3fdcd4ac6d5e63f29299ebdd6b040def87b18d6c6768fae2133a0cd3c8da5e154
4fd6a3ffe60611f366f21d71c21879b4e9f8f251d5af2b6a6d90598c47f884057c476906a33b8b17f7d611947ab553ad3df14f5da450121213baa4724db26bf3870b9cd571b147a07843945fc8d86770a15054c8d73f67dd8bd2026b16422e8e1b2edcadf308e46af755a79ad8096baf5eb15bb523c8ff46b19c6e1f7a2402c85a1272fdc87655255a2a214ea798726d6ffcc19301bc6c08433cca532a80689beecf21e1d7769fd996f3bbd7d197f0c3d97c80698695104e62c8540816590fd1bfb0b4ccd2fe596592be07c1b1e3a647d56ed288a44e3d2403f334b65717f0a1b45fc9eb52958a824d8fc3f2
ca048b51624f2c4f6ae6a1e42db70526e318b3192f68a329f14db6b8350ca22dc17f395011118a12b95f4f6dd3a0a26056a0fb140fd2cf577fd4d0ca6ef89d01b14f51a10a51cf8749b65514df21930c0459efbe9d121a28602e5c4ec407542c5324fe6dd00f813b150fd7b69ff0a36a54aca348e5d314fb646393e7bb013f21304e8c20d535dd7ee0a3146cee015413332336c73ef46b396e6849d0bbad01a4a0d1f929ddbc9091cbbdc7527360e399192a250ad25fd1e5d7565dd745e7e7e0
eba517485070cc205840ce6babd236e17efb1a459c196a3e801a0ae7a22bc7a88f9a8ab9fa9121d0c5b8d06fab8b01fdced5c008adf1fd55d023a37e3d8242a949fa82b149509121e36884c194812a780e4fb8cba4db3b1bfd52ac32c5819cbb2001807b77ccfe1e6cd905a86168c74ef343e9967ec05f140918dabe9045c6e7da2709111847f631cff3853fd2fba2a031f04707bcc4aee996d9207ebfeed6093ae5fb56c0f5d7751a436d5a8cc79132d7f2c63741b3860e8fc882
1a645b6baf8a3f4135bdeb3c7c0af9e6da89dcc568a2e2c2eeac97cb98ba9acad3eaee79f1bb4f64995fdd4ed07dce528c9927c9204b4b737e70c349d77b5554a9ff98090e051c5b1690295cbeca007c7ede68d7f0c2201627dc2d0e8f1d718be90a79b76d16c8a7927ae31fe95320a235d46093a0d549ef781ae86805cb2c80d35638dc3f09ba5fdc3074bcb3aeb2db2a1c2c4ead1e665afaf4da593989b051ded6c38cdd548c57e08abace0edcae8e2d16481152a9da0814da3c6ff487b99a603bce3da2d5511c54f416b0df3e677c6712b36e46066d64a9154c14a45deda312d5a56ea87ab56470a1d87474cb7cbb8a8288aba5270ca601a5a7d486cf78defbc0bff50202745721b6a41286fc384b92c1b1c88da616fa6a4bc415a48f591f37e19e56de62ae423fd7325154fbec9fb2e512d0f3e9d15b1d4726c82770e924202a7ab222428e313facfedb468fc6b5df1bcc031b996d8aeb37a78b74a91ad85db62dcfed1ad0ebf0c6600ea83d9e30781502594dff27b11bae79c39e81fae44a24f1b495699bd1ae818dfef2333cf69703a5d635bcff231df54c29a608dbf945c96450908c3a2aa141fc31236499d37b95ce31785c
c86a73174e1242c6715f2c50c8ceb1284971adc288ab6796a796911f55f2475dab374a12924b569fa0e850c6c90664f521044b42e16b94ae8dc172aa333191952b5b9e570f5737827c6249f87872408bbcbd10dbf43cd722920792e86d9722ef56fe09aa015d4adbff4d9d5f787e334711b458f1d895cc1b6e9b683250b0c1ffe687b8e8167988b5d25ff8b17de9ec66c976cde2ccb38b47be664a43ab3c77ff6049bea93c6aa3c6bc92a717fed0d65660c7be6aa7deb97046be424ef267d3b7e0750d7d63849cab589a612c7434415b30e05de8843a5488bdba720d3fb0890000c8995db57e67ed8e3ae04eb2691905e0ad711128a7bcb390a57c629f07ed5b6f8137beb98df82a51fcc5b0d0fbc60eb997ee8b913579c73e177f053d97cc24a20e94d4fd4e600920c147b630829f085a3f00f043ab3ec5a32d21b0dbc324df3203eb77a2035a62d6c2331c0fe483615cc7fcb7c899a7ccdb5c1e5a23d2351e5dcfdd366ca2d9152d63b567348f074a4f17c791e28038051f72f1004dd0747b28b2fd0dbe3117299a6e74192c1ec7eca7a125a0f78718082a2df96c9a1cd534ac70824e0efc9a9bdf2f7139a4f34f82052870232e490437a1f4be8e2228f6d7044eac284f0ebc69e9ef4197513c29bf690e4807c32707980737b4d97beda88c63c7565ecc88295271530360edf37b16ca93a6db0eb868a3adeb122db08c
77ca852da60043e4d7e417b27fce41d15893abdebac1c15a8a2ba933c412a1afb4e8211e2ed94341eb0cad3f3d8de5792e80be1291db44e57ee1ed0ab058c875689f186ecef67a5de60442f2b148f5ffe666fc8e54d1198e65f5f7195b9ed34572aa8cf85e5b639628e8969f7aeea6491c5fa7929f64a3408f
cb7d94ac328b2de84226bb16e47efbd648293b2f75cbbfd5e20b3bbb08e8e57bd587a31b07b1cfd65c06f25b07cd2fa9f0cc66734a5eecfe7fb5092286580c8aac5be8ce712fe69c5f1c119505cbe5feabb8cf70072e212f522de20955df07db76237f3e86fe6352ee5528eb1dbd2100797686d00e474a9e7f70d4b59428c9de6f4c73197ae1c5dbd1afeabdc0cd8b7207a07d6a2f452b054d474c23d3ca4ac80c53f6bd8110e0f1b20882938cebec89545e739a8e939aabfa1daca4a21e913646962000d5bdb3ca28a007009c31e5febb39ac1ffad91c5211c5c6aab8cf345b82c2bdd278f8e1ed72c11dffa2445eeddab0ee1d31f65389bbaec2512ca3d52e983ba2
1f6f3ea5861b413d56282ffcdd244ea89723cce39700ec12380c1521802102f9d78bf59cd2483be4b8217e3ea78d3c6ce0ad9e96942bed3814e886d71c5a5ffcce69c81948013a4ea2005c5e637960e826cf6cfb425ce97f600a0c6aa5276ffbdb35eb67207a1835257d1996eadebcb9f726327636690a6d9af841a638d199f12e58f1dbe8724bd43f03cde196379a81cb447e3fd99ef4e02f674bd906d3752db3105d054f6bf88260799ffaf069c0e176e36f974c039e5093feb0a0a120d4c9a9d9427f2a93b53e3a944298bffc6d05012a17dabd871648f2c39e36edecd4f2e43a80ed47d475ae6d142e77f71da44877a0b8faca97b290e9d930cf35887d85476d1b907a9a131a7a8d10a111ef386b292c54e35dab238fdced2a76d8c56482e9672c1167bc15d58b29f07f38a728e5daba173a8a38f66151e6b1ed206cd8d36fb3e2e39818089e8ddd962bdff5c2c162ff1d0af18fff25e3517612b53b1be916b92ad44a5e157719afa58c37400a983ed110d21d2f24f9460de05234f422afecd667377f80316faf63efb30323f21e96a71c796afd1e34d8a9ac9262f85a4fbbd5c341d0567de5c23680ff50c3d7c02eafc2a5e4ee9a4c470f872989eefd4c2b489b0284ef52b5140be8848f6bc6dbceff
fdae9f45f9c2e21f5c6bf76e768738878462096dece89f373c89f90b08966c46c7664f4006491533da5fee1730c2b77391c63bcc5e782f3574be928cfdc678eb710bda845e795010c6083d5e8426cb5c9d7a4cafc04e22560b9c2d678175d84480e409a4c67b7a18bb35b0139b313d1a58cc3647aedf30e2e61d5f5df3bc244460ece580d67d18b0625be4f2fe29bacb5d685288270282d83946ff87efcf18d69934695d9c39d9360030baae2ce0dc5990713aa807ab550c08ff0ccf7f86f9a1efd524ea7b15e26592ee57fb1125888c995bd0c7e48792f775d76fbb63dd939eded34eaabf4b5cbbe9b0392d
692e480a07f43cf7ddeace5224f8f4f1e0570a0392c14863a7bd505073d1d915156551a3a26a146441ed41710037230785132ae73c63548e5a48aa32372b019a125f3645be6a2c84a39b7f45af988d9501cb75abb281ec4452560e45c126474ffdc3d1ff365b83a51cf6ee3ee0540237052b89217e92cacab1ccbec17fb7afbf955cd9ca4a442ab3
0f1e6d50a8866a6f1783c43ee63c46c85fbf1310bc61f1ce2b195f815e6366791373f052dc58d1ecdd2b1517c6870c30098d99e1d4fca32150b6bfcb5b665882cd0a9cb19cac130c777be2aa7f2f2469404be67cd1ed65845414d662d75093562e56787d10beca467efdeb03dcae868e67ee04eb2851039a51d1c3f179ba1c344ff56d2a53a60b6c25857510880c879d01e143c1fbe2c88d745a4f743d7de9bc6e42c9a1a9780013dfc33716e2eaffcb1c
06442966101e5c98fe626c1acf80691affa6072c19681d2b35a5bf6da06e7bc21937ea32b367db384994c34de865385e32266cd04ff8abb9fc928f9407f2fc200bc67f2acbc7880c7f654749ec4fe0affadd7d8301ec260ec46e807d0163c0420c1267d33d86c202c9a7421efda868de00e9fbb2e1301368f6fefa0b7c0c86e9d5e0a7e9aeaa7a35d1c2f1c56b31489acab67930791014eb99381c7abc9ace0909e499023b74689a93a36059eba4d3d75ecce87ec5c0b2cb203b955a3b6030baae34d0b68e1d19c5d0eaecf6c7ac23671e006cf55e614fce24ce7674bf21789f135581d3c8345d42a4d2fbc479aa005771830124c0e7aea37adb671725ecf74ed5700015bc398a0cc4605da44bc73f7aab586806227d9996386dd64e699196295223c2f204e323a1e357d4135be528b6bca3e77a61d3231914b48382541d2837307474e0699a5d20b65e57a39fcf5084265d508385df0eadb27e08fe6deb717162649cb11c9df91521fa74b55d48742bb8eedcd75490c49852bec3e697ca720836a942704b61064a07b965c49265d037891c4b3084f273046089b40ee7ad6f29e401304c879bf63e462957e9d2b675a1bde6d6eaf53fc3e87220c23b2f7031b424a736077f7b95b24909520322c71a3a8ebb706b8f66af54246df458bc3004704b720274919a5dc9d14058093c6c
c91895cfd12582f38e598d1103cbabf936690afb78ad1ca54c541130fecf5dcb606e6ec069fabf9c9363d5320f3141da96efc3b816157b317c8c11571d36abb17270a155735833336493d7b86bbef167745799750b68899706a061a69e1d7d5a18e6a14ea9b42905b6a7ef3cf5cafd442056cc1f6489240c8580a522ada2a4131a63985f17f1570b77a2c7e5af828a2d630f9e67acd814042fd940760a677dfa246e66b7b1358cecac8864a5e463e7e50bcab1671a3da43403344aa1ce16a336c3677d5c3dce4a9a267e31efb46dce5f6bb487504e95627328bad148dae4f7b48dbe24cf01b4d81298d18a53888c48a45523a2a80ede96f0d41cd23d738174dd0ae69783b71c39b47a5f4c89efaf99ff0ddac69296d1e94e512079b081fa57c7d68d8796509da1ba4feadf656323c3d5b9dad8a4ee3abf1aa0541d8bfe1b146876a08066fe6fcf
c2c8493e7e8d10ccc432eacdc3b7ba192e65857c04bfa343708cab65033ee6af1680bc410c3136a4bd57d3c45143f7fc2899e0321091960f114a73c4d010281675c7272a90db8e502e7d0285d3137ae6def4113ae5ce87e672aa8d64e4c02d8a99684bf5ad07cfcbed7dd95dfa53455cce7ca9189b6d5160396cdb98019206724984caf1feb9e82b6ab83a01f12daa07bc252e02584b9e3c8a92b8361a57d0362fc9c0cbc99266736880b13164af45d867df24cb2fc146fab8821f6c9aa83f878e0053fc308ee6a0c28db96c18
2a0a564e497fad34fcfa2f6733ef64b690b54c86ce2937001e6e9ceea92d8649c87a41a5a6268b17d08f1259b1e92d3374b2d225b4ef3e42f7668e04be38fe66f7e98f20cf3907e8fb9b1ac8b1428ec4682749de5ca16294369b4f01ca6fddc6b98a72aff03f6f98891c23b15eaa6e990028b407876549b933b1546e00bd3d1d2f811539151e48f4423ffa0efdf52b8ba00d575b7c51cfc22a96e52f6083b8be3ba86711358fab77766be718dc4a0e582bd9056b24e52691918133974b1cb64b554704017d4b421d0fc864c7a8908d701cd0bef3a37cd78f0aa6def6b1e7bb40101bab8a615971a074cb991096b9cfd99b982794f921341b61308035606042d1d23edabce11529afc4340a7bfa4efda4f3875d751d5faa2817eca1f0fecba89a386ef83ba057e29fdd120167bacdde800980a2451e6b8496093eb29913e093
b52c9fe430534004b13f30a8205135d73cf8602ac34f90bd9aca7a1fc3126b53d53f7f9d249ee0ce76d90bdb8d0e6e063396060a2c6f34abfc5f7e99a4dc5d78bb0e52c05ee6cc4f1c3d5f049510142b26e440c2f40e669fff99e37b33965e764c5877b929cf1ebf9af89bf6f1ce8b050bb305bf532e122af7c844c56863c28f8acd973b848544ac8c3959f8d90a9b6a44860078c76a6499328e08c5f5a4d414a700eba33f7873e9a0429e323a7838d12da7d057b2367d027bbbabd29b75f9f23a379efb49c2c1675551506356b82175265aa67a870f168e36ec879426c2df043997c029cdc2668f89896553381ec0878d9fb4e5eb18817d84598b4d885f32cb123057b88658ac885f55549696bdd1fb2424fb9063a5a150007178a695b05bea7f6408d2d95afff3ead03109884e58636fc7f2e1f92a3dbd88a70e86e260c6078c29d9d52eafb1a035a00f98ac565c6978368304682945bf9401b36b41a4347644af8b130e98dab713d40ece2023ed529334e2b049777e76ace217c46389973c9bd60f3577aaefd2493cb3a0e50ff42188f1bec8b98417225b954dd918d2efeb00
92c301ed75907ec2e5071e9545c6ae064a6b0efda4ea450de2b0ade0bdcc2622a45238af681f853a33d7b5b084e97f8c9fdf006806c4c069657af42a72e37b19f6d6ba84c1317535cd62d9094fc816cffbe9d826bc238ab7ef0764bf6f47d063329998edaff3104fb459e7712ba41d1e4f0326641acd096722badc580d4db3056c557834f171ff77a5772b26c44db738b1006b7ee96f970f1f878f76290ef9d3acfaf1ebdcee5bb7416f086bee3cc8da218c4e43f46071d6f9768009c1b6fbf21090b6a48cba0af9e5a200e4f7c745e42914d2b2fc1ca02e1d23352d1438ff4308c4f34bbaf06a4ac4141949b7e1df9ed598059f8ff4864433cef769cac85c232f9a76b6bdb6d215b22a28dcf4fcb09984d8b9c457726fa8ff693f05afb5c00f31be10d937655ee032af7b3789734db11272bac140f1bdbbaf30bfe566103a9c5a00c230e3349007329961dbd414d3a3de59038812ee1d532e3d8f77b9b05f562e771ed015cd41ec08161c17f8375bcb213a77b6f4895123e7adf82cdd0035f3abbe76a65e5b622f2360a7b357f069782c429d5952bf0d5988bf64fa5532426d91e53f65db8d0f58facfe9f0e5d0c15ceccad5a7b3d65cfb3681e973ca334e6a567743a0a70f74
adb6c14dbabf3ca059689718f2802585c37df9e0790859952337069103f501a4e88779a1726afb0e35e130776232313d57eab5f2a3ef434174eef90998a06e7175b413f9d4c99cdaa38b7c5e5e334bcd14e65c788de29df3cdefe1176d8f154213dbfece3f33d68b1b862499bdd7f490303160a781e9374a0cb90bd201b21997f6b6a8fe698e0c7f3464e1fdb47d1c2411f396705cbcd3becb3ab9d40ea7dc3492507017dc0d4a86ccb23a299db47ab5d4fd0d5b284892c2663e54e1776d4d440ffd806fc50e3a2800e645b32821e884d81a0278387a8ebd1282dd3fdf1780e90498fe86877f86fa8936e847778f5d30c2de78dc52ea246591e7203464e41cd5dd89243996642b96e4cb1f289fbcec3a707eed2162d272f5ff4d28390e56135b860bbb4020eb42b3e0e3bfaf19595b3e7124b78333e586c23397725258c03779ca3c6e76fe96b2d4fd553a2492becb776e5a77fcb36cb7a5414d641771be1469e86c8b7766ff581527f3e793aed1ecf710e639f54349bdd0916887ec992fa029e73999fdf3a9219c485c47082ea84a1dddb7ad018643e9740bbdf6e3311a3e7b1ee6559b6a6d8f1c38acd1b4fe5922c68c55032447291dc7e299a0ccf10e8dee7a819135d2f539ff7d90b68ab3854cc75b54ea2bdd
ebec78f4bcf0c1728f58f7496ece4bd5afa6704931bbeb13bb0fd24c2f8e9bd86b31d6d006fec3509756d8d6802338b45f492d03ccac18a6061d85da775ecb613c2d3f3e3b9c05129446118d488e2b04d7f5e92331d23640841e541ea8c3b3703d3e6286533457b0223975d59bbe1cdc0e251aeef6f8e6a07f5c974963841d4a73e199f4025bcddbf26a0d9061b16c5c0b78f718ea7d7ad4ee57d0a42b20ed919f62cfc9f5766c9706ae3b5b3583282d8905d7bb65f45d8149294fa8a8ef413f087472d350017dcc336002136f8a239006cde32f19b77159e89f519087d5936cf51e062af3
084a7f4e1c20053d4c87cac4a44be0e2cf51799616f685fd6e795488d190f94b00cacb1e34fed266d4915205ea8413447204fe0d74f7132523fe1b201bfafb91895550b2e997bd229c7cbb8e8a7cdab247cce5785f561ef60d1bd0a88ab691a7f9b0680b04d940336ac8932e766a01513014add4ed2776e8db98ca9218c09e8af333312a6411d31a6624a102b3f2cc43635b9aee4f805a3163569c4423b5ce41349879632991b37b6a7f1c159ed7504bbd6d00734baea0497fa038b10eefe0e2843f7bc0941590568b2ed49b0f1ec7d578529a31a170027075c83edc06412d465367f7ce2173978b75a1c64cdd096bf5ca706f21fbb209cb6198fda35adef5e97fdb0e745a085f221338
5528844dc8f068d3a1c7551c863322a77eece3df74c1977641e67039edf6a2f96f136db1c8231bee7a90782e89aa5b328a3a014e7b43dc7eb949045cf00e5cbb8d42456690ed755c1252c38e36e10e717986d5e7dfe143641be497771523b905a9c0c7a8867560546d423b55b6e1a6d5dc915ddf6693367b2fb1fd21b1a20a352eb7e2f7f5276fee59941cf954bd4c674f6e1687fa7f729f812bd6ab532c52b57c809978164cc3ec68b6348261b6d86cf8f8409f1730e780a7fd1dd3616d15aa0f934856840b9f9f198546d929e91a41ee51c3e1e47fa338fbe3fcda03bebd1ac0c6cb9f9d513554c800efbe7307f7e4f70a3c567f9f22b859436775da140bf79f6f12264f2022dad2e996e00f92d7ad2359ade2edd09a7f5303f62502b228a6f0d98fe6d7cd2c9482ead790f22bf2b9c7ee589e3f42ba2a6716906fe524c475c3911565e4a2a29c2caf0099595be48a52de33656199644db1424c735a0ace79a9128f99b169047c147506bb837724517f278d2d12a2cf24989f25658c243b6d034327ca856652ee869b88436effc770674f539992abac90f94fe56438296bf373564cfd222e963ab1a15443290c1ba5ef9a7a567404b7e653eee53caaee9bcee8742156a2f8269cc0
f0f02d4293700f5d0bab22303f12673f037a1949f08ac4d3cb0641c41439ad6da9a048d6941f7de25cd68d362989e08e6670be4b9618a6912c2d93fd55324faea7e4911185162d6de6a6899edb886e4b838c413674d747fc7b4ca6f424382c1e8748e8e0c5be34d745d4589fab2de45eec9ef8c7f69400a346ab92d10d3a83bff8338bf0ebac8a3edaa1dfe538d8d3b95d7166436bef60c75b45fa663ca310c2de6530d1de771e5a942d0e923d611d9d915392cd75c46da90bb9f16b74ac17d67a9d2d9f46bcd4d85e1eeadd56a30d1961f0a58716eff22761b6d7a5403222f718d62fbbccd9d664adf5d1dd3fcd61459e1b59fcca167d3a
699777ddb20034c0af0004b0d1c9b9beb560fd0313dfb539edb15039d264c9266ede5b55bf84eb6c6dd7213aed5c53ed3f9099a31fdaa02dcf83c0ffd57e5872c4b6be4c9e78054622b152797db43eb8f87644afe33a47a9da47df097fe60fc53912d407635ba369704243d95b3173e4273739563183140822bf2b055e6596d9e6c7c029264dc8a375e87311941c554c9ba66e6daa53ec0860de5e6823f65009196fbd9cccc17fc751329de0c9a4c9cd1112dce878e641c873880f888ceb6cc052c0983eda6bf0f6d170ad28b9c162dcd8ba62466209580853971b4fba2650d2b8c726b2deeafc78b4d2bbd1826d27413779dd7ba81b4e33d5b253fe75fbdb3b8b9318f4e5aec79520958f1015c773791715e3c2387b4daddd6ffb87e92200bd23d6bf1b879abdf5a6b8377752806f3469bca4efa80183e0643f8bfe4f5241e8e6e130ce01ea960074c616636135a484d33980b091e94c94edb0399c0af27608bf9f5cf7ddcdcbcc21260934ae2125281746b449b0c0190ece70d4d5af687c73a2f48821b53e090a9d7913e625a6d280c297c43858cf8b6ce4a65b0c85842dbe7d07b31177a41a75c58a0b79123c39a5960cfd61bd824ecc2314e953f28f425d3fff6313cd9dcd4e0d45daab3b3b86283993a91e874627b7878966c15b6d801c52a95c7906964e59db40c18fa6fa16f2a5346ccf3972bd51e61c7de3f361c208178dbfd4189a7e
f34c257391d81dccd5cd4355ee9d9dcc28b560bcfdf06437ecf1135e32dbc12a9296659b1e94e80b37fbb911e0fcf1a15768d2ddfd5d7af82c44b51a5d7dc42a9cd73c542c9138e25eadb5c5443979121817ff115d4469e5ac7a362bb219c26c7a0929dce16931d774e67dfcf245366903e0921bffd2575d46d619dc9985b93d0d37619c69666ae0ef2c5e596aaf4e8356e0a5124118f3e4d79f87e3a6501f4547c8c83763558ea204247b6498ecb11e93bbe8c8f80013de47415c4f78808e21e5e975f280351f555edb4b48fb27e96978769bcad359b541105c2cba350ce78ecb7644efd045c6d2933b37079007b25eda1ad478b282cc99c143a81e0f9170917cf7e2bb46eecb3ddf2ee9a214f4c25ee0a783aa753670ff0c62eff261cc6d24392af7b3e80a17df98efc0ba175c4a8f22d2cb76afefe46fca1846e8d741abec3e96c3be300a599beb05ef1c5d72b78a2415177fd468f1008a74bdf429b48d719fb1d6da2474c08c586ec4d313e720beba82875e59c01f8a176d3af9e7ca0d5f490b49049543d14d697597195426fa25c2ee1aa539b3462888fc6ab0da793344a40ffdea18a2d05b32b7e2d57f8d7fbbc9e126eb7b77f8244da225486ea68d5a50c96bff2e834a2710d106f6da1a4b350ad8987b1ab042c9bbe7ad33b38c19d68b40745916983146
43345a1121b58054517e0bed0446919c3a64b06d5a2d38b3d6c4ecdc1f144811f50296f978648a4d255814f0cf354842c16183b78cd3236c3b37920d16f3b688f126412a9e9bc794b0b6348b6a1381939b726bb2872236e469c573a84723b1fbcbdf2df069b8024d44982e459ce904a00807bfcced0d73b7308237b0afd9ba2a2d8217fda474f1806a1ff764a0b98c340387d01233319dfdcd179204c3be1de21ab14b7e345c08ea7103600948df7eeec8877416ec132bed0d56a5d4
29818259c1c0f736fb1f9dc84ed02ec03ef650c5784be3595c32a88045b653dd691ac58bbd266d99464f11a7eb92236accc158782e3c8bb592dea33a42b715c1b00b40779d686eb8b9980a83703ef560f3b817bfda9cb6b7c0e83499a528a2a3115d34f424285a6eb7d4e9d1bfaf45065206ca0ded98d5d8a098bda16dcab6af17270f12e0aa892a9961d295e51514444dc9f3145e4d53d6bacbfa637ea9b4527a5939e1dbb9be7df91e413dc796fcd3ffa0f057dd0e67f0fd74efebdbfdc78869a79d6a73fd69a8bc22764b180d5f37019f9b287271ef5f4f33f744745a3c0fec1c785bd7493ea34cbe424a185103bf89206399fe7fdb9399627801f8ba82eee4d6e2d7b15d97258f42be94989c9d3965ff6bd427a1aca2cc31add92edc65df1c5f9df67a9d30291c09585cce83d6
4abb276335c5877e594022ce5e75f2140032a578f43aa96b1d46c8936e0335e305fcfce549314f65ac41405d3db692d85be1fd174c586666781d630c8721839ffbf75dad8f905d0718228343e1aed290c062421a69a03153a5755374b7a620068843f4d1c5b23df4be35d34645f5609700ff7c7ee2ca3b99c41e27981663bfb3b38b3a29c08003c1f0e57693d139b2753d6eb1611da3e4486bb04f767b9c2099c3a323b246a8b16a86682a256913e8f71689b70d16f9da07abb6f4997ff633f2208b3de7e37d2b72b8fcdcb98abe56a46f34cc334f0c0703d198ae45c9852ed71bd0d78018893d40e32a83ceed1843074adb68d66fe9cc5a5bd29eef2d6f14ec05d0a7257c59313cd0839b37357e5b643f21d75f00411685a9e86c82099b2eab226d718846f77c1ef273bbb224fc4b3b10310c60db2fbc3beea3a0f36e02f3ccf79a2f6eb7
f30a1e8ad916d6531836ce2b4186c276b257c917e39c9806e14d6f543b27fa3815df36d0a483924e9ee61a44c93397b5893228e095ec2770cb95587df9efe5cbeb4156a4812a90f7c2ea0401b148ca0fc807dd3756dda26f1530bc1c82c222f9eee9f592ac185b15ddebfb1b969f63c88bc3673edebdcd3f5dae9284ce1544758aa97fbcf8933086caf65c8947a94055fde48015c2bd36d51d2046dfe7024840aab3e63db289e8f134b61729a0c6f3641dc8d83695d6a02bb9a6989b9061f71ad59b
1d227df3418509ef9527bdce5a58fe8f96e971a19d7dab6144f94ab9ad62950b3b2e93ce831770d09cefe89ac06d14ea03b86620d813349d36ef864ce338702bc89f1f918f09e2c2d9398e712a2b60b957a2c006e7dfc95ec40b71e5f7a0d3dfc4883df80d4973f2fb51e744157d4a03de9ad0c8c9d884113665bf3bbea92e78fd4801834652635225354b8b31408f598e6810342446b89f3448bcfaa09af0b115b8b0105618ff5bfd78149cad770176809253058efdb5e212656b22c3fb74130eed7c8c29a5e95dd9e7aa2eea4147872826bcc2e47f2bf9870b19c9f6a83251da266123cfe633ee996a39812f3019b6e0e4076c3c94a6f240d7e1ccc7
a71a6f547981ac2fe0f39eb499b3c962786b2847a065ecd4ab4cdd7494e54f057aebe1c76f91f2e73dbc6720dfb826f661c835f50336209cf3d7d6cc92ad3ad0615401797352faec98c15d631f85644c83d64405ee888bfc3c63c14213047dc44635047c422cea24d46f326fd8d9d1996dfa31b6d8f8ac123fd77b71586345091f7aa709b95236c45b9a77218c36e349ba13ccf63f262852410ebae34f9b940a0acc60ae71a972bfebf8cd2d0b8029b5b9d983553a97b448bb22854d1976200028
1021f0befef0c1463cc9e0c9a8ab17f9bfd7e1de1c42a77d0ad00dc6db8eb2dbbb2fdf40fd71a47a319a7abe343e005f9526f886da72e65164b0985ab3f3c473c850d387309f4691a16772483b78404432a26e51c1fe43e0ba1e97610d4c77ff3c581f9c15548a78cf048dc98748e06e8ed82739427e95224c6d95ad6d5fa24889cf3559ebd220903804dd917354c129ebd696b8c3717c40e05b776bd584ea6c546413fe00db044027ac9ced1811b37f8edf9be189203a7016ce20b85f16855ac90440e4d682543367a62769e7ad8924430637bbbb702f9e249d6da884f4404ff112cfa7a31e0898a3f0b5b9464fad9b2c228e64f62867776ece37309c9d38cb893ff9659e020810e2992ac89422a91444a9ab88fa2ad34c8edeab7e124fe076ea83bb80a75515a8adafa87428b5398a3beb9d91eb15924936899f36cfc5b48a64b8026bbea41e705bf83f6ec82e4f8c062a5930a2e0e08b838e4c1956fb322fb155f002d79f642a02ed52c911c3994cc317ef9f9ce31d8c2cf9fa9619879052decc98e47e
0597846e25af521404645430863cf6d07468176c11c68008aa724305de5fcc025fd350bf1fbc63cabecc477eabdf01219b7ad7e922492a1bb0eef67fd5603bfed0563c402d87e90a2c9485326985ee7037d78b9c5498da6d1541528b2debc6ac5602096bddd4973b6bd13da8acb90845531aa829c434a25530c1f134339ee5778ad40c90a1e8da9ebf439e44784e0bd681111cfb4a47bd82284ebb39d9c1d87a76a87ad3be9187318d36d1b76adf093709bc660b362aa33d91856db44d53c994cd9adde96d4bf068481cb423ff9a6a74c12d04b87250ceb84ddf31da9aaf46b4fa7a261aa319fb37de5ee59935cd7b2afeb7d2119328b4ed2854ae62de2e8cd195e1efff0a7fa2ec24e68585ebc718031fffc52958547c94aff12c0c825b2a14a6595887a6297457bce64e719e79e5ad3a6291e913dcdba5c9ea2ec3062876b5571e10b7a7bb7ecbfc525ea9e064a2ba6233afe186bab8ec88a11ce6dbb0580776fffeb0e64637634b9b55492d5110fa0f554fa1a45ef42db92a6c34c605ee3457cc147192edd32985163322854becbc19aba707c58ef25dafc9d3d051807f2e98ecc0df8a2c987ed0ad7702526f7f8bdee32c1ec4365068d3e1fbf0c820454e3b7c
89df4c9d5b7b3b07e51ef743d0fa1a2fec8fa2530964e93aa349708f23a09356b40e8086e54f275f7c94161eee1fd55fd29a9a9034feccd3465973b3f4e01cbb205627b1cce2b7829b531db04c8dddade1cdef3b8f5c4c3b088b205976fcc41e13cdbe56fe689c2e0a046637d1a3671eb34fecbf80d5dade1eb0df9c297389d42396f3252d7d3ad92e49888a4e0e1ef34cce33f8451468f3131c9477f5ab5bf842c86acc9f7323f11eee56a55c1984c66fa67faea895b3c9b66db21666c258678d84a000db924ce593ef2a4d2a932b030181d4c3b65687222966d96a2c30285856b3826c98e1856837c8ee48bdd84644e4da9390114c7a119b5974
3bd3e422f4f325238be39988dd917ba91f72161bd7f1fdff550da6d81594f00127cb21a1d4372dfd7dd5b7ff1168bbb4feddacb7d7b098d40144d354f069eb4f2ebb95c2498a547235eb884c8ca90fd645e38cf87ff703ae7f50a0656b35f8f973e9cbb89c84a95db304891310718a2d16179b5de9d7ad3eb7b225e1e30065c4e6b0764de2f0e7443c60113e16f06b2cc5ebf661963cfe2fb1ac8b8a271f8fe564dee3e20c158086b8d19d6bf10762d13ae816b7cc7e6048cca321
736e3efa8360f889bf35d109dceacd12bbb022ef477dd4eb016ab23d03b963e5898d854b93d853d367b8f5daadaa9bfeb8bdb81071eec1f0bd2caebac62883a06bb3afe6488602b2107bcf3ccd24507f8d542c68a6e1590382ada922e2dde7a43583b90ea314540c7bdcb3b320a6a7ecddc9eb606603958736dd4683f8c51b669d7ecd7f79bf3f71fbe03a8438d9b8e1c6397c35e15647338b66933b0b63c5708f6e4a0b4156e4708918c1271b630fc3bc76f92c7b87e233e85707d8981d0c806871d7047fa0a718a4a5122cd78084144fc1d9dd4ffc0ba85729edacc5c3f8a15b05fb016b99691a69f2b11b662047f941d27b0d18e38b0deec7be901cde52d16da2bf7b490b4d12719955c365faa99892a5fba411f71a013ff1d8625b2e71a89b6adcb2ec0aa575f0ed0d86192019aed8a1d837424f7ff645992ab8d2f28a87975aed79f0c46ba092c2890e4890e3f08981daa0c2d48d4a52a04146d661f7c4af8e31472139de939ace0d0361411aac9b90c53367d5783d828f3d78beeaf16a50174d249745aeccc6489030772e4b3b0aad51056b2ffe502ab03bc3f9ac4dedaecf9ff0fd914ac66c27829b8cdd5da5bfa2f4cb799bf489ca1e9829afaba96f06cf947490d6c1a4629ab818aae32e1b5546ecc3b697a11d0136a775774398040bdb8dcf4a
be761c2009cc54e66bb044e61443366577fd03044dad9d5a4280e76fc8b8bde01eb097db0a29c19c1cd1e586085060b4a5c80b110a2f74ca01436dcfd31328269a3879817bda6b45720de26506ccc45802a35224e213438d7892dca00b5a308413a7f989d9286f23419a7c5327bfe8adce77086cb83039239bedd19b9f5fd519f0240bfa9c553f73be22385453307b06d210c99d8d6af8b53bf1cec2a0df116d166944699866235af454700e8a1486cc50a81b722ba0307a833beaa39b6dac4af96f04ac0de90a5b6cb9
86ead1ffac594d6424b6e1c9cef3d01f32352fbeea4a3662ade22b33bc93553fa80ad85b65ecb8e549a94b20934c8eb9a05bf36605b84159f57c661b755a81e11c13d289bb7ffe3a9fba22d547031968cc6d152e3f5024b35fd16149158e9355ee2ce6e2fa4facd54a249da7599cdb70bd00c1a06deecc3677120c602363cb1279a88e849f1bc8f9fae5e9e6378e7a7ca7a202923d52d793098c830984c3fe22237f87a59daa34c17e57ddf2a6135e91ff252b9ab642a3975f26172d51cc8ed86e924e55beb1fa9745bae54cc47bb6a21cf6123a1750771da215c0fdb70e2163c732bf2d9d90f8bc5128a6b8586f8647e401a63b96af543af52c8a4d4cfda0c7b07a3975c56b74490b6cd0f4d2b9351305954fb575a9ea37b25e71c0661ffeb2afe8e3366515192e9149a77796f3260b41d6b051fc2d39bd5ee53a45e8733bb48bc785c0
5acdbceaa3c9c9f2c4d0bd3c3d3432caed49d2bf94bb67138e345656d96c1fa324fd27a5189beb6406e37d6695f21707a29608a9d019e5d4f4b69acad4f106e7efbb8b6e7bf5498d6ae63b600b6d27ede29676f3b37e2c062c574e6921099fac2154f706be82c86c1ae68480c6a0f4380cedf218d9c10d3e068dcff26773df98b6bbf22dc2525e51cba318d480e22ee9d7b9040a5582588a9e95a19f5ff3b526c46205f89021b90dd2c7ae3ab42180ebed9527a94d41b9b09e9670b06e2bbea859f7c6187cd97ee1a5994b01c9f12a152cb0be76c2e06e6b2c90ecc58b81dbe63382e384b0bd93a963c0ca9ad1efc107f69352df03264c271c890e87f09c
dfd36dae1da1d7ffc1ce85f6d648f9a968200a8ecc41ad94b3d68432140dfa781c61efa8b1ed11d6303b1bcd2a62bcb6faf7af7dcbd5c81a7877ba9fc64c17c72cf35993fb1f87b8820368638c5d188712de9f896da7e53ea7a99de6bd16a994b4a6cd81ffe18f64eee3dfe75262d50fe808cebb5548d531e8b71aa9b7ac753ba315d85e5f16f0d52fe3d045a46c32cd4ac686ba6c2999160455a03ebd3a31c9fca26f8b1b56d7799b25c5ebfcb3c53824f5870ec78419660ca675b411c20631c621d4e7395dfcf3fd3b66332c2931d96afd4c24ba6b572d7efcc4bdf1451d728c54ddeadfdf78eca56e5fe6787b3597e3eff98f957d909be5c7f6f4a6bdc72c09c526315742d87d3783c6683c1b8ab943386b0c90ced95c7a4dd2066157b82466779e1b86c2e2a2bc75900099d6180e3471e8ce6669ab4c3d88df3b5b82d53c99f002db42858d4368aa83c2b96b01d3aec5027c1608ebf50fd287e5d5391c5b621ebb90280eac4ca41f349c17b903be33710d7f5d6ddd5c46b78c2553241dc65f929cdc509fd957cf117fff59e6aac565ddcc0a4dea9aaa418b31a1a9f7896dcb950c7f74030762409f13b1331cda0b7eceb35fa38e69197536b588619e549f46960f73033e512305da763adf472e881a2e59df3a79
bb7dbb8d89d8b6f4bf4d75ba01a5ae7d5adde012709661addbecf58b5532e1688ba0f1e71fbec92758c11f8564a107b3c8f061cdaca1c24fd1c7a382ff4a370a595a00ecc352d3de3315080860c0cbeb26c3269c1a72ffde1b83d6c4e0dbfc1bfb5d0e4a7df595b0d290019d670c968ab7ec0ba4aa47caa7b4477722cc04ba2d5894a98959893067e035e05eb30ae5bdeafff45825e466837fa80863b88ea76fc19d67993717832613c38516e6dabc02893b4123e0cc18b1882a7e0dccea77c4174846318649d79dfd4fb78ab0c4b669fc732e1495952b0b869a3dd9b4ebcbce4b893a69552c59d553035cb1ecb403091bb2ba0bd4c0f60904cbaf48b3a6d569a6737f1f4ac2cd141b74874ac722c82b16217ef59e9e701fbd26e9ddf5029f2768a31ea1fde11f4f5416e15b60e96da8e8a5ff829fc9c7efa9a4f57fa6737d3435b12a1931dd2ab98f4eea14738553ffdbbbfae882a288c83e9a2e7e4762213ad51d393f688054dff0a294957949719ca3142b26f164ca0a5de638bcc3c5e8b1bf3598d265ce71e12b82b61ed5f45fdb866c07
ac39e5cf75fb0e7fca60bd26027cb254061a6a3aec34d71b76404236131af55b49e82c705249ab61e6353401ef0b3489fee22ea13058d7a187d6272feee87cf410883c62217dceeed7a2432f20736743f6fd77790e88e8c8922f47702a9aefd87ac447e22427555dafa82e4f4e954ce88c93c65e799d6b67b3eab29bb8bc0931cd29f1f89635acf829e514cd6d00e044b063374368081ec13d03e250622a0e7b6303305341cfe2a2cbb7a874ad452e21e8d894a3f7cc248b6b82baedd9d5d8680448bb73430fc6033f0b94f6b9ca841ef1653b4af29668dc8e106d7c56446c52f10c7bad8717acde775c05e6d09c785141b841335b70db843dfccb5c495275abfd088f836e044405065fdbaa32bc0e2bed2c68f757900545002a7c1a9bae4df25da549d12638097547d80ce25569ad1e6c175a5910ca746f09789f03028feeb08120c74c398ecb1abc23a4be72e73e93be5ead5f0916836761ff5ae9df2d65fda83088dbc5ddd5b22fdff8d6e2440a9471ce2d8265baf88f1bd5c49d3a733cff7ac08d44e861245b19557ce7c699d2ce0cd6f878948dfc130cadcd9d3e6f5afa5c3185a7e17c4043c4fdc6108b4b9a4857f6d90b
dcee1c7deb797dd9fee25fd1af805b5d5a29f9b4bc3503b6c0b5650490748c2f668ee760a1157ade39865f890dab9274eadbeec945c7a6832187b2387bb156a7f8fd438effcdcd3b16d6878bb19b5ddebaf28faa3094abd6847aeb7ddffde98f251cf475aa2b2ec9d202e1030c937fd12fe18b
3572a1fe2ab5d38aeeca1c049dc375da82030a2191a2112b216395179844bc832043f5c825094470d9dbdaf8a049a8105643f10ab6e505df984619cd9ec837dbe36e6b610a910fae99da03010df3e6310630bbf387cba14adb4baf5b9636fc5861ff888e19971c9d0bb7d4918db1f4dd8c8bdb037dc9ef36c3ca56192709cf7663ec78ac60264ec2cb4e6f2a60b55cf97a1c6e35de715b7d545dde27d926b93c340ce10e66dbae806ad7eef6406ab1e5612b7e0a0c8f6e1d02e63deef12ea668732e321fc3715caa6aa1955fe83c30c7a360f646153a906b04203be43cdface08ee0e1e04580c07a86939109b3be4c413688cb4300674fe7342fe7e8291e7ae2655c232d03fa8763caf8d0c8daa69a38d2cae154536fac3300c66de9c7076a78a4199859
dcdf47f7116e04cd26a8130ec020b85d0feca5e14dbf2a1da9b1a84293659da0a07e8eb6f533092e173401e4fb399eb5646904e1908bc061cc42e6b2a94fd0f5e0e5a11338afcfe38849bc296eadb87b5bf7deb8820ec28d58c94f3c3644fa8fb4733ec9d45dafca17c54b72467ce6d81d3a00e2763ba4cad0521a0746d72e2b4fb238dbec6c8c82b3bb4fdda80e6b32f691935676b549427015ce517d353e314b750bf9c18ce9e12b464553d5d533aa30fc5640111c44ca55dfbe4d1f0fb6b9362fdd30875d70711c374fae40
b14a6a907b453f36c7e64ab03b3648f6b692d2175a6b70ee739eb62bfe50039ec577e9e6a4dfc464c8aea9eb170ec8b20dbc968def408eced0f6d98a9ca845233b236116823ba4f5d413d5bad6822c0234e8e146ee87f538d1070fe7771f01155433b3b7942a1fc613f6d10d30856b638a7065c00a3eabd1765fdb42aef9c014e5a92b5d869eadbcfcad69c74c14c337734d5271b842df79b721e3b7fd9cb3588609b526b7328f9340507b883ea338f6b98eb646f54be7b431c2710c0dcabb444f7b83c45744647f5e77d19f43bf40c3c5c194e1e3b88d28c556cfa7c043d5a6ac2abc91aa1342226d
21a3455617002bea381fd2ac1fb0ab06fc6403577839bb5e9124f274e25c93e6952e1a313c50fd633f5e23f5c97f731b3bdaa2e754d2bed85dee6e904d6bb4417d3f021797997e4de10f8b3cbde17829f378954bfac521e62f5a052a95e1ca398bc0f220c76d96eee809410d9d0844d6781257aef5038fb459f509fb19f2742a33b10db21e73a796ea207f1cb27568c11a4db954c16492636e17a693cb9131cb9e77f4aebb3c227b3682ef686d723c011c75b54932b1
4c4295655009e9d071bbd4424a5a1a7d15fe5c72a0ad231cc4fe2dc903c8d6c8125bf458d476a392abe0ffd916465bf078363fcf5851a88d8f9e964b6d5cda3ce55fa26a9a618e74bb906566acf2898328b0cfbb8a93dcd78fb64840e1cafa0887ffba460737083870d08cac94c011f7ebef32c7e7ab1e8d9531be398cf784a88ed1c2649472d393d79b9a0dcf72eef21a30c8b17239bd8e26da9ea9c7c1e83c5dabf8be7ea6ad124fec0ad590bab806ec35a68ee8ff69e82ce36d45d060742967f59d9a88fe432d74e0f6c3a381b904403e555c7a59463ebfc424db7ca550462073ccf845dafe116f78995b034c682562c25c754b0c0f0f96f7293352aa2a18350a4d2d73e21e901769646f184fe57c535f046043ceca7c8407306a8c6a14a47cfaf80ce131accf7f90446f26a7e4450384ed7fab269cf0a581815794bf1e4b26150f3d63ffc3194f748af9674288741251e12c1809254799311d635e471f42aa712d32525aad6e8c6ef52c55e7c32a8c356aa622caf8e1624652713bbe380eea082e3e1c6352382cdd65359ced97641dc0b66b66ccab1d60c22f3d9330879a1edf9e46589981bc15fbafa53e1ede9346
386f5a7cf4d8ebd256bf09a1905df51e359df7ac8bb3f1cc1c036039f76e11388eb0671e6149026cc2129a99e10b74a3cc7cef54b496619b062246a9f8a7bc8032b4dad922dca1d9e35414176460148a5f9b03b8f7240ea11cb8ffdbc6e7e75c6b62178b6a782f8caa148e74e5759b38956910d9a3881535d2b136c1ac9ebb3c06b99ff3e5b688d4f6b13fa756263553446c688948c151206ac8b701e52391594fef6494c18c27ebe0474b774010463c863aba667db005832ce1204697a89215d671e5ebcae4edd97a97f712e99a7b7cca97076afc5b5ddd3da43c42c87dd89975389f6b25aaffb56471cb93b68d97b06a3428728ae050a0a0d38cd3c31f8b2b191340c313c94cb9d12027ee39c5826852905a5f419e60e9d6e882d17aa277bbd43e30eb539425b76855bcbf7a690c8117755c35a703b1cda976df0d53e7a927b4e8e57d9125775e9614778cf640f47c2a9b99c81b9906be96bec9ecf11f7ac2db1282d2743124deb6265bedca8bac487eeddb7014bb1387631605376e24a7876155436fb5c1f665ab82c117a2f654073ce81648c17cb1695484e48b9024da8e74033935d569aef157428c55cc1c7851fba2b0756d456bc9881e5afb
193537472dcfdde265b3fd7b93c9ef0c180964fbefe4f4469cecfaf8b0c351fa945c8d3e0ba13cd531dc8b7b2436eda4a612dee529ac72f29ec8a1a11dd480375a7566df3f19d10109d900849f3e51095bad5d9314b5b27bb2222f4dfe3cbb184eaeb3117f60191bdfb65c9e99da2fd769b1ab5a6ae8f40ce1adf8
0f6db80b32b696122019315645fe4f1c89e93371729dd25a81faea0e64915f1fce159667b5c1a8bdfd673f0dbef8a1f43c6b13dff747b5539888b40ceaa39e06e3c7f34d5176f69442c51e900a85747c502f6359c6bf9c7e424668f50182a68ccd4ba6837e6b43069823dd7ade17e30b286b570b0ef53bef73b89e313c0f98f4411ea9c0b198f28837dd81208d467702e8c4eb8f7298b0f4abf2890984bd559ddd9f9ff1b54239e64aef93972585f3b5ef40f898b6b60104c7f217e91e48aa4b8d6992efc7eb065f4903f1ca7b70ffbd4fa8ae567c9386a7eff99df0db3d97203a5a4f2d0fb9170a9fc46e2ba739242fcfd2f80d9447daef287c885902eb26ae33c7f0d8e6ded8f54304bd7670b2ab34e45f4a61538fbbe9021c973b632667bcdf5d11f06b7b6f94a42b1d083172ca892e5f5ad78a5f68a1ef2b251a2372f71f292b24d4ee8288f18072514aa29cb367fb69390c83b0f51fb443f0ceaffdb3492f637ec1a510531a166f69b920bdf54a4799652090111ff27d63f6406a07edf3b63f7ac837c944643c6dc6f6d94abd1fb8ff2fd9b4690bb6141fd07e8619ce6bd8925abc99b003e1d20df278733a6b5b28fc22f3cd818e2bb6581e9d909d470d7a913d8eb7fd1ea91dbabc4b9f4202702108bb2de3c863
0b0878fa2c5a1b60fd3ccaa27369e9617e6621631c22eb2de5691f8cf3cfe0dcbe92654581408554b3fd039d6f8221860713750db19fa18174542849dd089d1d3925e7eadb1ff72497eebd1e3475c4047caf64eb908ca2200ffe6cfed6429fe2fcabfe4cf9af7067c25442f816d4a28727b62b0ab3764593c2159d85f65b71c218c5c6548d7beabb22b9a15581df25211726a78b9f70e9286a30df074bb8bdc2515291d26e2d659bf4461f5900c1d7a03f3aa7652376f84ac09b7ecb08f5d90d5606903efbaa0cd47db854b1aa57
40f17c08b881f045bae225912d3f52d32ca08b843e2e9ae72b868d799c4de7aa0c3c9b1b3389d34634df480855aa5f704474b3f693e0c5b89915db50e8f75a3397b090d4172adb9feec44b9f1c1063a8d582327fc7c0c864b5ec5343664e73cf6cfc923d46eb68948ca5cc39a7ab011a8aa6698c4579b877c647f11f4d30859ccaef56bcefde73c3e831352b3c2d9af77f4bbc3a348a0d47ed59dd0918321d16255f1f99467e20c3493ea1e8c7cdede895eff4afb24c7a29050bf10a576638a9
6a1150dc0171187fd9af9d93e9726e4a473582e0b01b43988076ccf4f365ff0399602e029994045e58bf2dbebcf2399582f3ac44257f7483d483076f02737fb16cbfb4c5294ca425eb1c21db9bdff745358680fe3814dbbfa094078c7a129113baa14402e8fafb453398f94e4fe4216b5db92d565c6c6fc6bec7edf90cf30c097fcb9a0a74be400e510d69ddf5393b3e0bf4461b6be1352aca4609690feb6cc881ab865cdb4018c5fd53fef0fb2c0f122b6cdb5955118fc5ed62e5a1b38b37c45b017bfa13881997211bad10a06c64cbefe092e47bc4211561d97cfcfeba1f54695559c85e7b34fa6641ca109293ac545d684c35449bd33f39c713e41dc95a9f11ba0e8a25766bed58ffea74146426a277cbd8245e31682be8c53fc38686b94df45b75f1c5846d9c75992a863b5204b58ee327ec2e09305410bb90e06dccf27e7a550241c3ab7ef3cfec64a7b6bafe222a948d0ef7e256b604d46dbb020fa2884067bb0901e24387a072c951ac5fe7a21ec98d802be3405c9d2691580e6693f1e9e0f271551ce06e6e2a654a2da3b82337feabbb762a8b1dc18ab504518fab3bce69509e16eff37e21f91095a8f891e310dfc512eb2e27f93217e0073f7620eb130fa3a8215fe467a6ed3f93021837097e6b7ceef88c00991dd2e4d383b3635b9624f7a9c53c143b8df048d6b3718a4b2a281f4a75a2c877ea0c8325db893ecb4469786124
5dd5276d892f764d7410c3e3a21a6f92592bcbe5ba99c0ddaf3c5103a2e9853574abab5ef96e1141cea2538020f6281e2c5c9082b63664b30391c9bf2dfe1c189b81d445a259a052c3da35515fa3bde06fd53872f76e789d9a6f0a26516bb40a338088938851ff542cd92f81e7f0045f2f42c6b813134eb0f2669dd7cbf4e036a435fa047237c10c5c4228071a621a881d10d50badc0c57069e2ecb62a6907d01ef2cf
1eff2e90f27900a7d94024f56df16dbb0838883d2c575c60e742f1bfb518c70e6577e55a1969127f2f67b9a34c869ac9d03a1dbdf33f4d75cb553dea51c56172bfc77ba7ca4fc4a9878087766fb047ac834b47bbe2546f2614224ba4fc6002b1b325bb867f06cd5beeffa4233e03d03c06f23913338e0393eb3014ac0b96254db33deb27e45e8f22d67f0ef515e1e150e5ed13070d6f787c9e0078559432fd7edbcdacf0fff415a5eaf2e3eb1db4108cb7d43da51c0deab72a1b7742d05f260420f9e4c0540f31706824c1b943d7b8d231bf099a5f5f02f682abe242c2cdcee562d13cfe7c034155800fdd22c49a94eb5d4c280aad58b85a2f2ef4d0c53ce493ec8fabd8bc9c0dd345904d2fd1ef9fd27db270e57a3c7254a7c565a26fefc50bd9069c480f07490d9de6fac8ce40b2371632773548c30b51ff876ae14978ec51e2cc18542dc53ad0c186cc21afe265
a3907aee627d31b6557c2478e87d22e618908b050b24fd1fc5d0848de1b5abe772f516b741fab2a2939f0202d5ceafa8093195a64ebae4d4a608c42a5b62bbf32dc95531343b1c0aed7c96d7d86d0b97c2fd6eb7426488c96332cce73ac3ad358506863cb9e24494b2df59ae14f495124caf581ebd4ee6119e3d686e85ee5e628d7a70b817ad32c4e21dde6a84e7c3fc019ea9
877e2ebb48008a637a65198437854944abb5e6ff0a6ff9724563584f57a1db72b364a9a4d5951e8b01eb77b784c00a7b72eb84c8f2de583748b41e958a27395576ec46d67880813fb2800a0ad2298c2647655de0874d074ed05997deb807968cef9f44f3e92e3dd2f1fb4517d939f9fb60e85f9f9d126ea653df3c93dd84935b74387e2d324d5f3daed61fbed46f104981395d29eca138612a29aebb4002fe9dcf52d94d0c7113bc2f91049249d9b52666b5bfe8ded6adc3a49e7935c3f9b8a8f78955463999e2b883447a79020457a1e9ac14d2a84c01c8ebb8c952a192b863c0ae36d272fc269bfece10eab1efa2696300fb07224611c8457ba9640f7e93220875db9f59b536f95c330a67b46c0a72bd8efc2af5bd0cc92d4d40bb4f8a1bb8d932ad8bf3c1b597f3944f9b87739c19c8d3b41a83ec9adec7b98b87a056914c0711b06931cf9ed0845416
65f4a9463e61e9682a07e73329932634a2d2e364c45b39d4f86a7bd921ded52b8492be070b9200283c76232501fe80a19eeb7eb4b13c408f3df64f62b192f84b88da6f2e44fc527f5530f80612e226d936e23125e38fd8f6a1ffb10b8758caab957470645c3ade9166a86af609377fa700ed9e9c653243f31c62974696502f5993b882401265e62a17c9af5930c795a08978c2feb0552c0c2ec65206bd3692860f4eb0d896e4e0c2ec926e6e72c2521a43
06eba25b7cf31af03dd5aada9d5c522f59516bf55644b5bcfb7d3fc9cb8ddb9769c365b95626a8669bc7db4c30891aaa98e67a801a26c6fff82cc7d104e275aa3658d559b326f5eb26c3342012f679d369f5e7b365517863f5640b73b63054c3cceadf0518a6c74ecfacad63f02965f130821bd65253722c715d4a199c656d8bf8d85557f961ea0e33ee9dab10d46e570bbc85f7375a3ed9da44489ab45c5d7b5d93c1ab30e31c5538df1ad24d12173a72f798c66b82a7b9f5fdebb112e14f1a744cab9922f7f9c5667df5d6d1d161f7adae8048dcf259903b80b4e2a62144f292dbdb75f90c799d6812cf5713eafb5298fa0fc4173b54dca45c8c3d88064bb38d6d154d863970b2442cc445906397243809657a2291a2226aca708a47051b106264ccf645459ab9c073322acb60f207a310d09cc247d5d834e87557b9cf9ed47dfb4d96fd3ab27078e5159c0b42fb6eb83f650f9f20d36435899e6fc67cdba6ff25e837830d0b0e2ce186575c71a7b72728d26ec4e569aac32b1533b999d203ac288ade1fcc3e97b498c3754d53f0b14c30ead606cf23bad280395695a5bff0cf7659a814dd53772c5e5f54f5f37a16577468efcb37
03ed180086e2803fe0cc46c367c2c7fcfed14c0298b2d0617e4cad6cc8ae1e16ab13af3971863fe94ca761874ef00959280fca47da315fb23f4c9034e68af4de74178a24b312f6c98434b73917b584bf3f38742f752fb20ecbb530862a63379db5d97ee6281ee542354528bc3480e30fd17ad5b0fc80d8effb91d55cedad5a75e9080c4e291b9ce21e78143786c3a311797c88dbd7d75a21d7d3da45eb777b6b5bc51e7d212c8596830a1a0417c0185b012c331e7cca77d94cecfefd70fd613f57badfe0137e5dcccb45a21654f10a3c5643d918dca07bfc5b2ab5c4450c538e802a3005829f1cf9e0f69b57599b573acdf914926457d20e3b6bfee3ecd82ac2b1673dce3a5dc614b37bf983b2f8288f4a65a403306e3f48f3a32afa98a54344f542a972809cac6587e072f82e892f30ad14da38dcf4c558e4ac27776fdaaf7d18e3e0df2db59d576387f402310674e81c4e68908053b948cbf2c4d28ef23a1a4b9efaf922d47a9a40f05a1d0b6f2feaa38c0853455c8015bc667bfa56cdb81e5729c724acd4c142
fddeb4d7bd2e7da4a17f9d3219846688462b7f78e2243dedd770b5461e8140985ccad359ba4a279f11806a8bdbc8f1213756f44dd509fa8b2e3ab5480b3bcf3472e05a697064e4cf1bed346009b507722e600cedebba186d83e17eee4630435f6006205dc177e41ef5f1b0c03689cc25ac41eb8ee1d5c71ff512b152aa9ec72397ab98fba03059e7b57b1f0aeefe97e6c63d35aaa1952819678806c22a637c61796b686e6394c2146f91b8f0d197f496891555615a6f90fae03b74fd319a85ed936b7cc2be394a100408b1905f1bddf820317bb07b7f17cfe63335da0c988564e0fc1263e083ab091d0f593d16be8e4c5955d2da0c3bf3f542791ac9cbdcf2359fee402127771c0fde21d36841798b65f03d75a5e8001410b8a2c7c52c6ee560412e6e3eff91c27fc5cae03118094ab332ce97d85ade948f327437240123c669dd1550f76031344b3cd44f1891220abe7231677499386852d83028cf9a5a68febbfad420661082945b477a5a7f4a5199c6742a46a9b2dbdb9ef3d45bb0990bd972818c33984142145bc9616a69e390ce9c29152914e85496bab68d8c4fa3c55013240e773d412ee73ee3df1ca9e27735a47d549b1175e6ba9a69abb8436fda19e57fcf9d6493c4221f937ae645b66c4b804dd9127dc72439b9b15598849879cd35cdf86c066d74bcbecc43cf11d1ac74cdbf5495463cc54bf6b8a6ef25b35f93b5
b1ebc1e9d459b34757858b6d98bdfccbf31ea7128a08cea8a3a5440feb8dea3e6794c34d5a5bdc357b10faf5a886764e523ccda1f29d0f3596c1786c136c34128c0b4bd82bd1715146ae509b89ae9f14247e615f35917dd038c14716cac6d6f44ddc4ea562b751ca70594e9ee1a7165b1920663908a4e1ee35e710f24597a278c2b8c10f6e11fd8bb469
bc400fda5d7b8107adabbb0ef293da07f4b182abf21abdfc2cf251c865c9dfc94fb62baf4e05d9ba41bd6d57305f39a287d23789ab3c43c4d1b29aae8ffad8829d98e964596fb74db55e96f7904b89145e03a0ae4965a876a602576708d39f60cbe4ca59223bc44d92178fe24b8e123f322a3451fe37a9d0bf48a5295069edff09da46e837304c507b086e954aad17adf00b0b66e9cdb6dc4cfe10910ab6bfe35e33280d0a1b06a6d1e8e1489a97fa09d48e1b23403edb7fd1c32a4beb966269af895aeee03caae021421e1d8597c395eb6138a0ac1e982168f175e394d81ce86666a7ab44f6c7c4e18569b7c4a78c29889339fc697753049b3f2047bfe7f3a14e76f30472335a14f75aa8ca4d934f282687e0a2a3b7c3aa3bec1c7c52902aec1b6d6a4b4002b4c892be9516437e9f0535dff10c8921e1edd1ee0206c45ed01e1b0c202c02ed1e14cb6e01557d37c1b551c7fba9a62be52b18b1567c6b1005be9ad6a8c3f38dc0e59515aa9b2dedacb86c2b5f4bf15dbb1d02db94cf1ca657706de61f8293cd55297dc42aa324bc6d0f6558fea31e278fc7cc9998c7b28ecb242e7a306f8071
8dae387897329073c581832d59a62fca0d9ff5e126ea600b0aa59986285752970acf607fba27e13b6964bd50281598276c3cba190820b733c0d970394209cd81e121b84d90e9cbe613e2c8b1960bc33d4b385883ec68abcc4757cab0722ef3986c75e04ef12dff31674f610bb5810b17754456b5f2865664361b3d6e0ad8f1a45d67042a8d4e07511bb16a497bccf35333ffd126c73df94fafb379674c5f2b43cf688fa964bc6d3779617ef827d3563c84dc7c17c483400c95014335ffb199fec81c9d37ab8c2fbb669e71f436110871f58cad49bf0f12d0803296d2e897d31d8d78c377a6a418216b8638c571c37893a27bf51309bc84b7f967723d877a60c662369270ef026a933d01b82f82e6c26cced8bb41235b6412707acd9ca927b4df261971cab1a361f3441600829f5ec12ca0af69519c4dd76776863749490f7234517035a156861797a6306d0fc5ec981a85859780aa8b938cb8899a6248815a5ed37808711d49366b54cd336006523457af0aca2cea80396b3bbdaf3c6f6580fc52fe16922ceb0df8931dd39c6543422130593313d7473dea581f965e44f32ba14fce87cc8c2074c98e07f9a7c67e2a16433bfcd772c2ed77f99a166134e6fa12a47d3b
9ac913c35e2a427069ba77062b059d6a99100fbd9b680b5189aaba45e9ecd7df630c7cd21f3669f780bd3bc53373babe8cdb9bf98a1f76fab00d7ba5372795c97a7e9f887c47668c4d3bf47f5a2109582e0f0a77e2e4bfb15ae85a1ccf0e62a5b6f6181b429ce8bc53f15d141103c32d675ec1b3d553970bdf4584611d43bee96875d2447448c3781e78c3fda7731a5a4630139fa78f09117e85f40ca1f0eca37eae8e905945c4f013574c2dcd433e304b645f90f8043261eb036bed35d4eaa518acb284167f6e9fd8d8ba80bf6a67146575c14bc54e21cda8ae1b2d391bacbb0c12033840421d13c70e2a2791ad66b7207be4bdacd660e4b92894ac1b8c2780e37aa9ccf29916e4faa643a313e3461b868964d4fa95abf822de602bc077a141b8711543e51dff6560e869b7e1416ffa2ce256feeb87481ab49be2b854fecf739b913e4509ae3e84677d5fef112cd5f4f99856d0b54f8e83b61ee5e1f51e304bd432b6481e98c465b573ea1cf927b01d15f9c34ad47d13fbd1276c27c00f43dba145
9acca6bf2e79f5ea65a7403d598c658449140d02adda83343dc26bf54ae1ba4bd4c1a3b48abe4b664f6a910a1126f9ed9ad98c1af6e197748646a6e4ab32142e2a4bc8886061901f53024c42bbe99b3c33316adba81ae7515c074ee2d7fe8e062df696e83e0ba60e74f7d792b8d1e6320a1dff563f1518949ac29d49e8fb665367ad9ba1fec0e9605e876f060637683a22a3b6248cc2ee0eeba8d992c89cbc815dd3ab6319811f7086b9df79496dcbbc291de61058cdce3c5e33f6b951ef96e680e9fa67347e2033d515bc10a5014ef34848dfe37ac738a2c3db16e686707ea0742cb47d5e56c49f4c76b933f33e26ed939899d6e0a0bb5f442b48e35c5138d14ab96f0e8aea868c3f837c9bc553381ea1499b3410f3eb7acdb917d99da61fa714af1a79b5456691824586dfc1b4a70ac7b486a29ba4d469b37c6fd6611098c965d2ce63470f8d512a5eaa16d622d2897662d1910b4e654f2008439b93502399353512
271024cb4a6790f2bbee1d2841643554befe6275c8258637155188c8a55a0bc9044ff31b3ae6bef351e71f1c0b6641683ac9427a5d4deee7f51da8d32f5d16575634363dde6cb71b4c7baf57d00d9a5d7aa79fbf50850cbf36485fc7b79c557d8e42313d784fa4acbb88492b9d086fe9a6299288501a259eb04810ecff5fa19000e5016c7c8a0770e26052102a7093adca79945a10c260ed844341be09037012feca2707e53b030be678bbfe94deca16fc2f5c0fd399c19ea4c9e2cc
24265cb04b5bd59840a3d2d4547de1c7ccbcec7a7735243d7f6b01f203a3dff44c4e361570094a427cbeb2771775a4ffab1a113a0558c1e75cb9d872cdf20bc19b4acfc2f921904734de98864a1d59f94870df745cbdf83cc39736174b0f0e20fde6acd5008e1e2713b5e7a756a1f646e322b39be5edc1176eb3ac9763c48eec515eef9aa8ff35f54ea276c82cce313f9517214e5d4f26a72cf937e5b22fa72b1e4f9462615be44d69c398489c67ec256e9055c0077037189ed57fb76e3561ae4416121d347f004e1a0fa77de24cc0e0d9ae11113ccf25835ecad99cb80a70932d1be517aeb18e1ed203a408e10523e5b823e41dc79d26a30cd59536dd5cd630fe878175cf56356f635a527e912a9fc2d190fe458e0286c9ad1414fa1291dbdc51ed2fe4945d1c874a5165f11922accdec1232a4145a7c9dfb4b260b16b0de29e659550186f1c75616f534bc21c9997d3b7e9e4045ed2b1e0da337b0465d80f6d9539eebe9e0690573097733d06518df81bd82af17ae6b6ddf45bad0ac72a7eddb479a98f143379359e98aa2fd8ad9b87aebb9ad7a6bbbd64238681673bcdbe5e9e2365689e12af4d30ac1200f48c6cb008d5e2c1c03faa2a713bf18524c7bab07d4ad0333d1be33f17b38bb134653be7b841c587a1352314df9531e6aee48aa768a55796dd7311f52f8bb757c2e6b2b0623a20ac2a3dccf505e
ff0d38d5fdf648deb53301adf4da0b2d961b017153def9c83b0d507ddc19232b88ffb23d677a37752909faf790fab9fbd8c0bce1f68fc0d0e15f7281abb075a404a2a8c5aaeee351ca18a512ae293914e316e301cf5d0462c802bf66b06cfcdc529807c8ca6ba12a55e16a5a9ef33df7a12667343879ed9edfaded6b6f87debb144fe888af825f1941fdca9e0a
4435e012675f726db9e576facd4eb01202856e052f4db1f16c62ea6ba4a83cc27912d77e4fec0d4e66c6f6b568c779cb2ba1e2b8c665856ca1a175f4c5c96abda89ff22bd6e2fe2b07918971953f4b4f5d32b68cfb7d12dc80e8e32029da89c9ade47a40549ad344431a3ff88d3a273609f07a1c75caa9a1b843dd39803320f3059291ccfa8a8c7c861c1f06fc00d68992d31c404b98245a9f21aedf6e22a202dfbe01ed67a7a38b5fcfb1d912f9f71991fb14c5b3a666a6122e01b0074fd3ef3e26643513e9a678811f7c0b0c4a523a72722191d4e6c56e44
c18109a8aa01a5791eb3245c0acc04110048bf1feb62d92525bd2e0ad62afa87bca0553d3905d832aa3b0e53990e3ccc954a993d651d4eb1861e267520a8b58e77b51f94202e1f76c34fa43001f6d3d2d2ada73d20f1c678b6be2a0030d84bc5b3a863fafe12a079db49f64713ea7fdada1214119f9a657c3fc9f314971664d92d1e0f4d6c473cef672b94561e3cefd92610a432b5261e82f36666a84a727052100173bbf923860a88a5ae1cf59e60b5427faf10f5789704a708918ee87f81459ca662ffaf1d397982c88b8413656217fe86173be6a9d96604a8429a6321987080f19e95984dc4f286f1e5ee6d0349f29608bac380c955f8f477c02a94d9d944721ef564ce9063cd595a9d08614aca2e4dd8e44e6b80af3d1a7d207b2b1332536c8aa2638ecd3d1c49eb4acc4ee647fcfe453d6d8118d6fde8abb1638afbeca7311869bec9d31ad5fcad2f0b50a1434d2171b1a61a59eea5c5da10db074aa68675a2efe7c7661d7f8d75011fa2e78d04c8fcd8ba9bd88265c8444be80999471a48fed02744e211ed8945132425028c370f845e9fc51888a189e0b1569ab64e882e0ef32e9502bc8035d15b5c88a542347b6bdfb85415aa278a3faed6cc761de7706d9a0d5648cc71b3c3d51f9c2c7497dc7bcac557a866adaf4d56eb8f8cacae1c1caa381b8bbfa37326c7ed4723871c17d1b707d75a74194f89fa356bdd23f7
d2bff89f1a68848286570f9f8d828f6c9dc8283807fa16582f6d989bd9eb42ea4e68d9040d786c27430b5ea86bc367ac38754feeeb0f680ed054b40c54a50f224433918e329714588e9f953907dd8ce9fc65f6e7930b96d2da243cc85c90e7eb53e8de6c158a8984a0b9c9887928c51b82b9f6462823508f972ca43f96e0533d988ce3f9b4e32b329cf66fd3f7784f339b5d4add9dce282b154dacfa987834ce429973134cc53bf3a2e083b75d831f2bb0cc10ec4282119a86c0392fc79e0703c5f5e1e6c82e6d2d963443a77c794587dddd3faa323223008e8514bb301096a3142ac3c9574f00371908070aa63f07cc6fff970c281d2e6afee4fe02ea0e8bb175572b9b9876e84b2a59ad7bfce2136b29804b572e7191998c97943975cf710c5f5ce122f5fe78d0076223b201b069a5df46dff2b430df64ec069a8699dd9f30e8ca0ff290d31a72b0648992e87e65dddd8ccc0385e6c832e524169847ec83bf4e09ea5f5ffd8e9ca23e67d6279f78e3a21649481bb4cd05d771c713
8de331053fd1e4dcbb35b3486682ebc90503b86f6be1c0d61940982a8773701f5d7e40df7369a2e2ace2bd92c2ca69000fe33e218236939815081a37d790b6f5139788bd6e2d572382b0cb44d8dbb47f881e65df707db93713aff41df8c69d720aedda5ad5fc5cc3c46fbe76df9d41084a40491a983ef75e1e402f0713cb97abac98c79f061c318d
07e6c22e7d00cb1adec45ccfbb8b43ed5fe464f5113d3c4d52dd0d2d38fd57b276efa885b76ef627c1fb6802a234c52e3e47932fd9a02df9a61ab517d8a6f719c7a697b244c315bb39562fda6fe769a6c6ca79e51400dda489164547cee0663fa3103b18dbd2a497207a0fdb04e3b8a49ccb8ea8a1656e55df609ebf20c77af1d76069918b03717efda9e98102717b305f63dbfe68a72eb0648e8810ec7ec96e773144286df9336ad42885d655fb6197bdc064f7c94b81748289e81bbd51257dfda71538f556e8f22206c90e7ede7ac0c399876be2d3d56a8e84121fe5dc449df2d55263562d725a7ced3d940f881dc40338ca5036ec0836f030a97146bafcb8a90652e67f92f9d15d586721
55a764fd94a0ae2606dea0ada58d831738a9e778533acc36d2865895c37144a7b2a3bd4d0694aec8c7edc3e9775d9d248834c5fe0d937fc6cc66e1ec58a1efd30dced22b106c4a8eef90acbe8c0ad307fe34c7f9811530cdf8cd0e64812a8040fa7a5eaab5c215541b59e5101ffcc0d6d5b72c188d27a59a893524a9fdc2c1302ed8784bef7ea53bee836db87c4076cef02af45e8e83dbab3806ae2be5916ca2b49f7d51b4d716e21be9a0a8ea552e7628de60931e9c0cc337f8405a21eeaa68ed95cf5e0e2d2d79ddf7846b58ff35b99bb5892d2b2a8e17c5b9f897df710e6ccf7adadecf69962a4a240c972eac977d806d7a57e1661014e754224170cc8eaff0d0ecb85542bf5b1569c5a2e3f1062e02086170ec7fb340c9d988722205f488ce0952c6e1f5d44d2a356ea4b8907ac6a2d9409f87b985b241c5f2e991705794e7964f9c0cef4e91b96bfb80379219cf93b5bbe4ecc1d2a5f9ad5792e60506e309504f12c6edacd520db90f8dff6ced5abbd623f8fb1d6a2bca8333e938478dc72cbf8177000c18b3bbad925846928e04e521958b2424ac56cf98d08fbeaaf5c2d047b548e11
ee9ba35de0e996f159dfa0fe30ceb45198167e2fd699b5a68f3bf4b710844b21d32292358a0a8301ed3b55665f50e4400bb45d8492117e30fcfa7eade2f3fb14e57e60b7ca9e81d4efb6ef61552d12c1000b72a582c15dd9535746baa92362f8a8134685a4502d54a91932502fc8dcd9f63501154c41a4456943e5204e09f363e4c2dc948826ff6a2b2d3b0585b1e7434a4c23aa24566987fbe8f862d25889fbdc181894c1a7efc11647b8f0d1b4b8af8bba7c1f9fde60fc9a2d9de21e330516ea63d352cf28a753d956bbd8d2be415a77b5a7d9b733881f5ff7c95523ece7ebed294b7d2bdfc826eafbb3a783209d84fe51f351707c26d9ccb0fa82c2574eee0f852758f61dbcce7f2405b913967f44e9c8d1b8a87794ce6e97d7cbf63cf4bc68ee
e30a45a22a30acc64166b5cc389c5b8a35943b602cb5522706d04f902cf8da57e6fbf4c1de267f1238a921f292685fb9645f693b728343aa22b94d32fb7ccc3c6d7fde130b2fc58c56621b6200feeb00757b553bb4f92a58197a9f079399493535bee75cc05b8f769d8eecc5f975aa817a12a7ebe0f87f7eb08f1d1973e02adb7e09e355ae8b8ff4ec4e995cd96e589b6825e8af7adf1f3a80466377ae2fdadbcf819a6993774ee4239472176ad15f5e3ed690f95cfeb3dad221384f10e6f7892a2179
e8b068e3555df9d83e9a174ddb51ffcbed45659dc5088b80557cd6e526af7558461d54ea7ff49867694d34d806eef01058ac4f553fbb891508e072ab781eafff0e6d290f56c0ae9a1e79d01b19ebe24041d33e662f184533744536e26fd43ec7c704ebec9c16762c9dd59b59e45cedd9725828ab99a072fc3eb5346bd356ba58c1dfde1d839537c90f7db7c133be9c280d6ffabbefccb7de0f0b4210bae3f5596ef85b689e9358c0aabcb1eb8cb32ce3b02818093ca718d7e6c07394c7776e18fc95af01e108bef6c7fd239a8d66ca1324f433719331ee26840d7f4b50b4f2d5ac2079712787037d44487b42822143d1fde7da9a530ffdef6fee8aa6fb32fb1362ee139cccc0005fcfe165c8a37da750ba2550beb6ff1552
7cd44b42c33b7ef882786dd20f3320857e5b067fc762c1e81a2f562799d071a119c52c6711e6e0c9c73c9b11886e6a7791de94160b5179b8de4322f2d7e4e3b500ef174f3324abfbc6f716f81b666d8231c94f1e453df99f563912b1e382220aa36253d29f47900855c992563390700d1b591df43c5c3b618f869712b65660f36cf1b7f30d28a7ff3c51b3b26dd8111f4a4977c08a38d12ecf1ccc69fa95549c52dbc287c243ab0653b65cb5c8a9ba53a7a0363e4998602ae75d0483b29d715bc25234c6c003c59a1e2c9c17eaccc22857a018bbe7d2dafd32dc3a5b37b4169a6f6eac4e62c668065d87bda3e89cc5321d5592b7
1f1cdad456e204ef5328ee6a05c311e112be9e1748f6c01a0ca4a1585057bf5c534c8ab47d98755887a4b622e32aab438227339cba3a0d770ac3b0160528ea8f9e96e7ab033496d8ed9aebb0e844ad2de84944058dae88f7acea61c84c65842ab2af686b64b91cd4bf1e7b0993ce5028242f6fa6783bbd86bb60270487d87180e5b113a500adb49772add07f64f516c62df99aff5fbf8ef30fb6e2ebf14cada3c6c37ee0f24ef8767278ee1db27eda34d6a360a28168f87740c1b9a18c55845aaa1746902f25bace6a2da7605766cab7bb54329627a7753c2a42585d3aeff53caa
82e2677f0a36a8a979c5d185cc8af6c2beaf5c485f6bd1c7039b7847be7d9b84b3c33443a08f131d81b33ab3dcb1f52b0c60262ce74b073809d93c569ada7369b79e01aefb4e33240b3aabedc42a135add86c81f14e47894177e7cb42737aa512e543d6be495d54a442f89f9d30e623bc4b2845855aa8560e049da2f01620f5ce9ef578ead96bd84811e2913f61627897d60690d18b3704aace5eda57e7c913acb89f7f0c2bbf31bac996b0cc10f8f0202b09fb7f8f862783f10bc98a38f7959aef4ff6d0c1a1f83475baa7ee7b014b5d918ba69ed1bc80e99e0d50dc0cfa46cbf90d47f9db481a791c79a6c9b5e21db268897d513397a5c1b9a8a2237
22bddee568c224f4f528433f89f663595ec5f0903864773f474b85a7d4eef676dbd176708aceb80395056ed5857ed4cd395831f925fd755648684d225d1b19759adf5429fbfd695f6d3df5d6e6d9bb54249c1457d6e31fc59034de7f2ec33aea1b95f841cd8a2238bedc23a8bdff365707dbfa1aa13838ecaf1626c57d11f38c7eb4eaa37b9653195ffede89adb438e462d3b88da9a133c085860fec2a1f0289c2f4829d5588ec5faf3bfca39cbef960ad74945b588ac551f8e649ca549aa865a1c1b74fa35725f19c0e28f9dd13d8ad65b57d03d98a84daea8cf81da29ca88074436453192e93c43ea6f6ad298e223354f701cb196e12dc197dbc2fa5597cc57a3e8c1206f007a786a9861d0f9f4a558a777fa6cf5c4fba465c9a92e3fb3402243a1d61cf25bbde8b6b47623f8113c98c58199a039b266d37063e7607487f68cc85afcd2dc050fede135d9a3c6f206339b3e11da48257ae0b611912ba8b66b6637fbc24ad4816957e331e98f85b6fc1e345c0e296fbda3a67d9e0b09837338b95bbdcb5f8e71e1adb4e2a63c9a14e611e239eb0d2354992f516e6cdd3d20065e47178cb64d09fae72d5ab1753462ba5c30349a401ecd9cfb658d4ccf79979c134bb7fe23e9222157c0b2396c82de23aa899917023da5ff6b00e3ad04f714aee4f2f931065c2028b
68659819d0eb6a8e822b14b4c1e15d681586217989b700db3d352ba78bb3d61bdc219382fffcdac23dc792df9f3c8eb931ccb0964ce37348e671275d9f5622169590fc0619992df6beeb172c7c47417b30f438a30c44f334438431d3051f2c41a5c15e414c0912cd05081d3b5b14d28343c27176eec4ccbd5afcf7f35006319c29fdd0304f423a9b544b0b01ceb3c970013bdfe09c0f8950c5ddbbb2ad3f27b852cd3a52263ab6de6daac80aa908e8d9a3e9b975318d356cae3b8bca5909bef7e91701b05f2b43e661b4cb3c56294047ef766e77ed8bc8d297d6462af743ade1c4df814f553ffa37769721aa4bcbd284502c386a230c3fb57333c7be4150c614a221e184f22dea2197e7f0df1e4235c79fcb56c5f1d3d95796acdaefa9c753430847c6a96f401a05dca0ef37c280cc2a274455522e0701a0ed045d6745763ccb7ec05abd9c4d78d89de85ab85ab200fe4bc6f2af22195c2611f821a7b0257861c8302d69261630579508dbf534dc007369b31c6d7c46872ca14501d342b6415090be71e25997e570a32cf070660a920a6aea8a61064ff71875b5b54b29039acffb040b3de9c45f5e86524c05848a656e7ff5688fa0db84d81da1dc89e81696e9b01100983d3314024205a8d804b67413948ba63ff50924c43578bdc1b225ef80d915bebb
312ae4804b964db3c9eb33f5f852b978ac406e04b743c726df5edd851fb38a70c454799253c87cdb4117989ede991f1fb145ebf5eeb7bdf482415e0d7fcdec24201c0c7a5f53b17c4ee3c5c3d0d8f3593cca0f5833a800d6470caedb42428e5efe1fec896c6b6f34d358eb02514bbed4e6f221f79c96e27890ff1c294c4210d56ba2460b1b11783767a837ccabd15f70b468800130d1a0b169a383348ff0
347e1f388d4e475bf9f548f77d224a7c092e8bbdbfd81122afd89b4756df47a7f17b2f9426063004f05a860fa30a12966c2e45b19dd0490475722ce69bde45b892e668de5a07b0d3f6943646f731104c20d804fe050a365944c7219e449202b90a009afc0fa607b9ce06e1e98931de37613c658c861d1abf5d136badb7080d4e8235fd1a0f69dddc503df93f9d1592f3ea2afc7bd826422faac10f9f63a1b25a31efc1489dd14d35aac9a158b3e193c7f2b1d3011e28b918c734dc341a7390e5ae618e4495f16ac44ba273ac4b761179f3c907cc0d6db438e76c6c5f4f4d0b7548b56603ac37b6b8ef9ad70ecb4d92c2b2ae134c576042c725e4e9d0d7d41442d82f776630f81e2b445a5e7d299b1de503624278e966a253a74b229d8640d0d29bb551aee134ded6bb6fa73cb24971f4d1e5cd868034e7f72e
627c533593808d4c061a5c1ff155f0e351cc9148e831e891201b071f4845858595125835b45cb9feb24298db69683cdf6f3581c96214fc29c66b4eefa983495035d55639bdfb1faaf2a4eafc4cbcdce30c202fcbd181790f7fd689a8e5a09eff7d081adb72a88448bde62a4066b94a003152cf8de2948832076c28d648793ce968475fa53076d914254e570892d727a8fbee6356309ee119f5f87cd2c8dc5fa7fb2a99fc29c08d298dee5f0cfbf44e8938172f1da5bfd5aa55f2ae8477d31a6750813521f6827509b60566ccdf3286ed0560e49260a91f165fec8628a8b78d08f59bcadf
25a69145152d433fd757340493f6fac20bf574dcf28588557d7381092cb9404024d5d82a2ffe4e12b87dd48d53a4760e16d386b460ce3437d79c1bac45c0f2ef1cbc826ff6b15767a17f617007391721b5933422af61411c8fc0f72fdbfbc267bff6f7f5cd40bd0c46e12fbfa2ef5dc5df3d2815b227f5f6a9385a956edbadfa2fe90c9aca6873233d84f41dc3148a21951a1e36ce50fd1acf124dd73d881d2039269a3ed0e262387694ff18a1cf57b9ff8a621b9f7e9d497c120b728f3bb570face814064a90649baab78145228848e3619f7219b4557e07002b6c394014100637d92d8b8cdc94eb284322de6afc4d52856ee6b267c95cee5f4dba65f7444952d2af3e0696295b4f0dc80b5d66186c52eea669598ded1bb10db47e167e79d33a193618770f430567feaa6b1493a2203ba74c082bc78b2ee5d09a5d52f7dd07fd8a9eb64ce12c56a77ff48ddaff5d623b49b79e04573b266f90d69fe73b5647dcf75947f666c37ee13c66ec22b822bc0f8f332c8b29fb6b21e718bb477e6ea2cef0564bb91fda902d49e964d5ca834b379106c182f5e28fea0d98bbfe12c11716cd96126e7cbc7cd1ea14d70f35f
df866669e0e25a0ed945094528ae4669e3145200beb8b14d46e5bfdc53a04fce18bd6abb8f38879e36614010ddb8e730f0fd9a7811bec24689da867c82d811739e186a04379a00ce28317fae9957f2ced19a9b885086b78a1797049bb2e68f79baa8b16183242b5fcf842e8397902f5fe7b669264708f2fe995d47aa82df2477eb6f6900d5c7b9ec05219e9c8e5cebe7e1d1b79fbcfc900a94ce0afecce0e32332e1b8670b64ea6f4577ef0771860c97
65c6a4be590bd09c29f53a0123939af58da5e46d5fadc44512d9ef839a14b7d98b5cbf5694f29d7c9807c3086fdc88f8653fad4a200cadcc50d50b266f97ad469135ba220d271dd9f6a0c9275526a9f62f7b2bb0106bcd43e221dd02bba09bbce379705c373fc3d19ea8577bc5a52a4c9d61f2df85142a7c8c2e36e64b8b1d
e9b590cceb60f708c559ef717d1a674183ece9d728979d34adea8cfd43c9ab5d44ccc3177e4179bfcf2e3ad0c6c38365b8351d964d80cecc0d6c9cc8f91b0966e975cd09fdad8954316b3cc306fd638b1d5ebc7bc1d122bc6c81dc62e7bd6545b1b40b372a2345c252ce9e73ad187edb41b7c7558ddb2d415a983189290183ddbecfee98a9fcc99d
dc7ca8f5d6107b32aaeb9d2cdf1fc1d4957df81fd790c84d4dd57ae1ac8802b5504af3f1262956f3e90550bd04ac6621fd747f91d00fd47075df6c138b6502d42b39df788515750e5ad9fd9e1bf07e79093d73fb09616222c3228628b907025ae9bab06493aa79d743707607b8d7fff01866d55e8a6c134bf0d4a7b186ec9f7e4e7c25a262e6a5ca38a7a918187cdb26019dd03396df5826e9e00d9ff8b87c2a5e83c49ae7780c944e6d26d25d047b3ac6bafee86d9451845365e32bdb409607f0cb366f27984c430a23ca95927cff842c9cec7dff8a90840ea52c7be2d3888261f1248c90cc6b0d93b918880d2ead93b04474a80b062b1e31e2a8735a405063f06f1e0b08f84c54a3ecb57694f623f35ccf591f3842ae2415a50b44f31b03612ee71076265a3433bd3394a8de12bb32feadac6796496317d2f235240db9043c1df3ba5120dcf64b21df4129e2f4aaaf48af7bc318667271cbeebecc27702edc6807b603ec432d1e00e0e00c718b57ac41614eb378b25dc9ad697b19d18f79f93ae384900bbd14a176be4e1aa88c7029a62ae0890f4151617ce0636fb59697c53d0c1fa9904c7766bf39ee7ab43430f9a3c3b0942169d8971a61604b312b0b1834d49b90cc8b37f2311b9ed75e1263ac7075d35d14aa56bccce7888b054939a5bc6f52513353
b674b45168f53fa6ae53a18d7d1caeeed04b963fed852defb5a69b0cd1eebf41308082dd83f89f5638791d3a85d8eb37a2ca73c33dee84e5e27b48c035a404fbaad48a670e2697c27e3adbfa7e605e4ed883fca4c44251b95d98da5513e8b4342378ddfa7c4cc712a53659ab7b3de6bb5546339a5b3113e233716eec08e8cf3bde36c5ceac6d3b66fcde62a5bee2b9b88e889853c49ea51e1c77b63616bd3c3b159b24af48bd9bb0fed09bc7fa027b4c3d6c8c9eae2d5fd44c15d9515afa1bf04c39831418e7dbc5959d5d47246868bdf85da085ed66f0f9cd5ae2b19de073fad2a24259c228e32924705fce56b72bdd329655cd71e379dfd3bb428c34cdbe48e0ad85a68ab9b812d411a35e529cc0b42139c9656518628ea87cd957b555d519de7a40ff810c9e2aabce3f7d0df300fe0261cd330b266b0a893609c4048fb31651b4f8fea656be7cdfc3662ad85c47ff4ab8ebd7cf3f7f1415fe62cf3513970ce895adad86f2be2bfa01441f9ac0b23c3809d9ca071ec0e7bdb34f52bc2a09b7352e7818c50be259371928dba24d7f7f4c59d473ee0c516fb6e2549f80a93427846949fb281e22c3ab8977ee895409be25fb769954fb5974f7d75ca9330820445c59612086cac1a2b584ed16afafe256402c63c87c2ece3fb84891328d1e4be42239ece33d72dc3929a2b0a3cafe872023ab7a15bbf5723ff0204081ce151bfd65bd536192317c
cdeda8a1066d30e165cfe0d943f38e1d65f14e232511b071481ab1ce889ca35c90d0aa524459489022ab88c2a283f4ceb681b4385eff93f39751fe77afd8d4f40c65ef65e571eff54ca099e27d9cb021f0fb8fc36c20c17f033c60e762809a94cbaa5584aac22d286b034d12fdd6023f2441388547bc90f6f7de2bbe03da8aa4d311efa13536325b3936b6546df80da886ddeae39e89fb49a36d13a7a4e2473af5f1638d8c053d8da9c7f4879395c62d8d187955df47bdc29ea70203a89efab85f5c966141979c8ad01456183941a1589ba98cdb1608d3e5b3df24acd74fd329f8d41e23aa544aca31e9e61072d37ad9ac90f0fc18aada69545199756fe3fad6fe600b3ca7e8aaa8f6a3e80e09353c627f8972d39100c6cd2c3356c29c4987936a8675388976dc6e8554beadb04dbf86d4a2c3995c3678026209b8d4f108f442979b5c48874035c2ff65c2cd5d6e6d08247af2
b2d8b2aff0bb3b3854b08917b0085214473a4ee42240844d61e31f256092e7c0b311e892afe7e5e2d999480b64d77253fe13354a1170fca5ae02b15f364f79e2c09e6a747effdd6f156fd8125b3926aaaa2b391381cb27efd654e1345f10815e29ec733b1398ad126b18e682f45a3c5ad5fecdd3cb1c8bdb4355de5966ee8c63b2ec8b91ed88aea8c9618c37c624bf30797f173a63ca3403173517e6859687e96e11d0a7f0412b7958062cef6857284473df8a0f30029430523ad002f9cc0a066b09929021e4a81aa5805060f88e55fc0b4c2a0b54e4d3079e2ce6845e05a1c2b89cd6b50aa8d700bf3002