diff --git a/Cargo.lock b/Cargo.lock index 1bd8fc16c..1e1bd341b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4230,7 +4230,6 @@ dependencies = [ "async-trait", "backon", "futures", - "itertools 0.14.0", "logos-blockchain-chain-service", "logos-blockchain-codec", "logos-blockchain-core", diff --git a/blend/message/src/fixtures/encapsulated_message.hex b/blend/message/src/fixtures/encapsulated_message.hex index 227b0f7b1..ed7c3b0c9 100644 --- a/blend/message/src/fixtures/encapsulated_message.hex +++ b/blend/message/src/fixtures/encapsulated_message.hex @@ -1 +1 @@ -018139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b39400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c8a744dc99887d90b2e36bd48aa1351f1ce27b1a9473ed5f8b68413b4d0a53a0892064c841005b0b89464f2bd0fbd08992fb8b81ced4bdfd292300ad7d250b0d39390701180929139cc6908a6fb16fa33b725657a4076c17e378cc82190daf9b4de93030a9ff9d1d81a1f4746a56bb2c284095d351efb8c93aab8d23f6ffc3887547378a2030d80d8af60523e8941b830c0ba428afe73aad8fc500ca74c0af4f15124df143938fff7c94c3dd1f14e32901968fd02b4a26abd777982d3b3bc42f62e596946fddda1cf9f12fea61c969eb2031cc7335f931693fd94f1dd7df199b58079705ddb9f661e47c055dfc270bba8081476122332bdf1ce9699b0058af7be3d59c3efd62b892a4069537945fd5877f587ef1255ebdb08204afbe9f688b4b4aa7b6df2309e9f501d7c55dacf146ec91df38e0a0769900260dc0c7e3cd3ebe474fd15859d2c4b1ec31960f990413472a9d928bc728624070a5e7bfd3c5ce5d7f582ed0132f5e9e89d2971a3b73ac78651f7ec26174f46fe8ad3fc6d6d06db239bc5164655254adcd0e3534839162cf5da392a5059cbe215a58502d7c70e07a7740b762dcb8da864626507b94ebcbbf92368da3723dc1a85c07717fee4847686c69cc6660f1201dc4270949a608108a1180c0d62c2bc632ada77a83383117ae9a22a2d3e498d4be61a1e90bdcd2613097e237e164c90d97181547cb91123509cfeec3d5b98b07245d33c58a103f52ac26d4e8c02ba12ce71402a1baca620da3cd46273139bcdebafbb3f0c2eb7394b9526e615661fbb0a5bd82ffd709a2144635c6962d4461866d33ada17fa94cbc47f95a442a7351f964bb6f2c66837e39b80b61a4f75cedb8dd8ddb15e09d1371799c149ac909de7761f639fb043fd23df35ebc0811cc0efc6514b82fc62b8649babdac6efa98fef1c012c0d2dba5b3d7f17b2e47b63c93834555524fd641c8037c72375e64ecc7b820adf80a4106d6b61f9b7ef8c9e044bfabb36f4598272e887a973bb4672f5d71f8784a98139184fed318de3b7dd78d75956cb568becc0254d541842ee4784f6f64e50868ae87c999718ddda62c36ec75c514279e647a8c6d005b06bcb65428f0b1dd7c24b47f02e1b252d1989c39e135d4e5a950acde285cdfb992ee95f7057115f131e5eb3b138657988213c33f4f8ea061f70bf56de2276359c90b640f378c000a37ef341ac946624ab66db47875a9295e7983e7cdcd45909dc68f9b5b7f8afa09bd1f6cb1baf0aca1d1d4a83804f6b9d664b0339d92d6357f543d9708934a7ae14c5bbe7f99020222d82b2101893556b20a09b51213a210a24c25278ce1101191a4d08f5aef508463e2e875483f516ee0613eefd7ca06a960dbd566d0c9a59944a746aac2f65ebe7c58ff29ad4a305948f39eab28867549e4d3078b076c68f6181cc10dac7f9111d7ec350ba7d60c496b397abce33bba1e3e263d97f88e392029a361849aa60001d16633fe9946d7afc9837813865e6caadedde1c3b56ca1a54e3469a5f8e5c7b8d5446bd145a712da5b1e8eb66ec217bd4f081d74413608ea44c6a6c2dcb55ca59aab30e8b5dae57dfc11329f768038f79d4358c051c3bf14f7b41335b77804bb2f48b9b6bea482a940566ae0db35f3e100435b6de3e75a4089de498417e776c3a87aa4d193c2718110380453d41e4588ec03585668a159a2c73bf625c5725a37017b52cb5d20f14969458f0ee75e462cf3f2d37e2f83480fbd876cb507d9f5027fc94573b9902bee5e1ab4579ee469f025ac1f8b728a8720779d93634cdaa4c6ac0b5f8f1d144d57ecf724ba6089b47eb1507a14dfa72f5f1eec5f9c737126b8f32cde50466e92732c4944b8554deaa528b0d9863e1a1d6201fd797cc1bfea46dfdda23442a9d87fe4eedf0f2bd60c37d56029aba39c0ed72ae107a588ed529915baa90d2b58ad988a86fa24d8b94e1b7fa7a59fde8a49615242d1ceece6c8ea87e92ba9251140ae1aa11cd45544700674dc7bc7b24580ec3da2d2649cac5eb9c7df6c91da8494c26970cb84dd35455e7f87ea824750b502d7361a50401a48bf616e9e4544559deab8cb3068f81c4607c2939635f7bc9aa369ae83738187a95dc5153a98f1db4ac83abba7fef6cf440fd76899d6eaed565f155b92e15f5c695c70b02940593e77ee7a1432dbd35266e0ea4f4c1778afc3f809db0c7731a370075390da164bb4797799b550cbc602d7599a4a86ccf4e629de47a3a2ed445f09583de6b52d20b6a5b12d0719211e24bdd887e0d3d9583aaa77a60d2a7dad0af31371eb07ff406dac62da54114833523c61c1714f1975f6bf3b2ab7b05ebeb7a792ab91d991f15a238d22a967d73c95ae5ad41d460668b4aa639f1deafcf6d6dfab5ec834c46fb8802b646545fc780420c652a3f50346a0133d8cabf81180e189f8deec8a89d93aadefc949c1969ca9e3dab05e7db0900a39485d0697abebb478d7d3b1c1b0ce952e420353e8264c28519b507e7c00e1661fdb2168e57bbe2a5a46da86aa46861d2cf4e4132c77b254fac69c5a9866d904b6499315cbe184d0bff42945ee6694202580a49d7b93b8bed749cd0f4f8a127dfd0d07b04cb051489e7e3eb05b44debe85dfbab3d1e5e2e124b6a5dfc85068a2b5ebd70eeaa4abad16d4ad43e18d5c0a45608235cb8ac78d3301533bb2f19eb1fe2f2640650aa842b9fccad4d9f16d31680f6ff5172039333ada7824ae281e3aa4a8b18734e066f333e185d65ec7e000be7f0a273475b5c1a7c46bbb6b9c5b6f758bb6d345280487ff1401494a3dab56c8734b76e61afd29d86397e9de2cde122c13888c52301ede99118c2496141536b5fa378a1fd43a32c3954d31a79e06dc64ca5eb5cf0423b68ad5bfeb50fd4f1dc2c5fbcef6c0857e4244848994a4a78fa1534885fd0562629472e36256460277fb72864bd7deef78ed963c654acb71c9f2116d156b0b5a88a9d155adecbf129b802d892bf41bfd2a7ffc5f6050a4428e7c414485064632969c0412319ec9e5663ce451cec1bc14498097a2f0b6cea70e010710d4eb37638421d5486000f8359da68ad232009718096010f7253f97d016ef87c704502ec5d6ccf7935d61604998b4954cc9a6599de240bed10ca82c9fef5909d6937d29fafa41c3e64357252b49299b1b8e30f98481f9ea5078ea1b4120ecbb3f137219b6236a3661a8b52870fa63436e596a776e385ba1904b3af94e80898bf021ffdb633b6c609603684b3b988e2b21879314059caba927e3f973d72610a3529497e8be2d4e50ab5061253667dc9dd5bdd312606446796921d04b1833e5cd7b0307a8c038183ed51848f8ba7005de852e1f9c979584ba29d3aa147d345ff80fc2761fb4c4388abb3d43bb2e22b1dcdd55d8ee1f60daf40ad9d205d5263361b97ecfe9aeb2ef20944978269946a8870b770bb99d62c84150378397c4784abe26958ee06d1a7947778f53939baf0c7bf2d415a7c9ee7a99110d2595164ee553dbd5b1bb4ab20ec8742619fae49011a869d9f4c79badb88b1bb9852331447f46b3837358e763672b22a88d409c9ed8727da0bc3adc841c6b6a802a307e53a3a7e785e211d2e547f361800aec1fc40642a40f9824832cf5ae1a49288018477733f5763a1ac04ed024235e5e88a30435a6b3a4dbbb06942967ab3d656e1138f79aa677d162b5b97cf23463a1db17f5742cb9348b7d716edad5c03f4ef4599e304dde0f8ba752920ac4e9e647376a48d0c6661be286f63fdd68a36f37402df69cca66f9dd2f91a58a4f964bbee7aeb882279b7c4b6d9e0da6a0741598838cadebe824b4b90c8cd1cbd9c267db1081c080ffe04f21113c5fba467fb3d065cb1d9d08cd4300920a379a98759ab089486e58dcf9391c203970e778600830c07a151f0cc3cdf66e284f0e68bf615f61003f1d27959ecdb7ab9fc9dc243eac9efab142cbb011637c823409b6744e5381864ecd7868a5dd8345700583c7e403651adcc592bec4ed7914843a3f15043128615c506f454a6c52bb69d4363985a8c2d06ac51b675ea31b01441556b11d7847d23f762760093aec31d9d9beda2119c11cebadf17b61d808d16d02ac851fd4702766fcecc4ba194950d22de26fc6abbaf876695edaf3d76f8aa84e63153123345413f752ca2e3d238bc93e89a83c147aa9ac62cd8600eb06a6d5e513889e1c4c73ee89632ef8f83faa1586b4f70d52501f93eb7d519eebdea91df8d7d20431f33d94d4b1da6ef90b56bb5eff2c1acc845939173b82a799991df922a6021880635e9f4ac9d50d7ddb457bc3a42b5d015ca7b64069097dfd954819b099cfe65869b65db0f6205ab7361d305d8eec98b49722f313c919e4c976f38b7dbf4acfff6edf5743a10fa13f747550b4a6f70d540b814d2ce842d430d0bd83e455be80fc3d25e199efc5c1cab76c27e3d28de63055c3ab9a6ff6e16a0626b07fdf8276a1bdf7bdd30cbf6fb112b11586cc12ced31313c9fad8318b80578755f25e94e510d14ee054b8063e547e637e1e5751db4053f27b950af64113c7ea7d1049dfd312e9ba13f3077db507c8b517ae7727d979ee6c81d7e61232b9e454fa43abbfc15a5d648a63b62a46b38f72459f2a8b00ee93a8617b3bd9d85534b1f3299a21eeb300200d9ab8b048c63954c38ded27152aa4176284e0aafbf6480ae766c75ff9705900cfa5f79d55d83aad838c3cc5687cc453eeda8061f29a5a766fafdae7d0a034c7f0b0418c0d06284a695398ef00ffcf7212e286155d268eef7bd289b04104a323f9e002965a64a989163e3db6870ea2169e69cbc2e4d681c20535e46701d5857e7d8bc6dfc75c1aaf81d92ddd64cc16de468f34a4d38bcb5e696e88ff7ae4bb5bb7ebd75de5c8f04622bda5dbcad164413949129adb1c8ad8632bc175bc52d45663fbd309a5bcaa903728a5fa1d878ed3bb07dfcb3fc34873a791643580d5e9bc40c17e87770016d64000beafc95152dae9cf7f51a8889eeb7388de1b650b71f94af30614765934564ec86ca55fcf6895d3f46195b120ea4dca9cd15cb8b710832cb0c7d4d13c93c23fbfb558e7b40456562a395f92569d930a37c626fb27db1dcf409a418aeb3a26cb05d4e877ee85cbf8b199409ea0207fa451324a01e06d9a2a05bf537dc147664ca1da6edb9bee240c7c9e5b0893e9bd9757172a49d8ee80aad3bf52579600d12601ef34f3b5bc43d75b36a04308ec9db0a4aee34c31deeb0049f4e1057935eefcbf3a9eb3a39d89dfb33c50a21e1e5e00b49ec8364593584e98e4aa01ef655a085948f3a491644cb3531341a7ba216302425a4fd21b667768ce28e8de6f9d09e4552cd2a202fd61e1a199eb4236dc2a87991033784914de4eced971960903a26eb3e8a250d78878f11bc275e4d429e2dae307ce91d6cbc81e4091f0d53b6cd9276eda13b08c445cc995f63e91ebf47d5c769fd78263aa53dbdcb759b8908bc5537b90385554a213eae0c2219cc2c499362fd95f5e81117a3433eb37513e8bf0a6e9d11d2039e5156806d63ef2202f8245fe7023b127d35c13e709c27b0e03c8bc76e99e750e824c2752ed3edbd74672cecfa8c722609568c824d82c413fb5b38ffe0bb8d987b0ad25990727e40ec1b3b3b5bd4d32faf039fa864727370ce77b4043ffd341efc448b5bd391ce435079856e6cf64a9d892273eaee155c141a471b5e068e8ccf63e0f8c56e87220e6b797beaf6578b7f8a120a7ff020b0f9c753bf83849e21a511519abfbaaaaabcebe61ce4852608ea165ac2910e6a754de55dfb5fe00822ea52134ee678f69000f897bca44ed8d4797ab62f34c091b67515847f4bb7fbc434a3df63242bb8788b4d06eedd745d6835c0c6c2c9e769dae0edd3b2ca765024b98393ad766786ea9532f5ff7aebafb106295f45f4370bdf6bebe22f193bd15cc8557789061bdf4d004296919e5ecd481dc653685bdba65dd55ad10fc31f4750e2d92455e68ba600d1acbb9a5e6616af2ed8d4b9eb33ca62fe1da9079fe052c21fd053a00c9832a001e3625be2e51e9009f1e9600edcbd8b6682b1a61a329797bd8e1c86fb9fb8c40479fb02aef47df80c457867547b31edcabeddc921c9322e64d43f05c16e3d36da84574a858e77c51dd13d9ed7bc8455be1a0f2eb772313c46b6914d00d8946b270168668895ec82ce2f7d8b00fba016b134ad63028c5b6c2f89242068110ce9b79bdf210e7b670a76ebce3721b120b790ebc440c78b4b60e428388aaaad730d3c500770a03770321cdbfc6d5cab03556741bf4e59fa3243fd7e16977ce14810be40d6f678bd0776ab42cf8af9bbb414a23f2856320c87562863d0edba602e44e497b6aef976ab4a8c0a06711b0d0960d79f436dbacd897bfb4a69c57a92e2a5deaa99d71b9fa791de687ce0e48cb54a08f015096548effe4419f80c3f8f97963549721620a409d6ab6bb0dfb9839c7442be013ad3e3d5324ae7ac7ff57bc29cbf9f462bde1883163ba8c9abb15bca5dad05a7bade42c7d11a34861f3c813d056d2076a5b60aadb2d7885dca491ef97702fdd5eb3acf0afc8188fcdae24deabc76e631b3ac8c5e6b3b47e11ecce1451457649ddbe67a34913baedda2b07d4aa6ee31cce7bb4534aea4a8360528404b34a75c188116c344af98ddd8bebdf9a2415a4df79b5550c1c491a8459930c7c2b1db42c52f04d39edcfbe029348c19cf14b324066743aebd84e37ac6633be5cd4c960be13e264ee02b84bc0d164553f7a193b7e32ec4ecc6e391772b6eb30563fb319cbaf03dfffd169c11876de4bc54c1bbb463a31e6c536e426da947773f3d6250840652d49be8f8e65972d3108dba5292e4c5a82990294ea949c8c1200073df273566f42bc829a1fc8c9aa94b14de0fd771c2bcace106b0c6b56534a295282b33f3badc30376997ff7681648868e58a1c0656bb4bfac5578bfcd441dd1bf972e75b5b5b2f2286d3bd7338a88cb7db25c840b2bbc921cfa8783f2ef88048413446b649ac60cc7761db7fa6c73e27768a8416ce46a751e2517652657a0072b7c9a2af0c12f2d0b29f6b46ecedc5e71752d5c8341271a6732df6f76db98b345c38871f01541af6a1cd7e99a180eada117e3fc53fc0e22880982a3e48ecdf4cf5b81e5fecd4f5f0a04bc69add16a065f88bcf60621349d5e9f8e21e9765d5e8717bda554c3253c1ad2f9d933495e82c1f644f27a3fb7075c001807cb05f6d29f8d2702f2f27e54c903f60aa34971f16279467560c59486194c62a0b03939c957f5d5257be8aa07a216737f188b90921efd2d1a890434287d46fdd2347197e05b2e01752da034c7eb3888444d6361fb95d1bc17fccaf7a96e56548a110d04fc9aef2694ff8ee8f72b7678ce6bb36d3ecf014433c4ae471cafbbbbe80a4066eb61888daf614c2933d914155aa5c985df5362b55478445e6e3fded5e24ea59b87cf90ffb458393ff3f7c70200abf5f4fdb795b06815b9b86e8ae84c181f647cb5fccb46f588e59291b1abae78682a431f389e5088b56b00f3384d4e82a572b74741164d8e9a26d5b763ecb204dee20e7feffd89fa91d2be63075fe52d3f10c86fea8742375838619dfaa2fb821a61f42538c59b8f9bfa166efc91c9bbb14c3cdc227d967a9f5ec5393e667cd49cf3d8c15ea66d565c7fc7a42cbb08a6b952a8a0906c6424c73d252aa5dba8cea2a1f2557e5912beb27756da3b0931fab5ecdb8ef051c3bb4f3837aa250c165306cac9baa4bbbd785df3272544259324ff5b3cb7c0f73cb87c8bab275295259ae3bb0b53e2418def185eaf507acf1db2f77cc3961596855871bf572267dd6aa3be5218d32f9c8f135d9cb7a5462f0af252f9d5d69e061a6c7e2d4c3e4db76e3686b5409b38965109a18a30a743587921ca91aeef942bca45dd9a0b2755ebe9cc9ae26a8de74e68de90705af949de1b74026e069f999f71ca5ed1f1f55a4076a878c87c2d3ba71fbefded46271c3253b7ff1027bb093c9aa908448242f05936aa02844afd049b6a27e6538728266fc671e7a81b8048434c4ea77c9f8e1c85988732ca507c0ca4ea27521854054b896c4c9539fa9536cce332649c274917ade3c72cb5add8d5802f2c88c3d824de7c1bf6f78f225935a531aed246fe9db72fa759464712c0d0fa32c3b6bd6e4e9550267c9f09ce967df2f35c96774ab5216c0548396badb10af5917a5f465a1ec071c586ef295d51d72005e254488ebccd4f4ec405255447b00c1beaaa21a7223b87d3550931a294f073a8daffbd2933da11921a0bbd2d6b1894dfb3fa6ab3ab0ee79393c0d25cd7bd7de7dff5fc69921550e29c9248294a4ff3edc1377c64fb8dc74353f891a1670e18952fa78df52e96085f3fca017820c2970de0f8f0fd3a0a31dbfb80f7d4726b6eacf6427d2c189611b37f41654dce5328781016ac43e04d21ec2f7d234a156e38ba2c9bb3850b7852c5cd5ec2011397744ac921c811963b85225aa54676dcf1d174295ad0cdacdd58d3ab359e30bd71794d2fddd235f41ad7846477bbd8e1e25fd6ab7c121563cfbbaf9677101d36ecd628dc214cc57009c261aec157f3109f1dd62ec90f588a3a917f1d1b1fe0fabe6f7e106e563e69b6bb088c0aec4c545d1a05dbe2856ee59378b97267ba090953ebd8bd5025bce1f36442f956ba7d1828e8e12984eed3620de9166667523f92b87b7c121f16cf7daf0dde166ba923d36489098b60d0c59a65fc4c63a7531aed39d8470aa1652406b0465729e2387851e97ee23b7b5b00b2d8189806e0f5380de23ce4b7c616b89e06a171004b35e94a31b00a70e92728c9efb6d71e80b43658fafde041f26ef9c4f1d1449a71b438359c9bf0c3f2b9298633c301fe3b0b13f077f557200db3c9ba89e4e8b2ffee79686c4bf98d0d499637b4ac220fc13c05352d5c808dbce453261a3f98a47c197945e99266948f7b46e976ece0b0e984413a05a92a005d4401ef4ae8d3b5e35b857f963229fce10751ac28a43c294bf39b69c9d1daef815fe55c21f3e0f2f582075113b4d49297700a2ba768bfc0ce8612788baf9295ec8e61c88b5e0099ec6f4a98ada4da260bf31f583c7af25a67c59ffada308c5e00b6269d530b6f68858267e9a70e4e7401acb075573487d58e07164fd80627dc55cbf5b94787bd2ae30d9c5f4cd73207d8f34a607fb6450a3f2d18fb5c5ea376ae6687e7acc783a29c790c200ce73d07bb99cf32424044ee2d095e72042cff941723b8c5c1438db18d0dedc4cf5220869a496fa1b797b56df063a5db84ed9f0e60c3f39d736abe2beb28b18339b128b61bf6777008703fbfcbe4747d3925a863faa237a59ef4a97999f102a68a1eeffbeca55c00b422b7073fc1627165b6d467b21090373d0419e36705e09a93eadb59c22f86d9959adb32914b0aac4b19f7c9b705fcc31f5204275770c388ba2812da4a5cb5673ba756127e45940ba4a50de1c3b27275b8e67b4f202b8cc466b66665d2ceda02eb2244c7001e1ea99dfd9b7ef640b19f284e9418ba34fe43ddce743f246164dabc031b77f5450b7175ce472ccc11764ec5b85b32744417c6cc8e22388fa3aa8fa770b733ecdd369c3ed4aea5ce85a5102fccd4ce676ee231f2f38110747a5645c3505b27fa2f2747db73cd310118c0e2a8c912a009e3f6f7ede3e1d375960c3c52c6c035e0c902ce35e7519702f3bc18714440245675afb45b4eca51ad6d2fdb1de98065ff9d70a30ac0f8332530685b29882170644b545f3157d4a57b933f6c2b1d8a4327639817727b23c0602fa2b5811570cf33c05312d74a8d787c441d820f9ddfb6e17a6e44039623ef23c1fef1d9c042ecad783ef76eb30a4fa2fcb4c6569db7ab66d7b10a7f9715e638d9ba0e4a5f5d17bd63657343ed251f5a3ca1d798f23a3440c146cab5edde99c1c8ed59afdf50d29080d2c8b01133244b0c241512e2d0c603015ddb27cb4b81ede7bc34e3c99dc9265571ac2953858b3649004ed6227d3f2e603157c0f26ca86607e4adc84cce92d37c918503bd43d1171b416d35c673e3c2d38473c5cfa0a19e7fdf56446b8e93b9ab63774ea08e96f78ad65abe31059f28a45deebcc85ff79e8bb58045f0ec1e7b61371928b52b86c4701efb2ef3b4676140629ea933957405031cd1e2d1a1aa726cfd6c634477a4913e0139f60ea0f261e17f44d1a086a9a6b379096d084ec35e68214f4e84f3635a23c27d7c2319f950f4744a6b109fc9491541accecc202e62f294bdb57a4c928da2822c653267a5e6ef08f6d8d8b1bc5d6f8f51a174695a3f59ccfb86f15fbd93f463325ff36314e5d5a8de2a9fb5492a454c11adc13fd0861ebc9b015c03ac7bbc7fd56926f22d6ddecd334be00c8a15c4eac459cacc56858dad51630e65e809b8fdaaca2a59ee3d278b50e6d849b9f097cc1238b3e4ebb0fee3455290f1f05386a69b8595d50acd436b8b73b7b86ed435b8dff64cc0e8118618cb8161c3838e1b514f0957820aadd511e2ef7786f5c6a27c8aee81ba1e09ad5f0afe17ecf220975a4e786f7fecb0c63915bb521ad97726543c99e80191bbec3619969b15b60aac4563830135afd1434965315955e8f4941dd29dc49d240d3ea3acb388eee2fdb4de6aad0af15fc79a037a91139364e1801a4e7aa5c3778086abd61ded9f37e01045e4b6abcef621b29d63d5423aa0914e367307b68e6f4f71f30f46c423eff68dbeb710c0812cad86427fcc1edaceb96475a0e8fd14078d4621831c0376bad301f60b423c2aa3e1b3a611fe1187f759ce7d429fc959e6dd8c7f8b2431c2928224084022186e0fc786b3279e4da57f291f42c9a3a26dc63ee126871d26fa5c54c8352079b348109a7110fccfc8c628a40106d9ea06c00fd3e8b85ddae2c720204875bd3d5a1ba92e3ab655ceed54165f16e28fcca32cb084d2b6761f89a3b03564e66497a2807b84d7d2995752feadc91c305a055159fc129b64f435c322d8fa5e29e9e27135023f2b927631ad9d0a253d64215120ac96bb45addb0cdb1a660d1ddc8739609bd70e98ef5dc3e2492a418b51be3d89f3bfb33ef3ddb1ffd307477ce6147452c29d9480fc902454bcd0deaf395121d64fdf88722e23eaa3c6d0937a5f9762324df4f479c8e98d33dbd52d812d705b412f80c024fd17bb9f6ddd2e672e650c530c96d3332479c8c37b7e3f839dc7e58e855a635caa78a05a546cf37b74b4b4fc019288fa351eed1a9f668b5d01621cdbab8610e2b0aba90812dc3816bf3b4fe1597a9c36425c0a51814e11726a2971881f056a4acfb6f702fefd37451b5b3cf1f37af747f1ab50a8b361f19ac7de6ddf5b7ffcf799c0f3d9a05087237b58b278fddb8c72fcf9e524ea08cc62da58e454c1bc2b9a4f91a1fcdd0b22971f98038cb4d56e0c69b7f59fc6a768ded2b29950932a0da2b85ec5b36c4206ea66779ebb7f95cd5bb435829726a9ebd80d8fbe9254836ba3c6e9dac148d58accf9cdc3f86c3ca1b36de5d83c07794554f1f2986d4defd5219340fa351e322c23b556ce16aba9f76c6647ccd917458ea4dbd77a81282af43b70ebc5a51166192cdf054906d23ecfae3a6c29e6ce86b5cc93ef2818358f7d98a1d77a0b59e940df6f4717a84f2d67e354d3419b5d1f491f03515ad5496a9be91bfddcf79296f3a9f6839070947034e6521bd7b14fa5672c6fa0ac7e899d071d5c10b6453157a6a9809fb192bfaa02f05a9373ad40c6cdbf189718a5c014cc93503e288e23156621c7d84f402008e8992110e12d4bac48b67d6daf76269ac3662303676ecd712c7ffa18c8b2a452a90ac86d6e941564e54ce9a74b04e75eb7ad6f205141a87b425c9096e3e35e7a46669b4fd9eb4f413e457fd22ea234b3950ca1fa78495debcc83da494892275fe7b28f56a253a7f056eaba144f7f5f9ea99937068f93bd260a2919435f5a73f67ac368add2508291199d49cc219dc6ab5fcb77259531dd6d04bbc663509a170cd367ae9a74e0da329586b54786da7e8abc60db0260e1137984d01a2a0c12738fb7880ddebf38eb7fb3c480f4797045e96b9d3544018e598dd307a86cb3205a920d3c0d7ae1d045e0f5c1765cc0e051eefd6f19df2ee330f9c557e7d632400e76d7c1124b7c4c748787a6ec646f645d2834b52055ac47297bf70b21c6980924943eb38ac10161e278c3292298d5e8929a469d2d86287b7eaf1336154f6807dc5de111f3f6dc75853a27e7ae95cfb2d75bec9d24d41006574516af9a844cb24dd9950d5beffc1f681635336cbe360e4c5157b21ffffbefdd6c27ead545c3874157fd50f970f1727573a42659550ed268bfdb09e9d79f26b0627ee318066ecfc876470f01fbea650c14afe3aa90b8fb2ab58ef1baf516f2ec58a1f6bdca8788e11f17a6f1879cb8b41abfff43cce82de928ec35a1085e0541d84a8828e0dbf699fdf4b69d6edcfc1bc5bfc5f5d5865ef9d592abab61410a7926fa3177a8f5be2ad5a276642949bc9ea140b6c40147c78c7861149cf8937546f7c56de5b9a648d9ecbcd7114f52f3192680e8db7d045b71ff38127a5121893030c20708e33361266568d5e833a46e7253bfdf39ebd328ed1011d79fcb53f5b177e9644c2fd793b99ec3f1d6ed53d91532fc10ab36945648059f2354e6f7e89d52d6b21fc8be35b86979c38d2ce28a6410beec87070fabe8944996e0dd944255f8699806244dbb0d6a98a0b7ff131ef92dd755098bbb356b56add551a7b6cea1a489a7f3bc2f7d358e6cca0a2ae838a0ed6e516f278c1b93f77c25bfe97b9537e5f069f63c6a106e2d642cb30024513a09e6f9a466277693d2fab76af8f71f50bbce7025624b8daa8b450f65b54e0679e1a874d765e9b61c0ebbdfdf937ec65a1704dad79482b9c8b4e84089351736a153eeeee0ee51262693a152edd835c26deaa694f4413b2083c8d6a4dcbe6fc52dd150962e682152ecc882e03cceea400cb1e82df39aecd51b8c31bc2a65e60bb67e1f05b9fef994d96c9d8737228c95ff27b2ff4096311a8257c2ac5b9d4fd9a9b7bd2615331b9db3cc41a26d33e99904ee124bb3488440d2dcccaefc7fac98d799769592bdec1e6d237139d444c7f20ea5d93a034d271a5990ae3f7ba9f32ec170a434f9f43267b1d86ac6e64a9011eab93a358bc434d63c324a38673821089d2754ab0f552fce3620259fc22779bd73182c666bbf517c677ed06712058e26edf0cde8cb1e50c59bb70cf2684fb0dc67d7610e0340e41484bf44f8091206709795214a8d2aa2ce46e890049b8933e4acc7a9cd967894f623113722e1ddd994d562725d21aa57978be55514d2b3ca413a2c5ef59f109fffabcd97f0b84d57e3d275c606a6ef7c6014c497a9f30c8589f314573d1aa8f7d020126e762cb6344bd2dc9103fabade5e772f5f2678b75ac3361ae0660512656537c0927d12f3f7da0e494b904dd89fd7530a94d1a147f33048b0a0d33396e412bdf13585dc397eb6cde0f8a1d8104dadb259b510465d51309c43a93652f54c858ea8a19d03b6766db91355dab1e93d634acecbe543d0fb9a8d428f870756c5f0f69d84f64c8fe17a51787cf0fed6b987bf888b57f1fb6ee25f8486b4e1a53bbf1cdb44ef707890dda13ce8b8fa45a123255a425837e90476b926b0715d026b7a20c9c9e491e6fb66141da9a8f57b4aa565bfcd8ea6f1a2da9f130663a5ce2177a6153c1001c13e7189e88d20518cec0dae55f1ff338f8e8a0b1917f400e33d71b32e945900e147b4ff0ab9226c733f0d59cfc1dfa3eb562bed58fb7639d1fac9933c3c92d45d40db80afadff4893322468244c170577f3a1cd8b3e33bc209738bba2e3fbee499189650f26344ac5b8486b2beecaf4686913e2f709eff3b51109bd0b8e19de33ee994dac2dc9e6d59eb5c3d50181b1daad69cfb801deb0a3b293861dad5aa533f6f35fe521d2cf2a41d8e07078e1575fdec6195f3b9c89883a7e1a2e6e7fc167c2b4d9eb44851943119400080626bae857cac0946231b3b6cba0a180ae45759a2d692a53b120f41f416273feb48c339684815c6efbd486d192cfdb1e4a6abbb05906e17c823f5c05fc2d289bd9f267d70e9aa46182e747bd80289257ae8fa628bfbac1dd6babac5de3e772e16d91b8710b722666f9aff7cb441c2128a979676c893f80ac1c1a682d1a9b8347971bd64bb82a23a1437428390d79f736d72325535cbc254568002032b21937ea4801ffbdd1585731e6da0af2ca3277552b25131722c994cf3fae9635e16599d710bcd90238d44eeadda1ff788f7c18c8cfda6cfe75d665ddc246a8fa9ff252b87984a6c9dfbcad7a32ad577edfaea1bca40c72da5be413fb8a45d0f670b91cdda0152a4029fb2a8cf88a4d348a474bfb42f5c76a701432c8b3b30051e134d35ad43e0eb2604eaf1c66f39d937032e330f1f9dd030476fe463d6de3fdc85b22113ac386565cea2dfe083f04af3bae96555887be9dbaeeb7a689c22c2addab1d44b3336205c7607899af4a8f4db7e502999e98d7560bf9b5c678ea9cca5ef6d44756968e7f147395f91400d7286ba745f70ca0fa919b6aed26cec70bdb81e0b153fc98be67a2bf91f8f7a5d134c193e0ea63 \ No newline at end of file +018139770ea87d175f56a35466c34c7ecccb8d8a91b4ee37a25df60f5b8fc9b3940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055db1e193af1b89c7b05d28eaabb9415de86ff5e29f04842f564ca81e555bc1e99eb68aeca5c50a1b0f8b05d00b1daa2429c753941a2c8befffe8b63c9d5df0f39390701180929139cc6908a6fb16fa33b725657a4076c17e378cc82190daf9b4de93030a9ff9d1d81a1f4746a56bb2c284095d351efb8c93aab8d23f6ffc3887547378a2030d80d8af60523e8941b830c0ba428afe73aad8fc500ca74c0af4f15124df143938fff7c94c3dd1f14e32901968fd02b4a26abd777982d3b3bc42f62e596946fddda1cf9f12fea61c969eb2031cc7335f931693fd94f1dd7df199b58079705ddb9f661e47c055dfc270bba8081476122332bdf1ce9699b0058af7b1324cb4fa1ca923faaaca5a0e710dabbd2243014d82998c74d917ebb992eb6d3985f0023b25f6d4a2a2f8208009acf7e56a9e2aa5dea16bafa43d6723f8428b4474fd15859d2c4b1ec31960f990413472a9d928bc728624070a5e7bfd3c5ce5d7f582eb0132f5e9e89d2971a3b73ac78651f7ec26174f46fe8ad3fc6d6d06db239bc5164655254adcd0e3534839162cf5da392a5059cbe215a58502d7c70e07a7740b762dcb8da864626507b94ebcbbf92368da3723dc1a85c07717fee4847686c69cc6660f1201dc4270949a608108a1180c0d62c2bc632ada77a83383117ae9a22a2d3e498d4be61a1e90bdcd2613097e237e164c90d97181547cb91123509cfeec3d5b98b07245d33c58a103f52ac26d4e8c02ba12ce71402a1baca620da3cd46273139bcdebafbb3f0c2eb7394b9526e615661fbb0a5bd82ffd709a2144635c6962d4461866d33ada17fa94cbc47f95a442a7351f964bb6f2c66837e39b80b61a4f75cedb8dd8ddb15e09d1371799c149ac909de7761f639fb043fd23df35ebc0811cc0efc6514b82fc62b8649babdac6efa98fef1c012c0d2dba5b3d7f17b2e47b63c93834555524fd641c8037c72375e64ecc7b820adf80a4106d6b61f9b7ef8c9e044bfabb36f4598272e887a973bb4672f5d71f8784a98139184fed318de3b7dd78d75956cb568becc0254d541842ee4784f6f64e50868ae87c999718ddda62c36ec75c514279e647a8c6d005b06bcb65428f0b1dd7c24b47f02e1b252d1989c39e135d4e5a950acde285cdfb992ee95f7057115f131e5eb3b138657988213c33f4f8ea061f70bf56de2276359c90b640f378c000a37ef341ac946624ab66db47875a9295e7983e7cdcd45909dc68f9b5b7f8afa09bd1f6cb1baf0aca1d1d4a83804f6b9d664b0339d92d6357f543d9708934a7ae14c5bbe7f99020222d82b2101893556b20a09b51213a210a24c25278ce1101191a4d08f5aef508463e2e875483f516ee0613eefd7ca06a960dbd566d0c9a59944a746aac2f65ebe7c58ff29ad4a305948f39eab28867549e4d3078b076c68f6181cc10dac7f9111d7ec350ba7d60c496b397abce33bba1e3e263d97f88e392029a361849aa60001d16633fe9946d7afc9837813865e6caadedde1c3b56ca1a54e3469a5f8e5c7b8d5446bd145a712da5b1e8eb66ec217bd4f081d74413608ea44c6a6c2dcb55ca59aab30e8b5dae57dfc11329f768038f79d4358c051c3bf14f7b41335b77804bb2f48b9b6bea482a940566ae0db35f3e100435b6de3e75a4089de498417e776c3a87aa4d193c2718110380453d41e4588ec03585668a159a2c73bf625c5725a37017b52cb5d20f14969458f0ee75e462cf3f2d37e2f83480fbd876cb507d9f5027fc94573b9902bee5e1ab4579ee469f025ac1f8b728a8720779d93634cdaa4c6ac0b5f8f1d144d57ecf724ba6089b47eb1507a14dfa72f5f1eec5f9c737126b8f32cde50466e92732c4944b8554deaa528b0d9863e1a1d6201fd797cc1bfea46dfdda23442a9d87fe4eedf0f2bd60c37d56029aba39c0ed72ae107a588ed529915baa90d2b58ad988a86fa24d8b94e1b7fa7a59fde8a49615242d1ceece6c8ea87e92ba9251140ae1aa11cd45544700674dc7bc7b24580ec3da2d2649cac5eb9c7df6c91da8494c26970cb84dd35455e7f87ea824750b502d7361a50401a48bf616e9e4544559deab8cb3068f81c4607c2939635f7bc9aa369ae83738187a95dc5153a98f1db4ac83abba7fef6cf440fd76899d6eaed565f155b92e15f5c695c70b02940593e77ee7a1432dbd35266e0ea4f4c1778afc3f809db0c7731a370075390da164bb4797799b550cbc602d7599a4a86ccf4e629de47a3a2ed445f09583de6b52d20b6a5b12d0719211e24bdd887e0d3d9583aaa77a60d2a7dad0af31371eb07ff406dac62da54114833523c61c1714f1975f6bf3b2ab7b05ebeb7a792ab91d991f15a238d22a967d73c95ae5ad41d460668b4aa639f1deafcf6d6dfab5ec834c46fb8802b646545fc780420c652a3f50346a0133d8cabf81180e189f8deec8a89d93aadefc949c1969ca9e3dab05e7db0900a39485d0697abebb478d7d3b1c1b0ce952e420353e8264c28519b507e7c00e1661fdb2168e57bbe2a5a46da86aa46861d2cf4e4132c77b254fac69c5a9866d904b6499315cbe184d0bff42945ee6694202580a49d7b93b8bed749cd0f4f8a127dfd0d07b04cb051489e7e3eb05b44debe85dfbab3d1e5e2e124b6a5dfc85068a2b5ebd70eeaa4abad16d4ad43e18d5c0a45608235cb8ac78d3301533bb2f19eb1fe2f2640650aa842b9fccad4d9f16d31680f6ff5172039333ada7824ae281e3aa4a8b18734e066f333e185d65ec7e000be7f0a273475b5c1a7c46bbb6b9c5b6f758bb6d345280487ff1401494a3dab56c8734b76e61afd29d86397e9de2cde122c13888c52301ede99118c2496141536b5fa378a1fd43a32c3954d31a79e06dc64ca5eb5cf0423b68ad5bfeb50fd4f1dc2c5fbcef6c0857e4244848994a4a78fa1534885fd0562629472e36256460277fb72864bd7deef78ed963c654acb71c9f2116d156b0b5a88a9d155adecbf129b802d892bf41bfd2a7ffc5f6050a4428e7c414485064632969c0412319ec9e5663ce451cec1bc14498097a2f0b6cea70e010710d4eb37638421d5486000f8359da68ad232009718096010f7253f97d016ef87c704502ec5d6ccf7935d61604998b4954cc9a6599de240bed10ca82c9fef5909d6937d29fafa41c3e64357252b49299b1b8e30f98481f9ea5078ea1b4120ecbb3f137219b6236a3661a8b52870fa63436e596a776e385ba1904b3af94e80898bf021ffdb633b6c609603684b3b988e2b21879314059caba927e3f973d72610a3529497e8be2d4e50ab5061253667dc9dd5bdd312606446796921d04b1833e5cd7b0307a8c038183ed51848f8ba7005de852e1f9c979584ba29d3aa147d345ff80fc2761fb4c4388abb3d43bb2e22b1dcdd55d8ee1f60daf40ad9d205d5263361b97ecfe9aeb2ef20944978269946a8870b770bb99d62c84150378397c4784abe26958ee06d1a7947778f53939baf0c7bf2d415a7c9ee7a99110d2595164ee553dbd5b1bb4ab20ec8742619fae49011a869d9f4c79badb88b1bb9852331447f46b3837358e763672b22a88d409c9ed8727da0bc3adc841c6b6a802a307e53a3a7e785e211d2e547f361800aec1fc40642a40f9824832cf5ae1a49288018477733f5763a1ac04ed024235e5e88a30435a6b3a4dbbb06942967ab3d656e1138f79aa677d162b5b97cf23463a1db17f5742cb9348b7d716edad5c03f4ef4599e304dde0f8ba752920ac4e9e647376a48d0c6661be286f63fdd68a36f37402df69cca66f9dd2f91a58a4f964bbee7aeb882279b7c4b6d9e0da6a0741598838cadebe824b4b90c8cd1cbd9c267db1081c080ffe04f21113c5fba467fb3d065cb1d9d08cd4300920a379a98759ab089486e58dcf9391c203970e778600830c07a151f0cc3cdf66e284f0e68bf615f61003f1d27959ecdb7ab9fc9dc243eac9efab142cbb011637c823409b6744e5381864ecd7868a5dd8345700583c7e403651adcc592bec4ed7914843a3f15043128615c506f454a6c52bb69d4363985a8c2d06ac51b675ea31b01441556b11d7847d23f762760093aec31d9d9beda2119c11cebadf17b61d808d16d02ac851fd4702766fcecc4ba194950d22de26fc6abbaf876695edaf3d76f8aa84e63153123345413f752ca2e3d238bc93e89a83c147aa9ac62cd8600eb06a6d5e513889e1c4c73ee89632ef8f83faa1586b4f70d52501f93eb7d519eebdea91df8d7d20431f33d94d4b1da6ef90b56bb5eff2c1acc845939173b82a799991df922a6021880635e9f4ac9d50d7ddb457bc3a42b5d015ca7b64069097dfd954819b099cfe65869b65db0f6205ab7361d305d8eec98b49722f313c919e4c976f38b7dbf4acfff6edf5743a10fa13f747550b4a6f70d540b814d2ce842d430d0bd83e455be80fc3d25e199efc5c1cab76c27e3d28de63055c3ab9a6ff6e16a0626b07fdf8276a1bdf7bdd30cbf6fb112b11586cc12ced31313c9fad8318b80578755f25e94e510d14ee054b8063e547e637e1e5751db4053f27b950af64113c7ea7d1049dfd312e9ba13f3077db507c8b517ae7727d979ee6c81d7e61232b9e454fa43abbfc15a5d648a63b62a46b38f72459f2a8b00ee93a8617b3bd9d85534b1f3299a21eeb300200d9ab8b048c63954c38ded27152aa4176284e0aafbf6480ae766c75ff9705900cfa5f79d55d83aad838c3cc5687cc453eeda8061f29a5a766fafdae7d0a034c7f0b0418c0d06284a695398ef00ffcf7212e286155d268eef7bd289b04104a323f9e002965a64a989163e3db6870ea2169e69cbc2e4d681c20535e46701d5857e7d8bc6dfc75c1aaf81d92ddd64cc16de468f34a4d38bcb5e696e88ff7ae4bb5bb7ebd75de5c8f04622bda5dbcad164413949129adb1c8ad8632bc175bc52d45663fbd309a5bcaa903728a5fa1d878ed3bb07dfcb3fc34873a791643580d5e9bc40c17e87770016d64000beafc95152dae9cf7f51a8889eeb7388de1b650b71f94af30614765934564ec86ca55fcf6895d3f46195b120ea4dca9cd15cb8b710832cb0c7d4d13c93c23fbfb558e7b40456562a395f92569d930a37c626fb27db1dcf409a418aeb3a26cb05d4e877ee85cbf8b199409ea0207fa451324a01e06d9a2a05bf537dc147664ca1da6edb9bee240c7c9e5b0893e9bd9757172a49d8ee80aad3bf52579600d12601ef34f3b5bc43d75b36a04308ec9db0a4aee34c31deeb0049f4e1057935eefcbf3a9eb3a39d89dfb33c50a21e1e5e00b49ec8364593584e98e4aa01ef655a085948f3a491644cb3531341a7ba216302425a4fd21b667768ce28e8de6f9d09e4552cd2a202fd61e1a199eb4236dc2a87991033784914de4eced971960903a26eb3e8a250d78878f11bc275e4d429e2dae307ce91d6cbc81e4091f0d53b6cd9276eda13b08c445cc995f63e91ebf47d5c769fd78263aa53dbdcb759b8908bc5537b90385554a213eae0c2219cc2c499362fd95f5e81117a3433eb37513e8bf0a6e9d11d2039e5156806d63ef2202f8245fe7023b127d35c13e709c27b0e03c8bc76e99e750e824c2752ed3edbd74672cecfa8c722609568c824d82c413fb5b38ffe0bb8d987b0ad25990727e40ec1b3b3b5bd4d32faf039fa864727370ce77b4043ffd341efc448b5bd391ce435079856e6cf64a9d892273eaee155c141a471b5e068e8ccf63e0f8c56e87220e6b797beaf6578b7f8a120a7ff020b0f9c753bf83849e21a511519abfbaaaaabcebe61ce4852608ea165ac2910e6a754de55dfb5fe00822ea52134ee678f69000f897bca44ed8d4797ab62f34c091b67515847f4bb7fbc434a3df63242bb8788b4d06eedd745d6835c0c6c2c9e769dae0edd3b2ca765024b98393ad766786ea9532f5ff7aebafb106295f45f4370bdf6bebe22f193bd15cc8557789061bdf4d004296919e5ecd481dc653685bdba65dd55ad10fc31f4750e2d92455e68ba600d1acbb9a5e6616af2ed8d4b9eb33ca62fe1da9079fe052c21fd053a00c9832a001e3625be2e51e9009f1e9600edcbd8b6682b1a61a329797bd8e1c86fb9fb8c40479fb02aef47df80c457867547b31edcabeddc921c9322e64d43f05c16e3d36da84574a858e77c51dd13d9ed7bc8455be1a0f2eb772313c46b6914d00d8946b270168668895ec82ce2f7d8b00fba016b134ad63028c5b6c2f89242068110ce9b79bdf210e7b670a76ebce3721b120b790ebc440c78b4b60e428388aaaad730d3c500770a03770321cdbfc6d5cab03556741bf4e59fa3243fd7e16977ce14810be40d6f678bd0776ab42cf8af9bbb414a23f2856320c87562863d0edba602e44e497b6aef976ab4a8c0a06711b0d0960d79f436dbacd897bfb4a69c57a92e2a5deaa99d71b9fa791de687ce0e48cb54a08f015096548effe4419f80c3f8f97963549721620a409d6ab6bb0dfb9839c7442be013ad3e3d5324ae7ac7ff57bc29cbf9f462bde1883163ba8c9abb15bca5dad05a7bade42c7d11a34861f3c813d056d2076a5b60aadb2d7885dca491ef97702fdd5eb3acf0afc8188fcdae24deabc76e631b3ac8c5e6b3b47e11ecce1451457649ddbe67a34913baedda2b07d4aa6ee31cce7bb4534aea4a8360528404b34a75c188116c344af98ddd8bebdf9a2415a4df79b5550c1c491a8459930c7c2b1db42c52f04d39edcfbe029348c19cf14b324066743aebd84e37ac6633be5cd4c960be13e264ee02b84bc0d164553f7a193b7e32ec4ecc6e391772b6eb30563fb319cbaf03dfffd169c11876de4bc54c1bbb463a31e6c536e426da947773f3d6250840652d49be8f8e65972d3108dba5292e4c5a82990294ea949c8c1200073df273566f42bc829a1fc8c9aa94b14de0fd771c2bcace106b0c6b56534a295282b33f3badc30376997ff7681648868e58a1c0656bb4bfac5578bfcd441dd1bf972e75b5b5b2f2286d3bd7338a88cb7db25c840b2bbc921cfa8783f2ef88048413446b649ac60cc7761db7fa6c73e27768a8416ce46a751e2517652657a0072b7c9a2af0c12f2d0b29f6b46ecedc5e71752d5c8341271a6732df6f76db98b345c38871f01541af6a1cd7e99a180eada117e3fc53fc0e22880982a3e48ecdf4cf5b81e5fecd4f5f0a04bc69add16a065f88bcf60621349d5e9f8e21e9765d5e8717bda554c3253c1ad2f9d933495e82c1f644f27a3fb7075c001807cb05f6d29f8d2702f2f27e54c903f60aa34971f16279467560c59486194c62a0b03939c957f5d5257be8aa07a216737f188b90921efd2d1a890434287d46fdd2347197e05b2e01752da034c7eb3888444d6361fb95d1bc17fccaf7a96e56548a110d04fc9aef2694ff8ee8f72b7678ce6bb36d3ecf014433c4ae471cafbbbbe80a4066eb61888daf614c2933d914155aa5c985df5362b55478445e6e3fded5e24ea59b87cf90ffb458393ff3f7c70200abf5f4fdb795b06815b9b86e8ae84c181f647cb5fccb46f588e59291b1abae78682a431f389e5088b56b00f3384d4e82a572b74741164d8e9a26d5b763ecb204dee20e7feffd89fa91d2be63075fe52d3f10c86fea8742375838619dfaa2fb821a61f42538c59b8f9bfa166efc91c9bbb14c3cdc227d967a9f5ec5393e667cd49cf3d8c15ea66d565c7fc7a42cbb08a6b952a8a0906c6424c73d252aa5dba8cea2a1f2557e5912beb27756da3b0931fab5ecdb8ef051c3bb4f3837aa250c165306cac9baa4bbbd785df3272544259324ff5b3cb7c0f73cb87c8bab275295259ae3bb0b53e2418def185eaf507acf1db2f77cc3961596855871bf572267dd6aa3be5218d32f9c8f135d9cb7a5462f0af252f9d5d69e061a6c7e2d4c3e4db76e3686b5409b38965109a18a30a743587921ca91aeef942bca45dd9a0b2755ebe9cc9ae26a8de74e68de90705af949de1b74026e069f999f71ca5ed1f1f55a4076a878c87c2d3ba71fbefded46271c3253b7ff1027bb093c9aa908448242f05936aa02844afd049b6a27e6538728266fc671e7a81b8048434c4ea77c9f8e1c85988732ca507c0ca4ea27521854054b896c4c9539fa9536cce332649c274917ade3c72cb5add8d5802f2c88c3d824de7c1bf6f78f225935a531aed246fe9db72fa759464712c0d0fa32c3b6bd6e4e9550267c9f09ce967df2f35c96774ab5216c0548396badb10af5917a5f465a1ec071c586ef295d51d72005e254488ebccd4f4ec405255447b00c1beaaa21a7223b87d3550931a294f073a8daffbd2933da11921a0bbd2d6b1894dfb3fa6ab3ab0ee79393c0d25cd7bd7de7dff5fc69921550e29c9248294a4ff3edc1377c64fb8dc74353f891a1670e18952fa78df52e96085f3fca017820c2970de0f8f0fd3a0a31dbfb80f7d4726b6eacf6427d2c189611b37f41654dce5328781016ac43e04d21ec2f7d234a156e38ba2c9bb3850b7852c5cd5ec2011397744ac921c811963b85225aa54676dcf1d174295ad0cdacdd58d3ab359e30bd71794d2fddd235f41ad7846477bbd8e1e25fd6ab7c121563cfbbaf9677101d36ecd628dc214cc57009c261aec157f3109f1dd62ec90f588a3a917f1d1b1fe0fabe6f7e106e563e69b6bb088c0aec4c545d1a05dbe2856ee59378b97267ba090953ebd8bd5025bce1f36442f956ba7d1828e8e12984eed3620de9166667523f92b87b7c121f16cf7daf0dde166ba923d36489098b60d0c59a65fc4c63a7531aed39d8470aa1652406b0465729e2387851e97ee23b7b5b00b2d8189806e0f5380de23ce4b7c616b89e06a171004b35e94a31b00a70e92728c9efb6d71e80b43658fafde041f26ef9c4f1d1449a71b438359c9bf0c3f2b9298633c301fe3b0b13f077f557200db3c9ba89e4e8b2ffee79686c4bf98d0d499637b4ac220fc13c05352d5c808dbce453261a3f98a47c197945e99266948f7b46e976ece0b0e984413a05a92a005d4401ef4ae8d3b5e35b857f963229fce10751ac28a43c294bf39b69c9d1daef815fe55c21f3e0f2f582075113b4d49297700a2ba768bfc0ce8612788baf9295ec8e61c88b5e0099ec6f4a98ada4da260bf31f583c7af25a67c59ffada308c5e00b6269d530b6f68858267e9a70e4e7401acb075573487d58e07164fd80627dc55cbf5b94787bd2ae30d9c5f4cd73207d8f34a607fb6450a3f2d18fb5c5ea376ae6687e7acc783a29c790c200ce73d07bb99cf32424044ee2d095e72042cff941723b8c5c1438db18d0dedc4cf5220869a496fa1b797b56df063a5db84ed9f0e60c3f39d736abe2beb28b18339b128b61bf6777008703fbfcbe4747d3925a863faa237a59ef4a97999f102a68a1eeffbeca55c00b422b7073fc1627165b6d467b21090373d0419e36705e09a93eadb59c22f86d9959adb32914b0aac4b19f7c9b705fcc31f5204275770c388ba2812da4a5cb5673ba756127e45940ba4a50de1c3b27275b8e67b4f202b8cc466b66665d2ceda02eb2244c7001e1ea99dfd9b7ef640b19f284e9418ba34fe43ddce743f246164dabc031b77f5450b7175ce472ccc11764ec5b85b32744417c6cc8e22388fa3aa8fa770b733ecdd369c3ed4aea5ce85a5102fccd4ce676ee231f2f38110747a5645c3505b27fa2f2747db73cd310118c0e2a8c912a009e3f6f7ede3e1d375960c3c52c6c035e0c902ce35e7519702f3bc18714440245675afb45b4eca51ad6d2fdb1de98065ff9d70a30ac0f8332530685b29882170644b545f3157d4a57b933f6c2b1d8a4327639817727b23c0602fa2b5811570cf33c05312d74a8d787c441d820f9ddfb6e17a6e44039623ef23c1fef1d9c042ecad783ef76eb30a4fa2fcb4c6569db7ab66d7b10a7f9715e638d9ba0e4a5f5d17bd63657343ed251f5a3ca1d798f23a3440c146cab5edde99c1c8ed59afdf50d29080d2c8b01133244b0c241512e2d0c603015ddb27cb4b81ede7bc34e3c99dc9265571ac2953858b3649004ed6227d3f2e603157c0f26ca86607e4adc84cce92d37c918503bd43d1171b416d35c673e3c2d38473c5cfa0a19e7fdf56446b8e93b9ab63774ea08e96f78ad65abe31059f28a45deebcc85ff79e8bb58045f0ec1e7b61371928b52b86c4701efb2ef3b4676140629ea933957405031cd1e2d1a1aa726cfd6c634477a4913e0139f60ea0f261e17f44d1a086a9a6b379096d084ec35e68214f4e84f3635a23c27d7c2319f950f4744a6b109fc9491541accecc202e62f294bdb57a4c928da2822c653267a5e6ef08f6d8d8b1bc5d6f8f51a174695a3f59ccfb86f15fbd93f463325ff36314e5d5a8de2a9fb5492a454c11adc13fd0861ebc9b015c03ac7bbc7fd56926f22d6ddecd334be00c8a15c4eac459cacc56858dad51630e65e809b8fdaaca2a59ee3d278b50e6d849b9f097cc1238b3e4ebb0fee3455290f1f05386a69b8595d50acd436b8b73b7b86ed435b8dff64cc0e8118618cb8161c3838e1b514f0957820aadd511e2ef7786f5c6a27c8aee81ba1e09ad5f0afe17ecf220975a4e786f7fecb0c63915bb521ad97726543c99e80191bbec3619969b15b60aac4563830135afd1434965315955e8f4941dd29dc49d240d3ea3acb388eee2fdb4de6aad0af15fc79a037a91139364e1801a4e7aa5c3778086abd61ded9f37e01045e4b6abcef621b29d63d5423aa0914e367307b68e6f4f71f30f46c423eff68dbeb710c0812cad86427fcc1edaceb96475a0e8fd14078d4621831c0376bad301f60b423c2aa3e1b3a611fe1187f759ce7d429fc959e6dd8c7f8b2431c2928224084022186e0fc786b3279e4da57f291f42c9a3a26dc63ee126871d26fa5c54c8352079b348109a7110fccfc8c628a40106d9ea06c00fd3e8b85ddae2c720204875bd3d5a1ba92e3ab655ceed54165f16e28fcca32cb084d2b6761f89a3b03564e66497a2807b84d7d2995752feadc91c305a055159fc129b64f435c322d8fa5e29e9e27135023f2b927631ad9d0a253d64215120ac96bb45addb0cdb1a660d1ddc8739609bd70e98ef5dc3e2492a418b51be3d89f3bfb33ef3ddb1ffd307477ce6147452c29d9480fc902454bcd0deaf395121d64fdf88722e23eaa3c6d0937a5f9762324df4f479c8e98d33dbd52d812d705b412f80c024fd17bb9f6ddd2e672e650c530c96d3332479c8c37b7e3f839dc7e58e855a635caa78a05a546cf37b74b4b4fc019288fa351eed1a9f668b5d01621cdbab8610e2b0aba90812dc3816bf3b4fe1597a9c36425c0a51814e11726a2971881f056a4acfb6f702fefd37451b5b3cf1f37af747f1ab50a8b361f19ac7de6ddf5b7ffcf799c0f3d9a05087237b58b278fddb8c72fcf9e524ea08cc62da58e454c1bc2b9a4f91a1fcdd0b22971f98038cb4d56e0c69b7f59fc6a768ded2b29950932a0da2b85ec5b36c4206ea66779ebb7f95cd5bb435829726a9ebd80d8fbe9254836ba3c6e9dac148d58accf9cdc3f86c3ca1b36de5d83c07794554f1f2986d4defd5219340fa351e322c23b556ce16aba9f76c6647ccd917458ea4dbd77a81282af43b70ebc5a51166192cdf054906d23ecfae3a6c29e6ce86b5cc93ef2818358f7d98a1d77a0b59e940df6f4717a84f2d67e354d3419b5d1f491f03515ad5496a9be91bfddcf79296f3a9f6839070947034e6521bd7b14fa5672c6fa0ac7e899d071d5c10b6453157a6a9809fb192bfaa02f05a9373ad40c6cdbf189718a5c014cc93503e288e23156621c7d84f402008e8992110e12d4bac48b67d6daf76269ac3662303676ecd712c7ffa18c8b2a452a90ac86d6e941564e54ce9a74b04e75eb7ad6f205141a87b425c9096e3e35e7a46669b4fd9eb4f413e457fd22ea234b3950ca1fa78495debcc83da494892275fe7b28f56a253a7f056eaba144f7f5f9ea99937068f93bd260a2919435f5a73f67ac368add2508291199d49cc219dc6ab5fcb77259531dd6d04bbc663509a170cd367ae9a74e0da329586b54786da7e8abc60db0260e1137984d01a2a0c12738fb7880ddebf38eb7fb3c480f4797045e96b9d3544018e598dd307a86cb3205a920d3c0d7ae1d045e0f5c1765cc0e051eefd6f19df2ee330f9c557e7d632400e76d7c1124b7c4c748787a6ec646f645d2834b52055ac47297bf70b21c6980924943eb38ac10161e278c3292298d5e8929a469d2d86287b7eaf1336154f6807dc5de111f3f6dc75853a27e7ae95cfb2d75bec9d24d41006574516af9a844cb24dd9950d5beffc1f681635336cbe360e4c5157b21ffffbefdd6c27ead545c3874157fd50f970f1727573a42659550ed268bfdb09e9d79f26b0627ee318066ecfc876470f01fbea650c14afe3aa90b8fb2ab58ef1baf516f2ec58a1f6bdca8788e11f17a6f1879cb8b41abfff43cce82de928ec35a1085e0541d84a8828e0dbf699fdf4b69d6edcfc1bc5bfc5f5d5865ef9d592abab61410a7926fa3177a8f5be2ad5a276642949bc9ea140b6c40147c78c7861149cf8937546f7c56de5b9a648d9ecbcd7114f52f3192680e8db7d045b71ff38127a5121893030c20708e33361266568d5e833a46e7253bfdf39ebd328ed1011d79fcb53f5b177e9644c2fd793b99ec3f1d6ed53d91532fc10ab36945648059f2354e6f7e89d52d6b21fc8be35b86979c38d2ce28a6410beec87070fabe8944996e0dd944255f8699806244dbb0d6a98a0b7ff131ef92dd755098bbb356b56add551a7b6cea1a489a7f3bc2f7d358e6cca0a2ae838a0ed6e516f278c1b93f77c25bfe97b9537e5f069f63c6a106e2d642cb30024513a09e6f9a466277693d2fab76af8f71f50bbce7025624b8daa8b450f65b54e0679e1a874d765e9b61c0ebbdfdf937ec65a1704dad79482b9c8b4e84089351736a153eeeee0ee51262693a152edd835c26deaa694f4413b2083c8d6a4dcbe6fc52dd150962e682152ecc882e03cceea400cb1e82df39aecd51b8c31bc2a65e60bb67e1f05b9fef994d96c9d8737228c95ff27b2ff4096311a8257c2ac5b9d4fd9a9b7bd2615331b9db3cc41a26d33e99904ee124bb3488440d2dcccaefc7fac98d799769592bdec1e6d237139d444c7f20ea5d93a034d271a5990ae3f7ba9f32ec170a434f9f43267b1d86ac6e64a9011eab93a358bc434d63c324a38673821089d2754ab0f552fce3620259fc22779bd73182c666bbf517c677ed06712058e26edf0cde8cb1e50c59bb70cf2684fb0dc67d7610e0340e41484bf44f8091206709795214a8d2aa2ce46e890049b8933e4acc7a9cd967894f623113722e1ddd994d562725d21aa57978be55514d2b3ca413a2c5ef59f109fffabcd97f0b84d57e3d275c606a6ef7c6014c497a9f30c8589f314573d1aa8f7d020126e762cb6344bd2dc9103fabade5e772f5f2678b75ac3361ae0660512656537c0927d12f3f7da0e494b904dd89fd7530a94d1a147f33048b0a0d33396e412bdf13585dc397eb6cde0f8a1d8104dadb259b510465d51309c43a93652f54c858ea8a19d03b6766db91355dab1e93d634acecbe543d0fb9a8d428f870756c5f0f69d84f64c8fe17a51787cf0fed6b987bf888b57f1fb6ee25f8486b4e1a53bbf1cdb44ef707890dda13ce8b8fa45a123255a425837e90476b926b0715d026b7a20c9c9e491e6fb66141da9a8f57b4aa565bfcd8ea6f1a2da9f130663a5ce2177a6153c1001c13e7189e88d20518cec0dae55f1ff338f8e8a0b1917f400e33d71b32e945900e147b4ff0ab9226c733f0d59cfc1dfa3eb562bed58fb7639d1fac9933c3c92d45d40db80afadff4893322468244c170577f3a1cd8b3e33bc209738bba2e3fbee499189650f26344ac5b8486b2beecaf4686913e2f709eff3b51109bd0b8e19de33ee994dac2dc9e6d59eb5c3d50181b1daad69cfb801deb0a3b293861dad5aa533f6f35fe521d2cf2a41d8e07078e1575fdec6195f3b9c89883a7e1a2e6e7fc167c2b4d9eb44851943119400080626bae857cac0946231b3b6cba0a180ae45759a2d692a53b120f41f416273feb48c339684815c6efbd486d192cfdb1e4a6abbb05906e17c823f5c05fc2d289bd9f267d70e9aa46182e747bd80289257ae8fa628bfbac1dd6babac5de3e772e16d91b8710b722666f9aff7cb441c2128a979676c893f80ac1c1a682d1a9b8347971bd64bb82a23a1437428390d79f736d72325535cbc254568002032b21937ea4801ffbdd1585731e6da0af2ca3277552b25131722c994cf3fae9635e16599d710bcd90238d44eeadda1ff788f7c18c8cfda6cfe75d665ddc246a8fa9ff252b87984a6c9dfbcad7a32ad577edfaea1bca40c72da5be413fb8a45d0f670b91cdda0152a4029fb2a8cf88a4d348a474bfb42f5c76a701432c8b3b30051e134d35ad43e0eb2604eaf1c66f39d937032e330f1f9dd030476fe463d6de3fdc85b22113ac386565cea2dfe083f04af3bae96555887be9dbaeeb7a689c22c2addab1d44b3336205c7607899af4a8f4db7e502999e98d7560bf9b5c678ea9cca5ef6d44756968e7f147395f91400d7286ba745f70ca0fa919b6aed26cec70bdb81e0b153fc98be67a2bf91f8f7a5d134c193e0ea6333b6da8ac125a57358ffd7be1cfeab6bd73d467388e6a5cbbba71ffaa16c1fa4f34b1d854a0ab13981e0fc711e974259a9c868b79f5f8ae4a66291f41a7fb17b9bd4a9a1fb523490efdecfb9e82496e801b167f5a0452b80c44b227142f979f4952f33dc22612c1a925b6aca7e89be18784dd33d9d770480d8e5c8f50fed7132cd31246c20b3fc6d2dac0cb721f369fce0342d0fd70ec7183d958e0a9a90d4e515ab2528d5d8463e441943879d011fafed4710d7c2ada948472cb6ad71da9c8b9e8b7bcf3b0d7a66228c91f0eb39443ac244e1a5ba9cbf4c51fe986ad72f442fd5414db3699eb9a799a5c45bb01d64e17ef9c4ca248fc668cb3d97d808e7581c00eb8e4a042b9f0632179b2e71ed410e336242eb5525220457cedb45b12ea27663f9ca3183985e89f8864b7d91e2e74c2428bd4803847b64c7d7e569083c96169a3dddd82a5d313ff11aaa2dd6d918fb0e91583701d14cb328c8eba86e6d23d7a0a1c5d5e5e34b441308de4add36747161e2ea8061556ea549cb795f1b5e225a71979553ffb72deb883486e7bf70b111b60d0138f1b181b039f10903f5d46e6ddbba29340a4032695de17f16d77bc1ce48faa46ab5c089c03eca8e68c1319c8355e2ea51cbcd20873df45cf14d9b572074953a1a12c88d7cb899e2a883e86e13ab1c7b0514dca8496288ffdcf26fecdb83bad1288616b9f4e2da39764548a704b38eca3716036060112d82c994a7a4837aae39e84caae7ac9425c71e29013d2b7dc0a0d854f0ba6a127469da3155c64b31d00abcaf5e049129ab0b2ed68de35470509cc1c76b00658f3064b16c1407b77c3b90239170c8225efe16dc649bee125d908aead98211fb98e749a1144768682d0635011a3bbef2da19e20550ec1ce051e7684420da701945c568870cbd78eaea678d5b7ce02445d1ebc454300815c2214db0b06a2924acddae805682a7acececcad80e5351a02afbdd4da5b9551c0d165c0e4546c2d349fc50e595cfa06bca3b38fb79a47297e9687d6cf090de396335d83d17b5294d3e28e582b47e0da28f5ba91abe34408d25f06a129ca0ba5064ef2591164da336f1080e2ccfdb1143f4f4bfa5c2a2ea7395096d8fa41f1b6e5bb19c33465ed490538d3532281c5fc20efd745cc16f81ce31e958d81af5a1b26905a0e871efe11ff2791b6690df1102f6fae97b8cac82be2a1fc502ab989320081f17eb530b18dc8abc05c590b52d704d588d49be592ed2ee9c7670f74b7142aeff77be0909bd17bd9ab310c2014ac5a8e28ba9c2d950943a4fbb0dedfadf80947900bd16da07fb845d73043002444be4720618683d14ac5b006bcf500000e5f109a35471c14d9d44eff56b48b29081ecc88a2bcfdfe1e9a28e9c838a713bad20ec6f013b935b35f74e9861877596dc48b157982572efe82f4b410d42dc16cf15300c0c5dd9cc69322a463b2178a2e9faa34d2df230aca1cea121e2440c7b1cd0c69aa0e5d55034d10e2cb33ec98bb6edc10feb9b933a0f358c1a171c04abfccda3866b4c36014b79fe423f931f97be2c5415e1f9f6fdc0558261b2bf671f5c6296f4b7dc1ac3e9f56b7e8eb49b951ebae389ade958eed39fd184d12a99a258684634f4bee03336acf4d564f24c633ac373023fcea1444940120ecff77e98fa8c27778929ff9be7b3a02ab8b137adb296421e7fd8efc675a9da75a4ce691a6b653529a6a97a8a5cfc809f493435a6718a1e5112ab89b221c9629fae81050f24f2a48ef37b4f3db0af31a7d63a02a98e10e86b1ac909bfc2a5f6434c20152e872aeec0f3d2d7773b9b5b898510d1cd56285875a15a290c690bdaef2905699da0d9231ccdfb030f861c7b02cb32df53ba979e19ad130d5ed830d234032a58969b591382b8b998a6d767eed3ec68faa3b8ec05110953a51d3278d0ea8f84651acd4590a40122f6440e68c8367f4c6c252b4b0e1b0c18f454ed3d24edb827fa731b652691da65b073c48944822cbc7776182d5c1e387ab643e80d3fef2db4e351506fed2e126c83e63776dc12f322d29210294521dc7d1ef00b1fb24697bdc2daf704051ac7257637d2e3c37c16aafbfdbbb63134940df6b3c2ef343cdc0050981270b3b962caf7fca16b1ea2ebe27288eb90e40365d6efb1d6730534427f4737e883aec19b8f8a4c4b46c13269d11c8809eb1f9092358d01bc6dd49a573df04ec0f3643b4cbb1026848cd5d2c06ce6ece399839702ee6b913f8b4a46f48f271ed48dfab3056f6e9d3f76e705e7392556cb281a987c46f6985bcf0fb6592212dc8c347c372e0edd136cda60ba0913b64fb837d69a609b5a99ab2bbe8c2240ccbedc59bb4e4ef77bad466a9434796256402a1316ffdb5be6dd7bcb492ea814f90ef071d721f3740eb8e9a9246082c673d933f0f77788784c0917d5ecfbe312e4483793d8e7ba741bd57089509bc302254729a8bcf19f2d53aa1bd195391f59962c63e97dfbea22a79a637aa332e04318d95b008ff25ca753dbacde4e46ecf04ff2a434a44f9fd1c001ba0d1bcbc10b648fe35dcc07adf27c9592cb57020b8230f4633b48f845f9d74fa3721deb054132605f82c3515c5b1f9a98ca9d2228bf415be889b9f25cf8afd9622c000ff8e774e72ebdfa177a694ca411766aa31e90de971338ac76b9e23d8c62eeef7e515baf3fae82965690abf7e68d4e5c3127f6409b9a25864bbfa0bd0b5f337b6cfd5c1718f015fb437a30ca5bb85382597ba9a43e6791c54e1f8eda8d2b0551b44dcd5bb68327e91b4ed7130d7f576556f1be3d572b7780d44bff5a3f3560c2c5984156a85bb23dacd7cf21f9867828e232a858fce24e62548f37b3f3ac6b6c857284d28ca82aa97849b49d1e77a341891cf13a7903aaa4ee4da2b45aea3e1a48f56973e83b6cf0985603d1ae38eba8b025975126adcd406d16b8b2cefd739c2f30a137617592bb9db6334bfdc3f48e1512fe0ed6751c18fb315e1300452ed2af97a483060c1ae57ec12188f66bf943ac3995896f479d81553444453f0dc39b0de7a5a58e670869a0a4503e5c4be11e4b0493f32a64e41e4b235c7e45c17197cbee6c158e9009fc7f2df80414b7d5c4a2a10620d591621cb78d869697cccdb2370846a8d1153854b07dc69dda25556d811d335993bf037df9b36d941036b4f65bc6b399192d5083f2a08fd2c984a98f3d3f40fcd46a21cf110c7430d55e188ff0ef1d93852ffa2169d89cd3019476e67a13fb02453b01bd2f17ae81d9a923c066f9b52af9418a0f56c1fcdef2dafbeb7d4b651ae375809b47d4b1184ce61a65f9037b8e0ed8b2aa27cb1e46ef8941737ae34e81023680cff5b997a07c232e252e7bcb5149f04e83c94e6e8d609f69e5d9af7ad184cda21d506458445c3c345c874168941e96b4035ffefb39f44cc4981f9a3292c9156bdd82373d169d07a50337a23cb9703b8ac715bcff56e498cabca00b626015a83e681f55af43f2fc9a0eb6917d439fa7b5089f67e4e1e6942eeb9564288f4b8a53a6031d3c18959b70663d63c135ecfeda5bfa6f82300819dc3c52e5363ee864a2681ed943ce01a0c4005ffac9d677c713f7485197db7eaf702eee218ede1da72eab366b4c12f4be7ee6e51bfa21c98b643be2ed0f891d920d0139643db62e14fdd6f7e8a50f5cb1ade1ffb9aeb3f19a6b5d27dcf87b535e3df022870a457fd9cfe236dcb3b87ad4f0aab83f001479bcbe7814d1720f71d647503fc4e5955386af8c905c9a3cb9d1ba8fcc0acbf11b574aafca4560e979d6019cb27251743485976f0ac4677f6c844b46469f084792de7c7462dca0764d3de61c3d34ca05e82de7d6c4d9b8eb8cc84358c2a08303427c82c41a5a84a3d630eac931cc8eb03a95dbfe9c3696ec817d13a3d3e7236556636bb623320e86e0823625cecbe13a79ced0a11300ca472aaaa0de4883a81ebcb170827f698344067eb7c2c7191fab8e1fc77cda3fcb307d010c9fe0bb5c3ae8f226b64d9c7762bd544f55bc395612b2f003d5ec1ac5e2e3654e2b5d756e754c16e49116c3ea6706aa7e9ff63467205f6b097fc48ee0d105edd0137dea37d65a0c006bec43b495533c8584f62964fec9cd659189b445e4838d0289d53d308edcd084450c3057b69cdcbc5856ecc098a98afe3a4a6bffca3d28fba93ce2353d29fa9f877a9b5580d29ced1b5f9cdc3f930d863be12cbdc1ae36d100c94862583a0e42552e9a512d37c1ad7a6533fdc7a3106ed0130e648f071dcea672fa4984f29827f3870df703b12f49f8a3a572318d77d30adb6c07883616b01d4a8d2ce16a3eb6756820d3763c9dc66742644a2642e8cc33074637ec458b7e8127e2a45d40520989f15649d1ed97eceaa43ac6ab2e25fecd7d9cf898f28e0c1004d9792f96a99d2d3c6121d7dce45541413cbc1cbc92abeb9d21664bcdb4b9920e26cf23c1dcb1a9bcaf64156bbc9563ccc90241979edb507d95c149b0bbc46e077a8cd4801fe85b12049b45a7d3c0ae5d6fc327a055d63f87c73d7f4b4b62b6649e41c1947493cdcf092c68ab1f718ff9a675c274a13dc3834c2d7d1cb32ca558e8494c50d2cb411fd36bba50887a114451e43dca8c04a831edc572ead2390104d73ce98f503faf7c61d0474670fbd75ea9aec32fa8957362366a986f77b9f2f41ae63aa6b016a2659892130eb9005655455a7f9ea5511b17d2c659370cde9f3beb137c78197c6b4f259eaca34f34e3230eab7c771d17c600d78b1c38e046d2b17f631ffacfbd4b6df61b41fe99e9a54ad4231059dfeeb3aca0ecf9d7afd3684416c023f76a6c6fed46866bf0d887f4a95f086b6fca6345a9f28d7611cc0df7dc027c346afaff30a1c8e4b805bc78bd259d26714b56c2170d9f5546ecea0d50063e76a5a6419b90511adbbeece236a50b353dcbf9c7c8a9945836f96db400f13666360b05fee306af7f8620a26a4616368b2c1a8c451219508a76be0c6f8208f78c775fe5fc311338aa848ea843e5a48259598c7c0310c5a1fb28d0154c4bf11c16e171e47eb210c73265d3b3f89565d0d425da57ac5da03ec5f6c4a92d2cc226ec77a3a751c2144d7e443653b7488c1f53e5b549d3c9f53a24b1e0d944d51b73152d701bba6fa992ab54acb95778beb7656aeee5b2de487d5c7d723d64d1332f99fba386b39403e07eb020d97c90b464064f7d31c8baa6e567d7e266ce85a85622dcc4cfdbaa9408ff178c6936e4fb29d470d96f352ec5945e7f70d327b66daa33c83345737446b5f23bb47a3fdfe9349a3d7a89355a205525f14e205078f8a1d1c270d6f9410fc7b434d05f0667991534322017abc7e180bc8d12946ae42570437d364863e9321030fef8875c8573526d4e98505e026828ac9f70fc6242e293725efe769130b8daff5a183c1e4b75bfb017f8fe351626744d333bb13c0db753cc696e62401e78682cc7f014506b6af46ba976b96a03070a46cca43ac4cd0f22b3075d22afa6fd507a45577f8ae6875be52e0b55f28292d31c262244b5ac97ab1d42cb11de523fb8c102e2c5fdb5d85b205fbb2b45830b9738c3cc9dc254abd34d80834e6a1b57fe12d4f710b7fed8f0f70fd18b2b89e899648e38ac2e3bee33ae7f4ff529ce20a1f1ee50e2bc241b48fef8eedf608111f6cd825a3b3fe3a0385f5e6e24d362a5eb743e37f6a43da365226c4e8d769559014d0a9c165f94e21812c016e7cb624a92a12955b0716dc4f3564832b1be0a448cb5aed0e75d87e83ddf3d002586a70c0728b77795a0a43f79b8a7b1adabe31a92839676f4c81bc66c0d9a3e20adb74afaad8b9e01a9fa0b58f43dcb6bbee85c499402907e2f3a106945cf4f4b1d8c3bd08c206582bef42081b6f240c0d7709f1349e68244e51ff9e4cf9f2b1302bc2302f8353c2af8784b12620be71b8d0b41ba62fa48b1fd7d419a5761cc9a7bb8dab31ac74cad14792083b4335672f7e1f2e229eb29d5d789891b037a2a4e2c0aaaf4bf22043c7f0dd84350485db421a74f84a2680200cc7eab539065dd422a5ef866526f0b9cad66cf52bfd5abaabeecc6edf81cf1c54f39a8f58c18a48cafcffdf1d3b64765faf3f05af07e43987dcaf33536fb145498d12cfc77454d7f165c5ed602b3e10d7396f563ce451417f8b056efab0cd300e6aae1e44912fd666e3192c5fbc121b01245f04036c71794a59405ac06571abdfc921cbd5cacc8fd7b0727bb681ff1a3b76aa7e8bdfecdea8ce4ba28ca7c5bddbf92a0391b54ee970df8f4472ed91838742dba51f2fc91cc3cbce7afc4bdef742ab36260d0c3c94db4fd0ac4daaf04cfd30c9c03249f5c4a5e4ebd746906ffe4d2b8c03c7f014291aca6e24cfed1483c71b8d937ed95565e5285fbcda8ec74177789863eb18e0dbf398d8ec9e54ef4e70dc4e73ebbb9da91fc6ad3b11bc25a35c4e1ed8f0f612cc0b9054e861136e6b625eae32fd7e2443b5874b12cefa9280554107af124eec27b8f48295d10824e6203951f5ecad0d691088db26a08f7355ec647e828568c5b4a03eb9abede3dadd6a7f28227aedb5e8ed797af324ca1cd1cd62d3fb177de4b4fc2608da9e932ff6cd3d3f4f88ea64f0594d19679139d4cb48e6710ced2f91c4e683c0ff1b5075d39cfba8ce5f21b400f06193d6ea45870110e92efc31f46d1d199e42b7cc8cbe2f7f84d488928d570d369c342a44b43509acb32695d42a7361e305d77c3beab0ee576df75e3f7c3147e798a3ce61c4392f134f469e80ef914df53982291c47b661055d109cf96e69c288841c9aec08bb3d042f6940293b6c0b39962fd79d7cd7c92df762ffcc37a33bd8fa145a4512a0607ccadf9e06831c873c20b9e13b8c4bd4f0c34d438bdcecb45b543c11c9a290bd364ef9f8ea6157ce2ec8d34c36af80e7a6681152f8c935aad2cca43663d90e2759090004afa3ff5a3d187bddc7d4b1e952737effe8339cb300319ba271f3773c05ec66b6011cbdddc9c36d52a1255299335d9699d3e8dba320bdea462fa11292a559c1a8630455327462c11beb8a6ebd13cf655e5b48c8bf2bbf211d241597b900d832e30f46839b2031bab3a2d620e8e53b5d74dafb486e4744797e15194cea57594aeda8d31dd1cca647682a9215015779af567fbb861f2d537c46338f6d05fb8cd543d58a63ab67b612d50118d03f16af5ad56c153f9e7548ec65923a05947677fc156aad56bb21cba15ce9e227cda5336c9371ade63f27df2db815ddbb5e75ec36a3f26f4fdf8140a6d9df3be2f0b690f46a24393426137e9f2a498aabb5aada0cbf6294c8a4a0dae91e215b0b8ebf8a6fdd71c89a59a0d4e50aa1a7b4ba1a1c4c2ac9198420400d6d6bfce69a396efb61ca2e0661f225f7b4b70940db2a164c1d5cfd512587b54915c494864171217b04c682537a86ddd4b8cc2fbedc1df1409823a0a586f838d418d55de147292f29c19050a4c735ed691039a60adbd904c851858d064563ff9c89c6a1049eb1a1f4069590921d891402c5187884eba9ed6858e57de94987790efdd892754acfa0c90b5b8fc0f77d5f793d70a6a4afa08975f3a41bca20239d02baf20b24f0c0aaf42ccd015128ed4bb55d5f2cff327b668357f1f921d74652346e69be390fffb3efb0a59116181e948c699d3adee0e33cde143cfb5c5915cfffdb23b941b30d7314b5f80f59a31da35802d5563b62ea84a659881b3e8fd3ed0dab78ef36db054f08335f9511734e8ac5b275c3708861db6f73ac0635c43632c0d96ca2d625985ad16c79c71c45a60ea5f476c894b5849caf5eb1899c77bbefbfa634e4f38b26a026f869e7d3cbf6415d8abd7d1d26d91adb90e0816f82e65c03c3d4d666de8969a3810f00d5124776513afc58e2b2b769658a5b11099776a09025d758c1b5c22c7ffeb74d3fe7fc7188fca7cfddd6c917813b21a444e370d3d916eb52e16ab6a19a44b56529acfa529ae2b9f3de1c5ed45432e9abd5a29a34a0af7038edbdde8087451f918fa200e4c792ce01dec15a952c171ebfdff331668c59045edc3177d5c9725d4dcf33ba4b6e20ce06204ff7347a4d98ffc70f6fb837340b8784b0122255cd4c23b965d0496606809008feffbdf7946bd42b284966a6a2b4b4c699154b5d7fc8f8a24173b97e99206b61c2339ca8209f17c911ff87d9928880fd204bebe2fff6dbda1cda9ac20b89b7f99485a905d3ff0ef0af63a839284eaf0527a127c0a475670929d540409d56b37231bd0be23772ad4289bfd248692e0fb90091e74423b73eb322f455a4fff2c979cacc24fc61a07ce7c3b9d73ea7ea2458cd0077c4bbcbaa8ca8fb7a315160c6556a108d8c9ef0c4c3d882ecc53b564998be75b4390fc6c7d669c821514d2d08e2faf759e591dd783723ccf3fe35304b055f9df251b4c9649c878cdbc4f12c81d1b36955fc037741fdc4be86cfd496b9920507ebd318c2c3a1b6010c0202a989111ac927942cc30b6285f472d61b0fd3a541763c8c62fd472b1c03d7083dcfada7c47789fac38523402b8e37ba57a69b3cf70ba1019ac6139297577f1e91beb4e45d36754f27c11bd9946bc368b10ccd9bbce088111673def4a05c51b6e4eddae6bac6a4737171cba759e8f199e5537f2c0b0f949daa0cf13dd8eae8e1b45ad9025ed8d5af69eefe2005a420dace6db4d45be30151f1257ecac4ff10b1e40dc37ac25502289ce74979c3a8c27d07943b76ec05087bdb9035d5f1e44bbac6c177cad20986be91bd3fa899a154fbfffa2d6c058445f22a2c27206cde88c26136121ee67d6139b2d7f3ee704b6c6e1a0bab93bf8036fa32c36ef12c4ee0a700840b5e767ce2ba2a0cce5f333daff039a2d1874809995bfb0df1baaf6da0e6cada2339ff8ed2b21d971e39074641784458c0062b01f03b39a5e2fd351ff6f28957461ecefde8e1d747a8c84ffea8e9ef2aec57a3bf1f50052715051de9fcfe89d217fa6a1ddd7dbb84111d0466552dabfd0e8231c767a6f8fc1d240f916bac7c7b87274fb83a495bb61aee3962bf44b72c64cdfbb87fb50ad758cb3a234fc68ce6b1ea383501dd7dcf6c542df1f649bf1297ad4b312a076a34eca133147e05cf261f1e7c166acdca8e399d779b196859dd9709a6f7d089b7b1b4b2b79160cfbef344d0dfe9061f9680a29597b521791da312c761791d8ad330a86474641fe18c03ef7550c70e95d50056e0bf96b13121a39f91b929b2d847e0354aa98af1d5719cd1695dc20fe0e7011acb93548c68b084a1975df4b29688bac9fb588a34902213bec07f8a1b31ac697a426fdae640ce64c180c6375d8007e65e5bcdddc4f91f5206eb60bd327c649b9115016b9fa10bfb547af1bbfbf025226f71f40b90f3d2895785d32cb6d9910a4d80c577933f69d6252ee5a1db301ce0924f6507bdf56ef4cb526250967b86ceb3e6713fc8971120cb59f3dfb4175bd4113419846e9a60f973f1305f4e6bba49cceb8ad4480dd6a0f034d2cf6795c493179b5b19d1c81b002bf94cc8c404905bb6246e74331e030cad13ae7828e02f5a48f1720c29410b718dc9f43e1412a7c399cc6608afea32dbab22401d1ccdc44664d1f8c5f5fef664372062003a01b01f7aa6623c4b5f5ba069f926c3399d1fc58e24207cf5b7faefb1938141a630e9938219cf7f0dd89df2329123e57c7bba1a77fad240889a1796c56a3bb377cbd3002401211f402e261d841b1f8431c85fc038d46537ab3a8a9f950b26cddfa11d5df8978aa7fffc956dc52873ab7726fbe9d8ffe07954cf69ccb9ff5074adb103c7da214dc10932f29afa31ca7e0d4c10150d6a5f807f429fa4871da24b61e7c538eab48d760cfd3a0fa0429b64f04404e568b2a1c99e3753181ffc149b01b011410b7c30da4a2956cd5630df7eff2282b980f65d249ab5fd6aadee7ed15f0127bd1e544f06ad3b0213fb95a5f1a28473ea3f93590a1db060f875691edf05945e9682e7e2be5424f624f9e54e20402b5ed0f499c555753edebf69a893ae90ebcda96969d0480f377866f0584fdae11de5b134f96907292ca8b79baebdc4c5a9b908b603996489385a97968a615d4b1238932a3564145e1569b4afc2a2bec8e5a680ae712b3dc6441105d4023c3b38fb9f621c5589b26968eea0105d8454bc35b0cfee923751f53c52a1af70a6aa83900a00821c58b68a9bb4f0d9a67ca936f303ed30b8a753fadcdb58534af84c8aaddc898e494322f4cfc1fb72f28547d8ddec38398d27f904ea806106ec7fba35ea3ea78173804191b02cb9d74b4ec74e528fc1989addc8dacdea6665dca501179d80bd47e34c17119440454616155f1202f25b0522c9b2b8cdc93ad2d5a1be4ef43c138f51e08dcda66ff238b5e074440d263801f104426643cf896d258924c659bb4f1cf60c17255f64b236ae1fff175848cad23747473b21efdb2908ab5d3b5b8f14cb5ad842ac18e57c836b4216ce57e61a37f87bb9e635b18b22fa4b16c734236ea8e17ca2a40f6861013c3bb3af2cc67b3fdabac3c14c2497c65f65ea18697f3650951993272841969047081f4648d390d045e246204c620f3df810d28f4756d0c7fddc19c797b11b775fe22dcad670fa5521ca7b9cecc8d198d110bf81069f99def952e2aef456fe4d4351c62b9f150e635904dbcfa0157a9e4f655d5635822a10d7f793213c926c5ea9bbb1f533a6515ca5a1b368f175a5f4c0289e80bd7e512d56d18e06a34239e052d74424abb531acec347e6023f9aac0464bf529f683fc24e2124dbacff87927bf1dfa949321ac0bd141d470c00b189df0bf0fda1edd4bc670647c67f32640cf7eab4feffc4e985503408c0966645c8702edd92f486f853a41d8a377fb656727e72ce31b9cbd3d1c823c85924d2bf8582aea2018256a03194351f8678aeaa6d0b793b734b460b5ada5679ba004910acbfe34af4226a3c204ff7509fa89f55948592caa792633678e99acb967e4fda7c3c317731576c387e54f81a10ad4628495deccd901d831692a9296b52a2479d44ef187f8063d26c271e6e1cb3b7639abd08025ed430236c4330345bf19f8ecdc189c4136bc230d4dafe588b7047de9eac8c0d55306cc4cb0a4bdcf29c6030e890c775e4b5f8312cd47e19afa2c90bbec9f4084a320024c2214345281490e937967c33e9a5357b1b1235c56e6731c40dbc8f4e0bae0d307c54ed2eb2116abc720acb64cb7f27f433c6793d9a83d119e5ca12fed69ff2ac8ab4aaffebf3a16418669f1097ff3267ee2bcae67d5ad302ce5088397edc7a316fdcd935bded404f7b8178e6bbe1d5005a474ea975c779b9f352f1d6f16f6a469ce4fc6710dae1b26eaa1934e28775c0476a6ca31faea1513fa764d7c4b5bb4a9333c601aeaeee4487a2b04adcacb7e816bea0cf25c372f3eeb33d5d521d122a54f562ec19b9d5df637627244280b6b3daa40fafe8a1d66833e2a97b43603c7f30effc097c6ec19dc6cf4061099bee8f78292542937963e1173c36ca15fccf5d88e6dbf86334ecab75d05d4bb953412d7dc954576f18376d5f1352c03c66c1a0a3fdb2f92c27fbcf4261a773f4126499aed5edc231396daf \ No newline at end of file diff --git a/blend/message/src/fixtures/encapsulated_part.hex b/blend/message/src/fixtures/encapsulated_part.hex index bfcee24e6..e78c8bef9 100644 --- a/blend/message/src/fixtures/encapsulated_part.hex +++ b/blend/message/src/fixtures/encapsulated_part.hex @@ -1 +1 @@ -39390701180929139cc6908a6fb16fa33b725657a4076c17e378cc82190daf9b4de93030a9ff9d1d81a1f4746a56bb2c284095d351efb8c93aab8d23f6ffc3887547378a2030d80d8af60523e8941b830c0ba428afe73aad8fc500ca74c0af4f15124df143938fff7c94c3dd1f14e32901968fd02b4a26abd777982d3b3bc42f62e596946fddda1cf9f12fea61c969eb2031cc7335f931693fd94f1dd7df199b58079705ddb9f661e47c055dfc270bba8081476122332bdf1ce9699b0058af7be3d59c3efd62b892a4069537945fd5877f587ef1255ebdb08204afbe9f688b4b4aa7b6df2309e9f501d7c55dacf146ec91df38e0a0769900260dc0c7e3cd3ebe474fd15859d2c4b1ec31960f990413472a9d928bc728624070a5e7bfd3c5ce5d7f582ed0132f5e9e89d2971a3b73ac78651f7ec26174f46fe8ad3fc6d6d06db239bc5164655254adcd0e3534839162cf5da392a5059cbe215a58502d7c70e07a7740b762dcb8da864626507b94ebcbbf92368da3723dc1a85c07717fee4847686c69cc6660f1201dc4270949a608108a1180c0d62c2bc632ada77a83383117ae9a22a2d3e498d4be61a1e90bdcd2613097e237e164c90d97181547cb91123509cfeec3d5b98b07245d33c58a103f52ac26d4e8c02ba12ce71402a1baca620da3cd46273139bcdebafbb3f0c2eb7394b9526e615661fbb0a5bd82ffd709a2144635c6962d4461866d33ada17fa94cbc47f95a442a7351f964bb6f2c66837e39b80b61a4f75cedb8dd8ddb15e09d1371799c149ac909de7761f639fb043fd23df35ebc0811cc0efc6514b82fc62b8649babdac6efa98fef1c012c0d2dba5b3d7f17b2e47b63c93834555524fd641c8037c72375e64ecc7b820adf80a4106d6b61f9b7ef8c9e044bfabb36f4598272e887a973bb4672f5d71f8784a98139184fed318de3b7dd78d75956cb568becc0254d541842ee4784f6f64e50868ae87c999718ddda62c36ec75c514279e647a8c6d005b06bcb65428f0b1dd7c24b47f02e1b252d1989c39e135d4e5a950acde285cdfb992ee95f7057115f131e5eb3b138657988213c33f4f8ea061f70bf56de2276359c90b640f378c000a37ef341ac946624ab66db47875a9295e7983e7cdcd45909dc68f9b5b7f8afa09bd1f6cb1baf0aca1d1d4a83804f6b9d664b0339d92d6357f543d9708934a7ae14c5bbe7f99020222d82b2101893556b20a09b51213a210a24c25278ce1101191a4d08f5aef508463e2e875483f516ee0613eefd7ca06a960dbd566d0c9a59944a746aac2f65ebe7c58ff29ad4a305948f39eab28867549e4d3078b076c68f6181cc10dac7f9111d7ec350ba7d60c496b397abce33bba1e3e263d97f88e392029a361849aa60001d16633fe9946d7afc9837813865e6caadedde1c3b56ca1a54e3469a5f8e5c7b8d5446bd145a712da5b1e8eb66ec217bd4f081d74413608ea44c6a6c2dcb55ca59aab30e8b5dae57dfc11329f768038f79d4358c051c3bf14f7b41335b77804bb2f48b9b6bea482a940566ae0db35f3e100435b6de3e75a4089de498417e776c3a87aa4d193c2718110380453d41e4588ec03585668a159a2c73bf625c5725a37017b52cb5d20f14969458f0ee75e462cf3f2d37e2f83480fbd876cb507d9f5027fc94573b9902bee5e1ab4579ee469f025ac1f8b728a8720779d93634cdaa4c6ac0b5f8f1d144d57ecf724ba6089b47eb1507a14dfa72f5f1eec5f9c737126b8f32cde50466e92732c4944b8554deaa528b0d9863e1a1d6201fd797cc1bfea46dfdda23442a9d87fe4eedf0f2bd60c37d56029aba39c0ed72ae107a588ed529915baa90d2b58ad988a86fa24d8b94e1b7fa7a59fde8a49615242d1ceece6c8ea87e92ba9251140ae1aa11cd45544700674dc7bc7b24580ec3da2d2649cac5eb9c7df6c91da8494c26970cb84dd35455e7f87ea824750b502d7361a50401a48bf616e9e4544559deab8cb3068f81c4607c2939635f7bc9aa369ae83738187a95dc5153a98f1db4ac83abba7fef6cf440fd76899d6eaed565f155b92e15f5c695c70b02940593e77ee7a1432dbd35266e0ea4f4c1778afc3f809db0c7731a370075390da164bb4797799b550cbc602d7599a4a86ccf4e629de47a3a2ed445f09583de6b52d20b6a5b12d0719211e24bdd887e0d3d9583aaa77a60d2a7dad0af31371eb07ff406dac62da54114833523c61c1714f1975f6bf3b2ab7b05ebeb7a792ab91d991f15a238d22a967d73c95ae5ad41d460668b4aa639f1deafcf6d6dfab5ec834c46fb8802b646545fc780420c652a3f50346a0133d8cabf81180e189f8deec8a89d93aadefc949c1969ca9e3dab05e7db0900a39485d0697abebb478d7d3b1c1b0ce952e420353e8264c28519b507e7c00e1661fdb2168e57bbe2a5a46da86aa46861d2cf4e4132c77b254fac69c5a9866d904b6499315cbe184d0bff42945ee6694202580a49d7b93b8bed749cd0f4f8a127dfd0d07b04cb051489e7e3eb05b44debe85dfbab3d1e5e2e124b6a5dfc85068a2b5ebd70eeaa4abad16d4ad43e18d5c0a45608235cb8ac78d3301533bb2f19eb1fe2f2640650aa842b9fccad4d9f16d31680f6ff5172039333ada7824ae281e3aa4a8b18734e066f333e185d65ec7e000be7f0a273475b5c1a7c46bbb6b9c5b6f758bb6d345280487ff1401494a3dab56c8734b76e61afd29d86397e9de2cde122c13888c52301ede99118c2496141536b5fa378a1fd43a32c3954d31a79e06dc64ca5eb5cf0423b68ad5bfeb50fd4f1dc2c5fbcef6c0857e4244848994a4a78fa1534885fd0562629472e36256460277fb72864bd7deef78ed963c654acb71c9f2116d156b0b5a88a9d155adecbf129b802d892bf41bfd2a7ffc5f6050a4428e7c414485064632969c0412319ec9e5663ce451cec1bc14498097a2f0b6cea70e010710d4eb37638421d5486000f8359da68ad232009718096010f7253f97d016ef87c704502ec5d6ccf7935d61604998b4954cc9a6599de240bed10ca82c9fef5909d6937d29fafa41c3e64357252b49299b1b8e30f98481f9ea5078ea1b4120ecbb3f137219b6236a3661a8b52870fa63436e596a776e385ba1904b3af94e80898bf021ffdb633b6c609603684b3b988e2b21879314059caba927e3f973d72610a3529497e8be2d4e50ab5061253667dc9dd5bdd312606446796921d04b1833e5cd7b0307a8c038183ed51848f8ba7005de852e1f9c979584ba29d3aa147d345ff80fc2761fb4c4388abb3d43bb2e22b1dcdd55d8ee1f60daf40ad9d205d5263361b97ecfe9aeb2ef20944978269946a8870b770bb99d62c84150378397c4784abe26958ee06d1a7947778f53939baf0c7bf2d415a7c9ee7a99110d2595164ee553dbd5b1bb4ab20ec8742619fae49011a869d9f4c79badb88b1bb9852331447f46b3837358e763672b22a88d409c9ed8727da0bc3adc841c6b6a802a307e53a3a7e785e211d2e547f361800aec1fc40642a40f9824832cf5ae1a49288018477733f5763a1ac04ed024235e5e88a30435a6b3a4dbbb06942967ab3d656e1138f79aa677d162b5b97cf23463a1db17f5742cb9348b7d716edad5c03f4ef4599e304dde0f8ba752920ac4e9e647376a48d0c6661be286f63fdd68a36f37402df69cca66f9dd2f91a58a4f964bbee7aeb882279b7c4b6d9e0da6a0741598838cadebe824b4b90c8cd1cbd9c267db1081c080ffe04f21113c5fba467fb3d065cb1d9d08cd4300920a379a98759ab089486e58dcf9391c203970e778600830c07a151f0cc3cdf66e284f0e68bf615f61003f1d27959ecdb7ab9fc9dc243eac9efab142cbb011637c823409b6744e5381864ecd7868a5dd8345700583c7e403651adcc592bec4ed7914843a3f15043128615c506f454a6c52bb69d4363985a8c2d06ac51b675ea31b01441556b11d7847d23f762760093aec31d9d9beda2119c11cebadf17b61d808d16d02ac851fd4702766fcecc4ba194950d22de26fc6abbaf876695edaf3d76f8aa84e63153123345413f752ca2e3d238bc93e89a83c147aa9ac62cd8600eb06a6d5e513889e1c4c73ee89632ef8f83faa1586b4f70d52501f93eb7d519eebdea91df8d7d20431f33d94d4b1da6ef90b56bb5eff2c1acc845939173b82a799991df922a6021880635e9f4ac9d50d7ddb457bc3a42b5d015ca7b64069097dfd954819b099cfe65869b65db0f6205ab7361d305d8eec98b49722f313c919e4c976f38b7dbf4acfff6edf5743a10fa13f747550b4a6f70d540b814d2ce842d430d0bd83e455be80fc3d25e199efc5c1cab76c27e3d28de63055c3ab9a6ff6e16a0626b07fdf8276a1bdf7bdd30cbf6fb112b11586cc12ced31313c9fad8318b80578755f25e94e510d14ee054b8063e547e637e1e5751db4053f27b950af64113c7ea7d1049dfd312e9ba13f3077db507c8b517ae7727d979ee6c81d7e61232b9e454fa43abbfc15a5d648a63b62a46b38f72459f2a8b00ee93a8617b3bd9d85534b1f3299a21eeb300200d9ab8b048c63954c38ded27152aa4176284e0aafbf6480ae766c75ff9705900cfa5f79d55d83aad838c3cc5687cc453eeda8061f29a5a766fafdae7d0a034c7f0b0418c0d06284a695398ef00ffcf7212e286155d268eef7bd289b04104a323f9e002965a64a989163e3db6870ea2169e69cbc2e4d681c20535e46701d5857e7d8bc6dfc75c1aaf81d92ddd64cc16de468f34a4d38bcb5e696e88ff7ae4bb5bb7ebd75de5c8f04622bda5dbcad164413949129adb1c8ad8632bc175bc52d45663fbd309a5bcaa903728a5fa1d878ed3bb07dfcb3fc34873a791643580d5e9bc40c17e87770016d64000beafc95152dae9cf7f51a8889eeb7388de1b650b71f94af30614765934564ec86ca55fcf6895d3f46195b120ea4dca9cd15cb8b710832cb0c7d4d13c93c23fbfb558e7b40456562a395f92569d930a37c626fb27db1dcf409a418aeb3a26cb05d4e877ee85cbf8b199409ea0207fa451324a01e06d9a2a05bf537dc147664ca1da6edb9bee240c7c9e5b0893e9bd9757172a49d8ee80aad3bf52579600d12601ef34f3b5bc43d75b36a04308ec9db0a4aee34c31deeb0049f4e1057935eefcbf3a9eb3a39d89dfb33c50a21e1e5e00b49ec8364593584e98e4aa01ef655a085948f3a491644cb3531341a7ba216302425a4fd21b667768ce28e8de6f9d09e4552cd2a202fd61e1a199eb4236dc2a87991033784914de4eced971960903a26eb3e8a250d78878f11bc275e4d429e2dae307ce91d6cbc81e4091f0d53b6cd9276eda13b08c445cc995f63e91ebf47d5c769fd78263aa53dbdcb759b8908bc5537b90385554a213eae0c2219cc2c499362fd95f5e81117a3433eb37513e8bf0a6e9d11d2039e5156806d63ef2202f8245fe7023b127d35c13e709c27b0e03c8bc76e99e750e824c2752ed3edbd74672cecfa8c722609568c824d82c413fb5b38ffe0bb8d987b0ad25990727e40ec1b3b3b5bd4d32faf039fa864727370ce77b4043ffd341efc448b5bd391ce435079856e6cf64a9d892273eaee155c141a471b5e068e8ccf63e0f8c56e87220e6b797beaf6578b7f8a120a7ff020b0f9c753bf83849e21a511519abfbaaaaabcebe61ce4852608ea165ac2910e6a754de55dfb5fe00822ea52134ee678f69000f897bca44ed8d4797ab62f34c091b67515847f4bb7fbc434a3df63242bb8788b4d06eedd745d6835c0c6c2c9e769dae0edd3b2ca765024b98393ad766786ea9532f5ff7aebafb106295f45f4370bdf6bebe22f193bd15cc8557789061bdf4d004296919e5ecd481dc653685bdba65dd55ad10fc31f4750e2d92455e68ba600d1acbb9a5e6616af2ed8d4b9eb33ca62fe1da9079fe052c21fd053a00c9832a001e3625be2e51e9009f1e9600edcbd8b6682b1a61a329797bd8e1c86fb9fb8c40479fb02aef47df80c457867547b31edcabeddc921c9322e64d43f05c16e3d36da84574a858e77c51dd13d9ed7bc8455be1a0f2eb772313c46b6914d00d8946b270168668895ec82ce2f7d8b00fba016b134ad63028c5b6c2f89242068110ce9b79bdf210e7b670a76ebce3721b120b790ebc440c78b4b60e428388aaaad730d3c500770a03770321cdbfc6d5cab03556741bf4e59fa3243fd7e16977ce14810be40d6f678bd0776ab42cf8af9bbb414a23f2856320c87562863d0edba602e44e497b6aef976ab4a8c0a06711b0d0960d79f436dbacd897bfb4a69c57a92e2a5deaa99d71b9fa791de687ce0e48cb54a08f015096548effe4419f80c3f8f97963549721620a409d6ab6bb0dfb9839c7442be013ad3e3d5324ae7ac7ff57bc29cbf9f462bde1883163ba8c9abb15bca5dad05a7bade42c7d11a34861f3c813d056d2076a5b60aadb2d7885dca491ef97702fdd5eb3acf0afc8188fcdae24deabc76e631b3ac8c5e6b3b47e11ecce1451457649ddbe67a34913baedda2b07d4aa6ee31cce7bb4534aea4a8360528404b34a75c188116c344af98ddd8bebdf9a2415a4df79b5550c1c491a8459930c7c2b1db42c52f04d39edcfbe029348c19cf14b324066743aebd84e37ac6633be5cd4c960be13e264ee02b84bc0d164553f7a193b7e32ec4ecc6e391772b6eb30563fb319cbaf03dfffd169c11876de4bc54c1bbb463a31e6c536e426da947773f3d6250840652d49be8f8e65972d3108dba5292e4c5a82990294ea949c8c1200073df273566f42bc829a1fc8c9aa94b14de0fd771c2bcace106b0c6b56534a295282b33f3badc30376997ff7681648868e58a1c0656bb4bfac5578bfcd441dd1bf972e75b5b5b2f2286d3bd7338a88cb7db25c840b2bbc921cfa8783f2ef88048413446b649ac60cc7761db7fa6c73e27768a8416ce46a751e2517652657a0072b7c9a2af0c12f2d0b29f6b46ecedc5e71752d5c8341271a6732df6f76db98b345c38871f01541af6a1cd7e99a180eada117e3fc53fc0e22880982a3e48ecdf4cf5b81e5fecd4f5f0a04bc69add16a065f88bcf60621349d5e9f8e21e9765d5e8717bda554c3253c1ad2f9d933495e82c1f644f27a3fb7075c001807cb05f6d29f8d2702f2f27e54c903f60aa34971f16279467560c59486194c62a0b03939c957f5d5257be8aa07a216737f188b90921efd2d1a890434287d46fdd2347197e05b2e01752da034c7eb3888444d6361fb95d1bc17fccaf7a96e56548a110d04fc9aef2694ff8ee8f72b7678ce6bb36d3ecf014433c4ae471cafbbbbe80a4066eb61888daf614c2933d914155aa5c985df5362b55478445e6e3fded5e24ea59b87cf90ffb458393ff3f7c70200abf5f4fdb795b06815b9b86e8ae84c181f647cb5fccb46f588e59291b1abae78682a431f389e5088b56b00f3384d4e82a572b74741164d8e9a26d5b763ecb204dee20e7feffd89fa91d2be63075fe52d3f10c86fea8742375838619dfaa2fb821a61f42538c59b8f9bfa166efc91c9bbb14c3cdc227d967a9f5ec5393e667cd49cf3d8c15ea66d565c7fc7a42cbb08a6b952a8a0906c6424c73d252aa5dba8cea2a1f2557e5912beb27756da3b0931fab5ecdb8ef051c3bb4f3837aa250c165306cac9baa4bbbd785df3272544259324ff5b3cb7c0f73cb87c8bab275295259ae3bb0b53e2418def185eaf507acf1db2f77cc3961596855871bf572267dd6aa3be5218d32f9c8f135d9cb7a5462f0af252f9d5d69e061a6c7e2d4c3e4db76e3686b5409b38965109a18a30a743587921ca91aeef942bca45dd9a0b2755ebe9cc9ae26a8de74e68de90705af949de1b74026e069f999f71ca5ed1f1f55a4076a878c87c2d3ba71fbefded46271c3253b7ff1027bb093c9aa908448242f05936aa02844afd049b6a27e6538728266fc671e7a81b8048434c4ea77c9f8e1c85988732ca507c0ca4ea27521854054b896c4c9539fa9536cce332649c274917ade3c72cb5add8d5802f2c88c3d824de7c1bf6f78f225935a531aed246fe9db72fa759464712c0d0fa32c3b6bd6e4e9550267c9f09ce967df2f35c96774ab5216c0548396badb10af5917a5f465a1ec071c586ef295d51d72005e254488ebccd4f4ec405255447b00c1beaaa21a7223b87d3550931a294f073a8daffbd2933da11921a0bbd2d6b1894dfb3fa6ab3ab0ee79393c0d25cd7bd7de7dff5fc69921550e29c9248294a4ff3edc1377c64fb8dc74353f891a1670e18952fa78df52e96085f3fca017820c2970de0f8f0fd3a0a31dbfb80f7d4726b6eacf6427d2c189611b37f41654dce5328781016ac43e04d21ec2f7d234a156e38ba2c9bb3850b7852c5cd5ec2011397744ac921c811963b85225aa54676dcf1d174295ad0cdacdd58d3ab359e30bd71794d2fddd235f41ad7846477bbd8e1e25fd6ab7c121563cfbbaf9677101d36ecd628dc214cc57009c261aec157f3109f1dd62ec90f588a3a917f1d1b1fe0fabe6f7e106e563e69b6bb088c0aec4c545d1a05dbe2856ee59378b97267ba090953ebd8bd5025bce1f36442f956ba7d1828e8e12984eed3620de9166667523f92b87b7c121f16cf7daf0dde166ba923d36489098b60d0c59a65fc4c63a7531aed39d8470aa1652406b0465729e2387851e97ee23b7b5b00b2d8189806e0f5380de23ce4b7c616b89e06a171004b35e94a31b00a70e92728c9efb6d71e80b43658fafde041f26ef9c4f1d1449a71b438359c9bf0c3f2b9298633c301fe3b0b13f077f557200db3c9ba89e4e8b2ffee79686c4bf98d0d499637b4ac220fc13c05352d5c808dbce453261a3f98a47c197945e99266948f7b46e976ece0b0e984413a05a92a005d4401ef4ae8d3b5e35b857f963229fce10751ac28a43c294bf39b69c9d1daef815fe55c21f3e0f2f582075113b4d49297700a2ba768bfc0ce8612788baf9295ec8e61c88b5e0099ec6f4a98ada4da260bf31f583c7af25a67c59ffada308c5e00b6269d530b6f68858267e9a70e4e7401acb075573487d58e07164fd80627dc55cbf5b94787bd2ae30d9c5f4cd73207d8f34a607fb6450a3f2d18fb5c5ea376ae6687e7acc783a29c790c200ce73d07bb99cf32424044ee2d095e72042cff941723b8c5c1438db18d0dedc4cf5220869a496fa1b797b56df063a5db84ed9f0e60c3f39d736abe2beb28b18339b128b61bf6777008703fbfcbe4747d3925a863faa237a59ef4a97999f102a68a1eeffbeca55c00b422b7073fc1627165b6d467b21090373d0419e36705e09a93eadb59c22f86d9959adb32914b0aac4b19f7c9b705fcc31f5204275770c388ba2812da4a5cb5673ba756127e45940ba4a50de1c3b27275b8e67b4f202b8cc466b66665d2ceda02eb2244c7001e1ea99dfd9b7ef640b19f284e9418ba34fe43ddce743f246164dabc031b77f5450b7175ce472ccc11764ec5b85b32744417c6cc8e22388fa3aa8fa770b733ecdd369c3ed4aea5ce85a5102fccd4ce676ee231f2f38110747a5645c3505b27fa2f2747db73cd310118c0e2a8c912a009e3f6f7ede3e1d375960c3c52c6c035e0c902ce35e7519702f3bc18714440245675afb45b4eca51ad6d2fdb1de98065ff9d70a30ac0f8332530685b29882170644b545f3157d4a57b933f6c2b1d8a4327639817727b23c0602fa2b5811570cf33c05312d74a8d787c441d820f9ddfb6e17a6e44039623ef23c1fef1d9c042ecad783ef76eb30a4fa2fcb4c6569db7ab66d7b10a7f9715e638d9ba0e4a5f5d17bd63657343ed251f5a3ca1d798f23a3440c146cab5edde99c1c8ed59afdf50d29080d2c8b01133244b0c241512e2d0c603015ddb27cb4b81ede7bc34e3c99dc9265571ac2953858b3649004ed6227d3f2e603157c0f26ca86607e4adc84cce92d37c918503bd43d1171b416d35c673e3c2d38473c5cfa0a19e7fdf56446b8e93b9ab63774ea08e96f78ad65abe31059f28a45deebcc85ff79e8bb58045f0ec1e7b61371928b52b86c4701efb2ef3b4676140629ea933957405031cd1e2d1a1aa726cfd6c634477a4913e0139f60ea0f261e17f44d1a086a9a6b379096d084ec35e68214f4e84f3635a23c27d7c2319f950f4744a6b109fc9491541accecc202e62f294bdb57a4c928da2822c653267a5e6ef08f6d8d8b1bc5d6f8f51a174695a3f59ccfb86f15fbd93f463325ff36314e5d5a8de2a9fb5492a454c11adc13fd0861ebc9b015c03ac7bbc7fd56926f22d6ddecd334be00c8a15c4eac459cacc56858dad51630e65e809b8fdaaca2a59ee3d278b50e6d849b9f097cc1238b3e4ebb0fee3455290f1f05386a69b8595d50acd436b8b73b7b86ed435b8dff64cc0e8118618cb8161c3838e1b514f0957820aadd511e2ef7786f5c6a27c8aee81ba1e09ad5f0afe17ecf220975a4e786f7fecb0c63915bb521ad97726543c99e80191bbec3619969b15b60aac4563830135afd1434965315955e8f4941dd29dc49d240d3ea3acb388eee2fdb4de6aad0af15fc79a037a91139364e1801a4e7aa5c3778086abd61ded9f37e01045e4b6abcef621b29d63d5423aa0914e367307b68e6f4f71f30f46c423eff68dbeb710c0812cad86427fcc1edaceb96475a0e8fd14078d4621831c0376bad301f60b423c2aa3e1b3a611fe1187f759ce7d429fc959e6dd8c7f8b2431c2928224084022186e0fc786b3279e4da57f291f42c9a3a26dc63ee126871d26fa5c54c8352079b348109a7110fccfc8c628a40106d9ea06c00fd3e8b85ddae2c720204875bd3d5a1ba92e3ab655ceed54165f16e28fcca32cb084d2b6761f89a3b03564e66497a2807b84d7d2995752feadc91c305a055159fc129b64f435c322d8fa5e29e9e27135023f2b927631ad9d0a253d64215120ac96bb45addb0cdb1a660d1ddc8739609bd70e98ef5dc3e2492a418b51be3d89f3bfb33ef3ddb1ffd307477ce6147452c29d9480fc902454bcd0deaf395121d64fdf88722e23eaa3c6d0937a5f9762324df4f479c8e98d33dbd52d812d705b412f80c024fd17bb9f6ddd2e672e650c530c96d3332479c8c37b7e3f839dc7e58e855a635caa78a05a546cf37b74b4b4fc019288fa351eed1a9f668b5d01621cdbab8610e2b0aba90812dc3816bf3b4fe1597a9c36425c0a51814e11726a2971881f056a4acfb6f702fefd37451b5b3cf1f37af747f1ab50a8b361f19ac7de6ddf5b7ffcf799c0f3d9a05087237b58b278fddb8c72fcf9e524ea08cc62da58e454c1bc2b9a4f91a1fcdd0b22971f98038cb4d56e0c69b7f59fc6a768ded2b29950932a0da2b85ec5b36c4206ea66779ebb7f95cd5bb435829726a9ebd80d8fbe9254836ba3c6e9dac148d58accf9cdc3f86c3ca1b36de5d83c07794554f1f2986d4defd5219340fa351e322c23b556ce16aba9f76c6647ccd917458ea4dbd77a81282af43b70ebc5a51166192cdf054906d23ecfae3a6c29e6ce86b5cc93ef2818358f7d98a1d77a0b59e940df6f4717a84f2d67e354d3419b5d1f491f03515ad5496a9be91bfddcf79296f3a9f6839070947034e6521bd7b14fa5672c6fa0ac7e899d071d5c10b6453157a6a9809fb192bfaa02f05a9373ad40c6cdbf189718a5c014cc93503e288e23156621c7d84f402008e8992110e12d4bac48b67d6daf76269ac3662303676ecd712c7ffa18c8b2a452a90ac86d6e941564e54ce9a74b04e75eb7ad6f205141a87b425c9096e3e35e7a46669b4fd9eb4f413e457fd22ea234b3950ca1fa78495debcc83da494892275fe7b28f56a253a7f056eaba144f7f5f9ea99937068f93bd260a2919435f5a73f67ac368add2508291199d49cc219dc6ab5fcb77259531dd6d04bbc663509a170cd367ae9a74e0da329586b54786da7e8abc60db0260e1137984d01a2a0c12738fb7880ddebf38eb7fb3c480f4797045e96b9d3544018e598dd307a86cb3205a920d3c0d7ae1d045e0f5c1765cc0e051eefd6f19df2ee330f9c557e7d632400e76d7c1124b7c4c748787a6ec646f645d2834b52055ac47297bf70b21c6980924943eb38ac10161e278c3292298d5e8929a469d2d86287b7eaf1336154f6807dc5de111f3f6dc75853a27e7ae95cfb2d75bec9d24d41006574516af9a844cb24dd9950d5beffc1f681635336cbe360e4c5157b21ffffbefdd6c27ead545c3874157fd50f970f1727573a42659550ed268bfdb09e9d79f26b0627ee318066ecfc876470f01fbea650c14afe3aa90b8fb2ab58ef1baf516f2ec58a1f6bdca8788e11f17a6f1879cb8b41abfff43cce82de928ec35a1085e0541d84a8828e0dbf699fdf4b69d6edcfc1bc5bfc5f5d5865ef9d592abab61410a7926fa3177a8f5be2ad5a276642949bc9ea140b6c40147c78c7861149cf8937546f7c56de5b9a648d9ecbcd7114f52f3192680e8db7d045b71ff38127a5121893030c20708e33361266568d5e833a46e7253bfdf39ebd328ed1011d79fcb53f5b177e9644c2fd793b99ec3f1d6ed53d91532fc10ab36945648059f2354e6f7e89d52d6b21fc8be35b86979c38d2ce28a6410beec87070fabe8944996e0dd944255f8699806244dbb0d6a98a0b7ff131ef92dd755098bbb356b56add551a7b6cea1a489a7f3bc2f7d358e6cca0a2ae838a0ed6e516f278c1b93f77c25bfe97b9537e5f069f63c6a106e2d642cb30024513a09e6f9a466277693d2fab76af8f71f50bbce7025624b8daa8b450f65b54e0679e1a874d765e9b61c0ebbdfdf937ec65a1704dad79482b9c8b4e84089351736a153eeeee0ee51262693a152edd835c26deaa694f4413b2083c8d6a4dcbe6fc52dd150962e682152ecc882e03cceea400cb1e82df39aecd51b8c31bc2a65e60bb67e1f05b9fef994d96c9d8737228c95ff27b2ff4096311a8257c2ac5b9d4fd9a9b7bd2615331b9db3cc41a26d33e99904ee124bb3488440d2dcccaefc7fac98d799769592bdec1e6d237139d444c7f20ea5d93a034d271a5990ae3f7ba9f32ec170a434f9f43267b1d86ac6e64a9011eab93a358bc434d63c324a38673821089d2754ab0f552fce3620259fc22779bd73182c666bbf517c677ed06712058e26edf0cde8cb1e50c59bb70cf2684fb0dc67d7610e0340e41484bf44f8091206709795214a8d2aa2ce46e890049b8933e4acc7a9cd967894f623113722e1ddd994d562725d21aa57978be55514d2b3ca413a2c5ef59f109fffabcd97f0b84d57e3d275c606a6ef7c6014c497a9f30c8589f314573d1aa8f7d020126e762cb6344bd2dc9103fabade5e772f5f2678b75ac3361ae0660512656537c0927d12f3f7da0e494b904dd89fd7530a94d1a147f33048b0a0d33396e412bdf13585dc397eb6cde0f8a1d8104dadb259b510465d51309c43a93652f54c858ea8a19d03b6766db91355dab1e93d634acecbe543d0fb9a8d428f870756c5f0f69d84f64c8fe17a51787cf0fed6b987bf888b57f1fb6ee25f8486b4e1a53bbf1cdb44ef707890dda13ce8b8fa45a123255a425837e90476b926b0715d026b7a20c9c9e491e6fb66141da9a8f57b4aa565bfcd8ea6f1a2da9f130663a5ce2177a6153c1001c13e7189e88d20518cec0dae55f1ff338f8e8a0b1917f400e33d71b32e945900e147b4ff0ab9226c733f0d59cfc1dfa3eb562bed58fb7639d1fac9933c3c92d45d40db80afadff4893322468244c170577f3a1cd8b3e33bc209738bba2e3fbee499189650f26344ac5b8486b2beecaf4686913e2f709eff3b51109bd0b8e19de33ee994dac2dc9e6d59eb5c3d50181b1daad69cfb801deb0a3b293861dad5aa533f6f35fe521d2cf2a41d8e07078e1575fdec6195f3b9c89883a7e1a2e6e7fc167c2b4d9eb44851943119400080626bae857cac0946231b3b6cba0a180ae45759a2d692a53b120f41f416273feb48c339684815c6efbd486d192cfdb1e4a6abbb05906e17c823f5c05fc2d289bd9f267d70e9aa46182e747bd80289257ae8fa628bfbac1dd6babac5de3e772e16d91b8710b722666f9aff7cb441c2128a979676c893f80ac1c1a682d1a9b8347971bd64bb82a23a1437428390d79f736d72325535cbc254568002032b21937ea4801ffbdd1585731e6da0af2ca3277552b25131722c994cf3fae9635e16599d710bcd90238d44eeadda1ff788f7c18c8cfda6cfe75d665ddc246a8fa9ff252b87984a6c9dfbcad7a32ad577edfaea1bca40c72da5be413fb8a45d0f670b91cdda0152a4029fb2a8cf88a4d348a474bfb42f5c76a701432c8b3b30051e134d35ad43e0eb2604eaf1c66f39d937032e330f1f9dd030476fe463d6de3fdc85b22113ac386565cea2dfe083f04af3bae96555887be9dbaeeb7a689c22c2addab1d44b3336205c7607899af4a8f4db7e502999e98d7560bf9b5c678ea9cca5ef6d44756968e7f147395f91400d7286ba745f70ca0fa919b6aed26cec70bdb81e0b153fc98be67a2bf91f8f7a5d134c193e0ea63 \ No newline at end of file +39390701180929139cc6908a6fb16fa33b725657a4076c17e378cc82190daf9b4de93030a9ff9d1d81a1f4746a56bb2c284095d351efb8c93aab8d23f6ffc3887547378a2030d80d8af60523e8941b830c0ba428afe73aad8fc500ca74c0af4f15124df143938fff7c94c3dd1f14e32901968fd02b4a26abd777982d3b3bc42f62e596946fddda1cf9f12fea61c969eb2031cc7335f931693fd94f1dd7df199b58079705ddb9f661e47c055dfc270bba8081476122332bdf1ce9699b0058af7b1324cb4fa1ca923faaaca5a0e710dabbd2243014d82998c74d917ebb992eb6d3985f0023b25f6d4a2a2f8208009acf7e56a9e2aa5dea16bafa43d6723f8428b4474fd15859d2c4b1ec31960f990413472a9d928bc728624070a5e7bfd3c5ce5d7f582eb0132f5e9e89d2971a3b73ac78651f7ec26174f46fe8ad3fc6d6d06db239bc5164655254adcd0e3534839162cf5da392a5059cbe215a58502d7c70e07a7740b762dcb8da864626507b94ebcbbf92368da3723dc1a85c07717fee4847686c69cc6660f1201dc4270949a608108a1180c0d62c2bc632ada77a83383117ae9a22a2d3e498d4be61a1e90bdcd2613097e237e164c90d97181547cb91123509cfeec3d5b98b07245d33c58a103f52ac26d4e8c02ba12ce71402a1baca620da3cd46273139bcdebafbb3f0c2eb7394b9526e615661fbb0a5bd82ffd709a2144635c6962d4461866d33ada17fa94cbc47f95a442a7351f964bb6f2c66837e39b80b61a4f75cedb8dd8ddb15e09d1371799c149ac909de7761f639fb043fd23df35ebc0811cc0efc6514b82fc62b8649babdac6efa98fef1c012c0d2dba5b3d7f17b2e47b63c93834555524fd641c8037c72375e64ecc7b820adf80a4106d6b61f9b7ef8c9e044bfabb36f4598272e887a973bb4672f5d71f8784a98139184fed318de3b7dd78d75956cb568becc0254d541842ee4784f6f64e50868ae87c999718ddda62c36ec75c514279e647a8c6d005b06bcb65428f0b1dd7c24b47f02e1b252d1989c39e135d4e5a950acde285cdfb992ee95f7057115f131e5eb3b138657988213c33f4f8ea061f70bf56de2276359c90b640f378c000a37ef341ac946624ab66db47875a9295e7983e7cdcd45909dc68f9b5b7f8afa09bd1f6cb1baf0aca1d1d4a83804f6b9d664b0339d92d6357f543d9708934a7ae14c5bbe7f99020222d82b2101893556b20a09b51213a210a24c25278ce1101191a4d08f5aef508463e2e875483f516ee0613eefd7ca06a960dbd566d0c9a59944a746aac2f65ebe7c58ff29ad4a305948f39eab28867549e4d3078b076c68f6181cc10dac7f9111d7ec350ba7d60c496b397abce33bba1e3e263d97f88e392029a361849aa60001d16633fe9946d7afc9837813865e6caadedde1c3b56ca1a54e3469a5f8e5c7b8d5446bd145a712da5b1e8eb66ec217bd4f081d74413608ea44c6a6c2dcb55ca59aab30e8b5dae57dfc11329f768038f79d4358c051c3bf14f7b41335b77804bb2f48b9b6bea482a940566ae0db35f3e100435b6de3e75a4089de498417e776c3a87aa4d193c2718110380453d41e4588ec03585668a159a2c73bf625c5725a37017b52cb5d20f14969458f0ee75e462cf3f2d37e2f83480fbd876cb507d9f5027fc94573b9902bee5e1ab4579ee469f025ac1f8b728a8720779d93634cdaa4c6ac0b5f8f1d144d57ecf724ba6089b47eb1507a14dfa72f5f1eec5f9c737126b8f32cde50466e92732c4944b8554deaa528b0d9863e1a1d6201fd797cc1bfea46dfdda23442a9d87fe4eedf0f2bd60c37d56029aba39c0ed72ae107a588ed529915baa90d2b58ad988a86fa24d8b94e1b7fa7a59fde8a49615242d1ceece6c8ea87e92ba9251140ae1aa11cd45544700674dc7bc7b24580ec3da2d2649cac5eb9c7df6c91da8494c26970cb84dd35455e7f87ea824750b502d7361a50401a48bf616e9e4544559deab8cb3068f81c4607c2939635f7bc9aa369ae83738187a95dc5153a98f1db4ac83abba7fef6cf440fd76899d6eaed565f155b92e15f5c695c70b02940593e77ee7a1432dbd35266e0ea4f4c1778afc3f809db0c7731a370075390da164bb4797799b550cbc602d7599a4a86ccf4e629de47a3a2ed445f09583de6b52d20b6a5b12d0719211e24bdd887e0d3d9583aaa77a60d2a7dad0af31371eb07ff406dac62da54114833523c61c1714f1975f6bf3b2ab7b05ebeb7a792ab91d991f15a238d22a967d73c95ae5ad41d460668b4aa639f1deafcf6d6dfab5ec834c46fb8802b646545fc780420c652a3f50346a0133d8cabf81180e189f8deec8a89d93aadefc949c1969ca9e3dab05e7db0900a39485d0697abebb478d7d3b1c1b0ce952e420353e8264c28519b507e7c00e1661fdb2168e57bbe2a5a46da86aa46861d2cf4e4132c77b254fac69c5a9866d904b6499315cbe184d0bff42945ee6694202580a49d7b93b8bed749cd0f4f8a127dfd0d07b04cb051489e7e3eb05b44debe85dfbab3d1e5e2e124b6a5dfc85068a2b5ebd70eeaa4abad16d4ad43e18d5c0a45608235cb8ac78d3301533bb2f19eb1fe2f2640650aa842b9fccad4d9f16d31680f6ff5172039333ada7824ae281e3aa4a8b18734e066f333e185d65ec7e000be7f0a273475b5c1a7c46bbb6b9c5b6f758bb6d345280487ff1401494a3dab56c8734b76e61afd29d86397e9de2cde122c13888c52301ede99118c2496141536b5fa378a1fd43a32c3954d31a79e06dc64ca5eb5cf0423b68ad5bfeb50fd4f1dc2c5fbcef6c0857e4244848994a4a78fa1534885fd0562629472e36256460277fb72864bd7deef78ed963c654acb71c9f2116d156b0b5a88a9d155adecbf129b802d892bf41bfd2a7ffc5f6050a4428e7c414485064632969c0412319ec9e5663ce451cec1bc14498097a2f0b6cea70e010710d4eb37638421d5486000f8359da68ad232009718096010f7253f97d016ef87c704502ec5d6ccf7935d61604998b4954cc9a6599de240bed10ca82c9fef5909d6937d29fafa41c3e64357252b49299b1b8e30f98481f9ea5078ea1b4120ecbb3f137219b6236a3661a8b52870fa63436e596a776e385ba1904b3af94e80898bf021ffdb633b6c609603684b3b988e2b21879314059caba927e3f973d72610a3529497e8be2d4e50ab5061253667dc9dd5bdd312606446796921d04b1833e5cd7b0307a8c038183ed51848f8ba7005de852e1f9c979584ba29d3aa147d345ff80fc2761fb4c4388abb3d43bb2e22b1dcdd55d8ee1f60daf40ad9d205d5263361b97ecfe9aeb2ef20944978269946a8870b770bb99d62c84150378397c4784abe26958ee06d1a7947778f53939baf0c7bf2d415a7c9ee7a99110d2595164ee553dbd5b1bb4ab20ec8742619fae49011a869d9f4c79badb88b1bb9852331447f46b3837358e763672b22a88d409c9ed8727da0bc3adc841c6b6a802a307e53a3a7e785e211d2e547f361800aec1fc40642a40f9824832cf5ae1a49288018477733f5763a1ac04ed024235e5e88a30435a6b3a4dbbb06942967ab3d656e1138f79aa677d162b5b97cf23463a1db17f5742cb9348b7d716edad5c03f4ef4599e304dde0f8ba752920ac4e9e647376a48d0c6661be286f63fdd68a36f37402df69cca66f9dd2f91a58a4f964bbee7aeb882279b7c4b6d9e0da6a0741598838cadebe824b4b90c8cd1cbd9c267db1081c080ffe04f21113c5fba467fb3d065cb1d9d08cd4300920a379a98759ab089486e58dcf9391c203970e778600830c07a151f0cc3cdf66e284f0e68bf615f61003f1d27959ecdb7ab9fc9dc243eac9efab142cbb011637c823409b6744e5381864ecd7868a5dd8345700583c7e403651adcc592bec4ed7914843a3f15043128615c506f454a6c52bb69d4363985a8c2d06ac51b675ea31b01441556b11d7847d23f762760093aec31d9d9beda2119c11cebadf17b61d808d16d02ac851fd4702766fcecc4ba194950d22de26fc6abbaf876695edaf3d76f8aa84e63153123345413f752ca2e3d238bc93e89a83c147aa9ac62cd8600eb06a6d5e513889e1c4c73ee89632ef8f83faa1586b4f70d52501f93eb7d519eebdea91df8d7d20431f33d94d4b1da6ef90b56bb5eff2c1acc845939173b82a799991df922a6021880635e9f4ac9d50d7ddb457bc3a42b5d015ca7b64069097dfd954819b099cfe65869b65db0f6205ab7361d305d8eec98b49722f313c919e4c976f38b7dbf4acfff6edf5743a10fa13f747550b4a6f70d540b814d2ce842d430d0bd83e455be80fc3d25e199efc5c1cab76c27e3d28de63055c3ab9a6ff6e16a0626b07fdf8276a1bdf7bdd30cbf6fb112b11586cc12ced31313c9fad8318b80578755f25e94e510d14ee054b8063e547e637e1e5751db4053f27b950af64113c7ea7d1049dfd312e9ba13f3077db507c8b517ae7727d979ee6c81d7e61232b9e454fa43abbfc15a5d648a63b62a46b38f72459f2a8b00ee93a8617b3bd9d85534b1f3299a21eeb300200d9ab8b048c63954c38ded27152aa4176284e0aafbf6480ae766c75ff9705900cfa5f79d55d83aad838c3cc5687cc453eeda8061f29a5a766fafdae7d0a034c7f0b0418c0d06284a695398ef00ffcf7212e286155d268eef7bd289b04104a323f9e002965a64a989163e3db6870ea2169e69cbc2e4d681c20535e46701d5857e7d8bc6dfc75c1aaf81d92ddd64cc16de468f34a4d38bcb5e696e88ff7ae4bb5bb7ebd75de5c8f04622bda5dbcad164413949129adb1c8ad8632bc175bc52d45663fbd309a5bcaa903728a5fa1d878ed3bb07dfcb3fc34873a791643580d5e9bc40c17e87770016d64000beafc95152dae9cf7f51a8889eeb7388de1b650b71f94af30614765934564ec86ca55fcf6895d3f46195b120ea4dca9cd15cb8b710832cb0c7d4d13c93c23fbfb558e7b40456562a395f92569d930a37c626fb27db1dcf409a418aeb3a26cb05d4e877ee85cbf8b199409ea0207fa451324a01e06d9a2a05bf537dc147664ca1da6edb9bee240c7c9e5b0893e9bd9757172a49d8ee80aad3bf52579600d12601ef34f3b5bc43d75b36a04308ec9db0a4aee34c31deeb0049f4e1057935eefcbf3a9eb3a39d89dfb33c50a21e1e5e00b49ec8364593584e98e4aa01ef655a085948f3a491644cb3531341a7ba216302425a4fd21b667768ce28e8de6f9d09e4552cd2a202fd61e1a199eb4236dc2a87991033784914de4eced971960903a26eb3e8a250d78878f11bc275e4d429e2dae307ce91d6cbc81e4091f0d53b6cd9276eda13b08c445cc995f63e91ebf47d5c769fd78263aa53dbdcb759b8908bc5537b90385554a213eae0c2219cc2c499362fd95f5e81117a3433eb37513e8bf0a6e9d11d2039e5156806d63ef2202f8245fe7023b127d35c13e709c27b0e03c8bc76e99e750e824c2752ed3edbd74672cecfa8c722609568c824d82c413fb5b38ffe0bb8d987b0ad25990727e40ec1b3b3b5bd4d32faf039fa864727370ce77b4043ffd341efc448b5bd391ce435079856e6cf64a9d892273eaee155c141a471b5e068e8ccf63e0f8c56e87220e6b797beaf6578b7f8a120a7ff020b0f9c753bf83849e21a511519abfbaaaaabcebe61ce4852608ea165ac2910e6a754de55dfb5fe00822ea52134ee678f69000f897bca44ed8d4797ab62f34c091b67515847f4bb7fbc434a3df63242bb8788b4d06eedd745d6835c0c6c2c9e769dae0edd3b2ca765024b98393ad766786ea9532f5ff7aebafb106295f45f4370bdf6bebe22f193bd15cc8557789061bdf4d004296919e5ecd481dc653685bdba65dd55ad10fc31f4750e2d92455e68ba600d1acbb9a5e6616af2ed8d4b9eb33ca62fe1da9079fe052c21fd053a00c9832a001e3625be2e51e9009f1e9600edcbd8b6682b1a61a329797bd8e1c86fb9fb8c40479fb02aef47df80c457867547b31edcabeddc921c9322e64d43f05c16e3d36da84574a858e77c51dd13d9ed7bc8455be1a0f2eb772313c46b6914d00d8946b270168668895ec82ce2f7d8b00fba016b134ad63028c5b6c2f89242068110ce9b79bdf210e7b670a76ebce3721b120b790ebc440c78b4b60e428388aaaad730d3c500770a03770321cdbfc6d5cab03556741bf4e59fa3243fd7e16977ce14810be40d6f678bd0776ab42cf8af9bbb414a23f2856320c87562863d0edba602e44e497b6aef976ab4a8c0a06711b0d0960d79f436dbacd897bfb4a69c57a92e2a5deaa99d71b9fa791de687ce0e48cb54a08f015096548effe4419f80c3f8f97963549721620a409d6ab6bb0dfb9839c7442be013ad3e3d5324ae7ac7ff57bc29cbf9f462bde1883163ba8c9abb15bca5dad05a7bade42c7d11a34861f3c813d056d2076a5b60aadb2d7885dca491ef97702fdd5eb3acf0afc8188fcdae24deabc76e631b3ac8c5e6b3b47e11ecce1451457649ddbe67a34913baedda2b07d4aa6ee31cce7bb4534aea4a8360528404b34a75c188116c344af98ddd8bebdf9a2415a4df79b5550c1c491a8459930c7c2b1db42c52f04d39edcfbe029348c19cf14b324066743aebd84e37ac6633be5cd4c960be13e264ee02b84bc0d164553f7a193b7e32ec4ecc6e391772b6eb30563fb319cbaf03dfffd169c11876de4bc54c1bbb463a31e6c536e426da947773f3d6250840652d49be8f8e65972d3108dba5292e4c5a82990294ea949c8c1200073df273566f42bc829a1fc8c9aa94b14de0fd771c2bcace106b0c6b56534a295282b33f3badc30376997ff7681648868e58a1c0656bb4bfac5578bfcd441dd1bf972e75b5b5b2f2286d3bd7338a88cb7db25c840b2bbc921cfa8783f2ef88048413446b649ac60cc7761db7fa6c73e27768a8416ce46a751e2517652657a0072b7c9a2af0c12f2d0b29f6b46ecedc5e71752d5c8341271a6732df6f76db98b345c38871f01541af6a1cd7e99a180eada117e3fc53fc0e22880982a3e48ecdf4cf5b81e5fecd4f5f0a04bc69add16a065f88bcf60621349d5e9f8e21e9765d5e8717bda554c3253c1ad2f9d933495e82c1f644f27a3fb7075c001807cb05f6d29f8d2702f2f27e54c903f60aa34971f16279467560c59486194c62a0b03939c957f5d5257be8aa07a216737f188b90921efd2d1a890434287d46fdd2347197e05b2e01752da034c7eb3888444d6361fb95d1bc17fccaf7a96e56548a110d04fc9aef2694ff8ee8f72b7678ce6bb36d3ecf014433c4ae471cafbbbbe80a4066eb61888daf614c2933d914155aa5c985df5362b55478445e6e3fded5e24ea59b87cf90ffb458393ff3f7c70200abf5f4fdb795b06815b9b86e8ae84c181f647cb5fccb46f588e59291b1abae78682a431f389e5088b56b00f3384d4e82a572b74741164d8e9a26d5b763ecb204dee20e7feffd89fa91d2be63075fe52d3f10c86fea8742375838619dfaa2fb821a61f42538c59b8f9bfa166efc91c9bbb14c3cdc227d967a9f5ec5393e667cd49cf3d8c15ea66d565c7fc7a42cbb08a6b952a8a0906c6424c73d252aa5dba8cea2a1f2557e5912beb27756da3b0931fab5ecdb8ef051c3bb4f3837aa250c165306cac9baa4bbbd785df3272544259324ff5b3cb7c0f73cb87c8bab275295259ae3bb0b53e2418def185eaf507acf1db2f77cc3961596855871bf572267dd6aa3be5218d32f9c8f135d9cb7a5462f0af252f9d5d69e061a6c7e2d4c3e4db76e3686b5409b38965109a18a30a743587921ca91aeef942bca45dd9a0b2755ebe9cc9ae26a8de74e68de90705af949de1b74026e069f999f71ca5ed1f1f55a4076a878c87c2d3ba71fbefded46271c3253b7ff1027bb093c9aa908448242f05936aa02844afd049b6a27e6538728266fc671e7a81b8048434c4ea77c9f8e1c85988732ca507c0ca4ea27521854054b896c4c9539fa9536cce332649c274917ade3c72cb5add8d5802f2c88c3d824de7c1bf6f78f225935a531aed246fe9db72fa759464712c0d0fa32c3b6bd6e4e9550267c9f09ce967df2f35c96774ab5216c0548396badb10af5917a5f465a1ec071c586ef295d51d72005e254488ebccd4f4ec405255447b00c1beaaa21a7223b87d3550931a294f073a8daffbd2933da11921a0bbd2d6b1894dfb3fa6ab3ab0ee79393c0d25cd7bd7de7dff5fc69921550e29c9248294a4ff3edc1377c64fb8dc74353f891a1670e18952fa78df52e96085f3fca017820c2970de0f8f0fd3a0a31dbfb80f7d4726b6eacf6427d2c189611b37f41654dce5328781016ac43e04d21ec2f7d234a156e38ba2c9bb3850b7852c5cd5ec2011397744ac921c811963b85225aa54676dcf1d174295ad0cdacdd58d3ab359e30bd71794d2fddd235f41ad7846477bbd8e1e25fd6ab7c121563cfbbaf9677101d36ecd628dc214cc57009c261aec157f3109f1dd62ec90f588a3a917f1d1b1fe0fabe6f7e106e563e69b6bb088c0aec4c545d1a05dbe2856ee59378b97267ba090953ebd8bd5025bce1f36442f956ba7d1828e8e12984eed3620de9166667523f92b87b7c121f16cf7daf0dde166ba923d36489098b60d0c59a65fc4c63a7531aed39d8470aa1652406b0465729e2387851e97ee23b7b5b00b2d8189806e0f5380de23ce4b7c616b89e06a171004b35e94a31b00a70e92728c9efb6d71e80b43658fafde041f26ef9c4f1d1449a71b438359c9bf0c3f2b9298633c301fe3b0b13f077f557200db3c9ba89e4e8b2ffee79686c4bf98d0d499637b4ac220fc13c05352d5c808dbce453261a3f98a47c197945e99266948f7b46e976ece0b0e984413a05a92a005d4401ef4ae8d3b5e35b857f963229fce10751ac28a43c294bf39b69c9d1daef815fe55c21f3e0f2f582075113b4d49297700a2ba768bfc0ce8612788baf9295ec8e61c88b5e0099ec6f4a98ada4da260bf31f583c7af25a67c59ffada308c5e00b6269d530b6f68858267e9a70e4e7401acb075573487d58e07164fd80627dc55cbf5b94787bd2ae30d9c5f4cd73207d8f34a607fb6450a3f2d18fb5c5ea376ae6687e7acc783a29c790c200ce73d07bb99cf32424044ee2d095e72042cff941723b8c5c1438db18d0dedc4cf5220869a496fa1b797b56df063a5db84ed9f0e60c3f39d736abe2beb28b18339b128b61bf6777008703fbfcbe4747d3925a863faa237a59ef4a97999f102a68a1eeffbeca55c00b422b7073fc1627165b6d467b21090373d0419e36705e09a93eadb59c22f86d9959adb32914b0aac4b19f7c9b705fcc31f5204275770c388ba2812da4a5cb5673ba756127e45940ba4a50de1c3b27275b8e67b4f202b8cc466b66665d2ceda02eb2244c7001e1ea99dfd9b7ef640b19f284e9418ba34fe43ddce743f246164dabc031b77f5450b7175ce472ccc11764ec5b85b32744417c6cc8e22388fa3aa8fa770b733ecdd369c3ed4aea5ce85a5102fccd4ce676ee231f2f38110747a5645c3505b27fa2f2747db73cd310118c0e2a8c912a009e3f6f7ede3e1d375960c3c52c6c035e0c902ce35e7519702f3bc18714440245675afb45b4eca51ad6d2fdb1de98065ff9d70a30ac0f8332530685b29882170644b545f3157d4a57b933f6c2b1d8a4327639817727b23c0602fa2b5811570cf33c05312d74a8d787c441d820f9ddfb6e17a6e44039623ef23c1fef1d9c042ecad783ef76eb30a4fa2fcb4c6569db7ab66d7b10a7f9715e638d9ba0e4a5f5d17bd63657343ed251f5a3ca1d798f23a3440c146cab5edde99c1c8ed59afdf50d29080d2c8b01133244b0c241512e2d0c603015ddb27cb4b81ede7bc34e3c99dc9265571ac2953858b3649004ed6227d3f2e603157c0f26ca86607e4adc84cce92d37c918503bd43d1171b416d35c673e3c2d38473c5cfa0a19e7fdf56446b8e93b9ab63774ea08e96f78ad65abe31059f28a45deebcc85ff79e8bb58045f0ec1e7b61371928b52b86c4701efb2ef3b4676140629ea933957405031cd1e2d1a1aa726cfd6c634477a4913e0139f60ea0f261e17f44d1a086a9a6b379096d084ec35e68214f4e84f3635a23c27d7c2319f950f4744a6b109fc9491541accecc202e62f294bdb57a4c928da2822c653267a5e6ef08f6d8d8b1bc5d6f8f51a174695a3f59ccfb86f15fbd93f463325ff36314e5d5a8de2a9fb5492a454c11adc13fd0861ebc9b015c03ac7bbc7fd56926f22d6ddecd334be00c8a15c4eac459cacc56858dad51630e65e809b8fdaaca2a59ee3d278b50e6d849b9f097cc1238b3e4ebb0fee3455290f1f05386a69b8595d50acd436b8b73b7b86ed435b8dff64cc0e8118618cb8161c3838e1b514f0957820aadd511e2ef7786f5c6a27c8aee81ba1e09ad5f0afe17ecf220975a4e786f7fecb0c63915bb521ad97726543c99e80191bbec3619969b15b60aac4563830135afd1434965315955e8f4941dd29dc49d240d3ea3acb388eee2fdb4de6aad0af15fc79a037a91139364e1801a4e7aa5c3778086abd61ded9f37e01045e4b6abcef621b29d63d5423aa0914e367307b68e6f4f71f30f46c423eff68dbeb710c0812cad86427fcc1edaceb96475a0e8fd14078d4621831c0376bad301f60b423c2aa3e1b3a611fe1187f759ce7d429fc959e6dd8c7f8b2431c2928224084022186e0fc786b3279e4da57f291f42c9a3a26dc63ee126871d26fa5c54c8352079b348109a7110fccfc8c628a40106d9ea06c00fd3e8b85ddae2c720204875bd3d5a1ba92e3ab655ceed54165f16e28fcca32cb084d2b6761f89a3b03564e66497a2807b84d7d2995752feadc91c305a055159fc129b64f435c322d8fa5e29e9e27135023f2b927631ad9d0a253d64215120ac96bb45addb0cdb1a660d1ddc8739609bd70e98ef5dc3e2492a418b51be3d89f3bfb33ef3ddb1ffd307477ce6147452c29d9480fc902454bcd0deaf395121d64fdf88722e23eaa3c6d0937a5f9762324df4f479c8e98d33dbd52d812d705b412f80c024fd17bb9f6ddd2e672e650c530c96d3332479c8c37b7e3f839dc7e58e855a635caa78a05a546cf37b74b4b4fc019288fa351eed1a9f668b5d01621cdbab8610e2b0aba90812dc3816bf3b4fe1597a9c36425c0a51814e11726a2971881f056a4acfb6f702fefd37451b5b3cf1f37af747f1ab50a8b361f19ac7de6ddf5b7ffcf799c0f3d9a05087237b58b278fddb8c72fcf9e524ea08cc62da58e454c1bc2b9a4f91a1fcdd0b22971f98038cb4d56e0c69b7f59fc6a768ded2b29950932a0da2b85ec5b36c4206ea66779ebb7f95cd5bb435829726a9ebd80d8fbe9254836ba3c6e9dac148d58accf9cdc3f86c3ca1b36de5d83c07794554f1f2986d4defd5219340fa351e322c23b556ce16aba9f76c6647ccd917458ea4dbd77a81282af43b70ebc5a51166192cdf054906d23ecfae3a6c29e6ce86b5cc93ef2818358f7d98a1d77a0b59e940df6f4717a84f2d67e354d3419b5d1f491f03515ad5496a9be91bfddcf79296f3a9f6839070947034e6521bd7b14fa5672c6fa0ac7e899d071d5c10b6453157a6a9809fb192bfaa02f05a9373ad40c6cdbf189718a5c014cc93503e288e23156621c7d84f402008e8992110e12d4bac48b67d6daf76269ac3662303676ecd712c7ffa18c8b2a452a90ac86d6e941564e54ce9a74b04e75eb7ad6f205141a87b425c9096e3e35e7a46669b4fd9eb4f413e457fd22ea234b3950ca1fa78495debcc83da494892275fe7b28f56a253a7f056eaba144f7f5f9ea99937068f93bd260a2919435f5a73f67ac368add2508291199d49cc219dc6ab5fcb77259531dd6d04bbc663509a170cd367ae9a74e0da329586b54786da7e8abc60db0260e1137984d01a2a0c12738fb7880ddebf38eb7fb3c480f4797045e96b9d3544018e598dd307a86cb3205a920d3c0d7ae1d045e0f5c1765cc0e051eefd6f19df2ee330f9c557e7d632400e76d7c1124b7c4c748787a6ec646f645d2834b52055ac47297bf70b21c6980924943eb38ac10161e278c3292298d5e8929a469d2d86287b7eaf1336154f6807dc5de111f3f6dc75853a27e7ae95cfb2d75bec9d24d41006574516af9a844cb24dd9950d5beffc1f681635336cbe360e4c5157b21ffffbefdd6c27ead545c3874157fd50f970f1727573a42659550ed268bfdb09e9d79f26b0627ee318066ecfc876470f01fbea650c14afe3aa90b8fb2ab58ef1baf516f2ec58a1f6bdca8788e11f17a6f1879cb8b41abfff43cce82de928ec35a1085e0541d84a8828e0dbf699fdf4b69d6edcfc1bc5bfc5f5d5865ef9d592abab61410a7926fa3177a8f5be2ad5a276642949bc9ea140b6c40147c78c7861149cf8937546f7c56de5b9a648d9ecbcd7114f52f3192680e8db7d045b71ff38127a5121893030c20708e33361266568d5e833a46e7253bfdf39ebd328ed1011d79fcb53f5b177e9644c2fd793b99ec3f1d6ed53d91532fc10ab36945648059f2354e6f7e89d52d6b21fc8be35b86979c38d2ce28a6410beec87070fabe8944996e0dd944255f8699806244dbb0d6a98a0b7ff131ef92dd755098bbb356b56add551a7b6cea1a489a7f3bc2f7d358e6cca0a2ae838a0ed6e516f278c1b93f77c25bfe97b9537e5f069f63c6a106e2d642cb30024513a09e6f9a466277693d2fab76af8f71f50bbce7025624b8daa8b450f65b54e0679e1a874d765e9b61c0ebbdfdf937ec65a1704dad79482b9c8b4e84089351736a153eeeee0ee51262693a152edd835c26deaa694f4413b2083c8d6a4dcbe6fc52dd150962e682152ecc882e03cceea400cb1e82df39aecd51b8c31bc2a65e60bb67e1f05b9fef994d96c9d8737228c95ff27b2ff4096311a8257c2ac5b9d4fd9a9b7bd2615331b9db3cc41a26d33e99904ee124bb3488440d2dcccaefc7fac98d799769592bdec1e6d237139d444c7f20ea5d93a034d271a5990ae3f7ba9f32ec170a434f9f43267b1d86ac6e64a9011eab93a358bc434d63c324a38673821089d2754ab0f552fce3620259fc22779bd73182c666bbf517c677ed06712058e26edf0cde8cb1e50c59bb70cf2684fb0dc67d7610e0340e41484bf44f8091206709795214a8d2aa2ce46e890049b8933e4acc7a9cd967894f623113722e1ddd994d562725d21aa57978be55514d2b3ca413a2c5ef59f109fffabcd97f0b84d57e3d275c606a6ef7c6014c497a9f30c8589f314573d1aa8f7d020126e762cb6344bd2dc9103fabade5e772f5f2678b75ac3361ae0660512656537c0927d12f3f7da0e494b904dd89fd7530a94d1a147f33048b0a0d33396e412bdf13585dc397eb6cde0f8a1d8104dadb259b510465d51309c43a93652f54c858ea8a19d03b6766db91355dab1e93d634acecbe543d0fb9a8d428f870756c5f0f69d84f64c8fe17a51787cf0fed6b987bf888b57f1fb6ee25f8486b4e1a53bbf1cdb44ef707890dda13ce8b8fa45a123255a425837e90476b926b0715d026b7a20c9c9e491e6fb66141da9a8f57b4aa565bfcd8ea6f1a2da9f130663a5ce2177a6153c1001c13e7189e88d20518cec0dae55f1ff338f8e8a0b1917f400e33d71b32e945900e147b4ff0ab9226c733f0d59cfc1dfa3eb562bed58fb7639d1fac9933c3c92d45d40db80afadff4893322468244c170577f3a1cd8b3e33bc209738bba2e3fbee499189650f26344ac5b8486b2beecaf4686913e2f709eff3b51109bd0b8e19de33ee994dac2dc9e6d59eb5c3d50181b1daad69cfb801deb0a3b293861dad5aa533f6f35fe521d2cf2a41d8e07078e1575fdec6195f3b9c89883a7e1a2e6e7fc167c2b4d9eb44851943119400080626bae857cac0946231b3b6cba0a180ae45759a2d692a53b120f41f416273feb48c339684815c6efbd486d192cfdb1e4a6abbb05906e17c823f5c05fc2d289bd9f267d70e9aa46182e747bd80289257ae8fa628bfbac1dd6babac5de3e772e16d91b8710b722666f9aff7cb441c2128a979676c893f80ac1c1a682d1a9b8347971bd64bb82a23a1437428390d79f736d72325535cbc254568002032b21937ea4801ffbdd1585731e6da0af2ca3277552b25131722c994cf3fae9635e16599d710bcd90238d44eeadda1ff788f7c18c8cfda6cfe75d665ddc246a8fa9ff252b87984a6c9dfbcad7a32ad577edfaea1bca40c72da5be413fb8a45d0f670b91cdda0152a4029fb2a8cf88a4d348a474bfb42f5c76a701432c8b3b30051e134d35ad43e0eb2604eaf1c66f39d937032e330f1f9dd030476fe463d6de3fdc85b22113ac386565cea2dfe083f04af3bae96555887be9dbaeeb7a689c22c2addab1d44b3336205c7607899af4a8f4db7e502999e98d7560bf9b5c678ea9cca5ef6d44756968e7f147395f91400d7286ba745f70ca0fa919b6aed26cec70bdb81e0b153fc98be67a2bf91f8f7a5d134c193e0ea6333b6da8ac125a57358ffd7be1cfeab6bd73d467388e6a5cbbba71ffaa16c1fa4f34b1d854a0ab13981e0fc711e974259a9c868b79f5f8ae4a66291f41a7fb17b9bd4a9a1fb523490efdecfb9e82496e801b167f5a0452b80c44b227142f979f4952f33dc22612c1a925b6aca7e89be18784dd33d9d770480d8e5c8f50fed7132cd31246c20b3fc6d2dac0cb721f369fce0342d0fd70ec7183d958e0a9a90d4e515ab2528d5d8463e441943879d011fafed4710d7c2ada948472cb6ad71da9c8b9e8b7bcf3b0d7a66228c91f0eb39443ac244e1a5ba9cbf4c51fe986ad72f442fd5414db3699eb9a799a5c45bb01d64e17ef9c4ca248fc668cb3d97d808e7581c00eb8e4a042b9f0632179b2e71ed410e336242eb5525220457cedb45b12ea27663f9ca3183985e89f8864b7d91e2e74c2428bd4803847b64c7d7e569083c96169a3dddd82a5d313ff11aaa2dd6d918fb0e91583701d14cb328c8eba86e6d23d7a0a1c5d5e5e34b441308de4add36747161e2ea8061556ea549cb795f1b5e225a71979553ffb72deb883486e7bf70b111b60d0138f1b181b039f10903f5d46e6ddbba29340a4032695de17f16d77bc1ce48faa46ab5c089c03eca8e68c1319c8355e2ea51cbcd20873df45cf14d9b572074953a1a12c88d7cb899e2a883e86e13ab1c7b0514dca8496288ffdcf26fecdb83bad1288616b9f4e2da39764548a704b38eca3716036060112d82c994a7a4837aae39e84caae7ac9425c71e29013d2b7dc0a0d854f0ba6a127469da3155c64b31d00abcaf5e049129ab0b2ed68de35470509cc1c76b00658f3064b16c1407b77c3b90239170c8225efe16dc649bee125d908aead98211fb98e749a1144768682d0635011a3bbef2da19e20550ec1ce051e7684420da701945c568870cbd78eaea678d5b7ce02445d1ebc454300815c2214db0b06a2924acddae805682a7acececcad80e5351a02afbdd4da5b9551c0d165c0e4546c2d349fc50e595cfa06bca3b38fb79a47297e9687d6cf090de396335d83d17b5294d3e28e582b47e0da28f5ba91abe34408d25f06a129ca0ba5064ef2591164da336f1080e2ccfdb1143f4f4bfa5c2a2ea7395096d8fa41f1b6e5bb19c33465ed490538d3532281c5fc20efd745cc16f81ce31e958d81af5a1b26905a0e871efe11ff2791b6690df1102f6fae97b8cac82be2a1fc502ab989320081f17eb530b18dc8abc05c590b52d704d588d49be592ed2ee9c7670f74b7142aeff77be0909bd17bd9ab310c2014ac5a8e28ba9c2d950943a4fbb0dedfadf80947900bd16da07fb845d73043002444be4720618683d14ac5b006bcf500000e5f109a35471c14d9d44eff56b48b29081ecc88a2bcfdfe1e9a28e9c838a713bad20ec6f013b935b35f74e9861877596dc48b157982572efe82f4b410d42dc16cf15300c0c5dd9cc69322a463b2178a2e9faa34d2df230aca1cea121e2440c7b1cd0c69aa0e5d55034d10e2cb33ec98bb6edc10feb9b933a0f358c1a171c04abfccda3866b4c36014b79fe423f931f97be2c5415e1f9f6fdc0558261b2bf671f5c6296f4b7dc1ac3e9f56b7e8eb49b951ebae389ade958eed39fd184d12a99a258684634f4bee03336acf4d564f24c633ac373023fcea1444940120ecff77e98fa8c27778929ff9be7b3a02ab8b137adb296421e7fd8efc675a9da75a4ce691a6b653529a6a97a8a5cfc809f493435a6718a1e5112ab89b221c9629fae81050f24f2a48ef37b4f3db0af31a7d63a02a98e10e86b1ac909bfc2a5f6434c20152e872aeec0f3d2d7773b9b5b898510d1cd56285875a15a290c690bdaef2905699da0d9231ccdfb030f861c7b02cb32df53ba979e19ad130d5ed830d234032a58969b591382b8b998a6d767eed3ec68faa3b8ec05110953a51d3278d0ea8f84651acd4590a40122f6440e68c8367f4c6c252b4b0e1b0c18f454ed3d24edb827fa731b652691da65b073c48944822cbc7776182d5c1e387ab643e80d3fef2db4e351506fed2e126c83e63776dc12f322d29210294521dc7d1ef00b1fb24697bdc2daf704051ac7257637d2e3c37c16aafbfdbbb63134940df6b3c2ef343cdc0050981270b3b962caf7fca16b1ea2ebe27288eb90e40365d6efb1d6730534427f4737e883aec19b8f8a4c4b46c13269d11c8809eb1f9092358d01bc6dd49a573df04ec0f3643b4cbb1026848cd5d2c06ce6ece399839702ee6b913f8b4a46f48f271ed48dfab3056f6e9d3f76e705e7392556cb281a987c46f6985bcf0fb6592212dc8c347c372e0edd136cda60ba0913b64fb837d69a609b5a99ab2bbe8c2240ccbedc59bb4e4ef77bad466a9434796256402a1316ffdb5be6dd7bcb492ea814f90ef071d721f3740eb8e9a9246082c673d933f0f77788784c0917d5ecfbe312e4483793d8e7ba741bd57089509bc302254729a8bcf19f2d53aa1bd195391f59962c63e97dfbea22a79a637aa332e04318d95b008ff25ca753dbacde4e46ecf04ff2a434a44f9fd1c001ba0d1bcbc10b648fe35dcc07adf27c9592cb57020b8230f4633b48f845f9d74fa3721deb054132605f82c3515c5b1f9a98ca9d2228bf415be889b9f25cf8afd9622c000ff8e774e72ebdfa177a694ca411766aa31e90de971338ac76b9e23d8c62eeef7e515baf3fae82965690abf7e68d4e5c3127f6409b9a25864bbfa0bd0b5f337b6cfd5c1718f015fb437a30ca5bb85382597ba9a43e6791c54e1f8eda8d2b0551b44dcd5bb68327e91b4ed7130d7f576556f1be3d572b7780d44bff5a3f3560c2c5984156a85bb23dacd7cf21f9867828e232a858fce24e62548f37b3f3ac6b6c857284d28ca82aa97849b49d1e77a341891cf13a7903aaa4ee4da2b45aea3e1a48f56973e83b6cf0985603d1ae38eba8b025975126adcd406d16b8b2cefd739c2f30a137617592bb9db6334bfdc3f48e1512fe0ed6751c18fb315e1300452ed2af97a483060c1ae57ec12188f66bf943ac3995896f479d81553444453f0dc39b0de7a5a58e670869a0a4503e5c4be11e4b0493f32a64e41e4b235c7e45c17197cbee6c158e9009fc7f2df80414b7d5c4a2a10620d591621cb78d869697cccdb2370846a8d1153854b07dc69dda25556d811d335993bf037df9b36d941036b4f65bc6b399192d5083f2a08fd2c984a98f3d3f40fcd46a21cf110c7430d55e188ff0ef1d93852ffa2169d89cd3019476e67a13fb02453b01bd2f17ae81d9a923c066f9b52af9418a0f56c1fcdef2dafbeb7d4b651ae375809b47d4b1184ce61a65f9037b8e0ed8b2aa27cb1e46ef8941737ae34e81023680cff5b997a07c232e252e7bcb5149f04e83c94e6e8d609f69e5d9af7ad184cda21d506458445c3c345c874168941e96b4035ffefb39f44cc4981f9a3292c9156bdd82373d169d07a50337a23cb9703b8ac715bcff56e498cabca00b626015a83e681f55af43f2fc9a0eb6917d439fa7b5089f67e4e1e6942eeb9564288f4b8a53a6031d3c18959b70663d63c135ecfeda5bfa6f82300819dc3c52e5363ee864a2681ed943ce01a0c4005ffac9d677c713f7485197db7eaf702eee218ede1da72eab366b4c12f4be7ee6e51bfa21c98b643be2ed0f891d920d0139643db62e14fdd6f7e8a50f5cb1ade1ffb9aeb3f19a6b5d27dcf87b535e3df022870a457fd9cfe236dcb3b87ad4f0aab83f001479bcbe7814d1720f71d647503fc4e5955386af8c905c9a3cb9d1ba8fcc0acbf11b574aafca4560e979d6019cb27251743485976f0ac4677f6c844b46469f084792de7c7462dca0764d3de61c3d34ca05e82de7d6c4d9b8eb8cc84358c2a08303427c82c41a5a84a3d630eac931cc8eb03a95dbfe9c3696ec817d13a3d3e7236556636bb623320e86e0823625cecbe13a79ced0a11300ca472aaaa0de4883a81ebcb170827f698344067eb7c2c7191fab8e1fc77cda3fcb307d010c9fe0bb5c3ae8f226b64d9c7762bd544f55bc395612b2f003d5ec1ac5e2e3654e2b5d756e754c16e49116c3ea6706aa7e9ff63467205f6b097fc48ee0d105edd0137dea37d65a0c006bec43b495533c8584f62964fec9cd659189b445e4838d0289d53d308edcd084450c3057b69cdcbc5856ecc098a98afe3a4a6bffca3d28fba93ce2353d29fa9f877a9b5580d29ced1b5f9cdc3f930d863be12cbdc1ae36d100c94862583a0e42552e9a512d37c1ad7a6533fdc7a3106ed0130e648f071dcea672fa4984f29827f3870df703b12f49f8a3a572318d77d30adb6c07883616b01d4a8d2ce16a3eb6756820d3763c9dc66742644a2642e8cc33074637ec458b7e8127e2a45d40520989f15649d1ed97eceaa43ac6ab2e25fecd7d9cf898f28e0c1004d9792f96a99d2d3c6121d7dce45541413cbc1cbc92abeb9d21664bcdb4b9920e26cf23c1dcb1a9bcaf64156bbc9563ccc90241979edb507d95c149b0bbc46e077a8cd4801fe85b12049b45a7d3c0ae5d6fc327a055d63f87c73d7f4b4b62b6649e41c1947493cdcf092c68ab1f718ff9a675c274a13dc3834c2d7d1cb32ca558e8494c50d2cb411fd36bba50887a114451e43dca8c04a831edc572ead2390104d73ce98f503faf7c61d0474670fbd75ea9aec32fa8957362366a986f77b9f2f41ae63aa6b016a2659892130eb9005655455a7f9ea5511b17d2c659370cde9f3beb137c78197c6b4f259eaca34f34e3230eab7c771d17c600d78b1c38e046d2b17f631ffacfbd4b6df61b41fe99e9a54ad4231059dfeeb3aca0ecf9d7afd3684416c023f76a6c6fed46866bf0d887f4a95f086b6fca6345a9f28d7611cc0df7dc027c346afaff30a1c8e4b805bc78bd259d26714b56c2170d9f5546ecea0d50063e76a5a6419b90511adbbeece236a50b353dcbf9c7c8a9945836f96db400f13666360b05fee306af7f8620a26a4616368b2c1a8c451219508a76be0c6f8208f78c775fe5fc311338aa848ea843e5a48259598c7c0310c5a1fb28d0154c4bf11c16e171e47eb210c73265d3b3f89565d0d425da57ac5da03ec5f6c4a92d2cc226ec77a3a751c2144d7e443653b7488c1f53e5b549d3c9f53a24b1e0d944d51b73152d701bba6fa992ab54acb95778beb7656aeee5b2de487d5c7d723d64d1332f99fba386b39403e07eb020d97c90b464064f7d31c8baa6e567d7e266ce85a85622dcc4cfdbaa9408ff178c6936e4fb29d470d96f352ec5945e7f70d327b66daa33c83345737446b5f23bb47a3fdfe9349a3d7a89355a205525f14e205078f8a1d1c270d6f9410fc7b434d05f0667991534322017abc7e180bc8d12946ae42570437d364863e9321030fef8875c8573526d4e98505e026828ac9f70fc6242e293725efe769130b8daff5a183c1e4b75bfb017f8fe351626744d333bb13c0db753cc696e62401e78682cc7f014506b6af46ba976b96a03070a46cca43ac4cd0f22b3075d22afa6fd507a45577f8ae6875be52e0b55f28292d31c262244b5ac97ab1d42cb11de523fb8c102e2c5fdb5d85b205fbb2b45830b9738c3cc9dc254abd34d80834e6a1b57fe12d4f710b7fed8f0f70fd18b2b89e899648e38ac2e3bee33ae7f4ff529ce20a1f1ee50e2bc241b48fef8eedf608111f6cd825a3b3fe3a0385f5e6e24d362a5eb743e37f6a43da365226c4e8d769559014d0a9c165f94e21812c016e7cb624a92a12955b0716dc4f3564832b1be0a448cb5aed0e75d87e83ddf3d002586a70c0728b77795a0a43f79b8a7b1adabe31a92839676f4c81bc66c0d9a3e20adb74afaad8b9e01a9fa0b58f43dcb6bbee85c499402907e2f3a106945cf4f4b1d8c3bd08c206582bef42081b6f240c0d7709f1349e68244e51ff9e4cf9f2b1302bc2302f8353c2af8784b12620be71b8d0b41ba62fa48b1fd7d419a5761cc9a7bb8dab31ac74cad14792083b4335672f7e1f2e229eb29d5d789891b037a2a4e2c0aaaf4bf22043c7f0dd84350485db421a74f84a2680200cc7eab539065dd422a5ef866526f0b9cad66cf52bfd5abaabeecc6edf81cf1c54f39a8f58c18a48cafcffdf1d3b64765faf3f05af07e43987dcaf33536fb145498d12cfc77454d7f165c5ed602b3e10d7396f563ce451417f8b056efab0cd300e6aae1e44912fd666e3192c5fbc121b01245f04036c71794a59405ac06571abdfc921cbd5cacc8fd7b0727bb681ff1a3b76aa7e8bdfecdea8ce4ba28ca7c5bddbf92a0391b54ee970df8f4472ed91838742dba51f2fc91cc3cbce7afc4bdef742ab36260d0c3c94db4fd0ac4daaf04cfd30c9c03249f5c4a5e4ebd746906ffe4d2b8c03c7f014291aca6e24cfed1483c71b8d937ed95565e5285fbcda8ec74177789863eb18e0dbf398d8ec9e54ef4e70dc4e73ebbb9da91fc6ad3b11bc25a35c4e1ed8f0f612cc0b9054e861136e6b625eae32fd7e2443b5874b12cefa9280554107af124eec27b8f48295d10824e6203951f5ecad0d691088db26a08f7355ec647e828568c5b4a03eb9abede3dadd6a7f28227aedb5e8ed797af324ca1cd1cd62d3fb177de4b4fc2608da9e932ff6cd3d3f4f88ea64f0594d19679139d4cb48e6710ced2f91c4e683c0ff1b5075d39cfba8ce5f21b400f06193d6ea45870110e92efc31f46d1d199e42b7cc8cbe2f7f84d488928d570d369c342a44b43509acb32695d42a7361e305d77c3beab0ee576df75e3f7c3147e798a3ce61c4392f134f469e80ef914df53982291c47b661055d109cf96e69c288841c9aec08bb3d042f6940293b6c0b39962fd79d7cd7c92df762ffcc37a33bd8fa145a4512a0607ccadf9e06831c873c20b9e13b8c4bd4f0c34d438bdcecb45b543c11c9a290bd364ef9f8ea6157ce2ec8d34c36af80e7a6681152f8c935aad2cca43663d90e2759090004afa3ff5a3d187bddc7d4b1e952737effe8339cb300319ba271f3773c05ec66b6011cbdddc9c36d52a1255299335d9699d3e8dba320bdea462fa11292a559c1a8630455327462c11beb8a6ebd13cf655e5b48c8bf2bbf211d241597b900d832e30f46839b2031bab3a2d620e8e53b5d74dafb486e4744797e15194cea57594aeda8d31dd1cca647682a9215015779af567fbb861f2d537c46338f6d05fb8cd543d58a63ab67b612d50118d03f16af5ad56c153f9e7548ec65923a05947677fc156aad56bb21cba15ce9e227cda5336c9371ade63f27df2db815ddbb5e75ec36a3f26f4fdf8140a6d9df3be2f0b690f46a24393426137e9f2a498aabb5aada0cbf6294c8a4a0dae91e215b0b8ebf8a6fdd71c89a59a0d4e50aa1a7b4ba1a1c4c2ac9198420400d6d6bfce69a396efb61ca2e0661f225f7b4b70940db2a164c1d5cfd512587b54915c494864171217b04c682537a86ddd4b8cc2fbedc1df1409823a0a586f838d418d55de147292f29c19050a4c735ed691039a60adbd904c851858d064563ff9c89c6a1049eb1a1f4069590921d891402c5187884eba9ed6858e57de94987790efdd892754acfa0c90b5b8fc0f77d5f793d70a6a4afa08975f3a41bca20239d02baf20b24f0c0aaf42ccd015128ed4bb55d5f2cff327b668357f1f921d74652346e69be390fffb3efb0a59116181e948c699d3adee0e33cde143cfb5c5915cfffdb23b941b30d7314b5f80f59a31da35802d5563b62ea84a659881b3e8fd3ed0dab78ef36db054f08335f9511734e8ac5b275c3708861db6f73ac0635c43632c0d96ca2d625985ad16c79c71c45a60ea5f476c894b5849caf5eb1899c77bbefbfa634e4f38b26a026f869e7d3cbf6415d8abd7d1d26d91adb90e0816f82e65c03c3d4d666de8969a3810f00d5124776513afc58e2b2b769658a5b11099776a09025d758c1b5c22c7ffeb74d3fe7fc7188fca7cfddd6c917813b21a444e370d3d916eb52e16ab6a19a44b56529acfa529ae2b9f3de1c5ed45432e9abd5a29a34a0af7038edbdde8087451f918fa200e4c792ce01dec15a952c171ebfdff331668c59045edc3177d5c9725d4dcf33ba4b6e20ce06204ff7347a4d98ffc70f6fb837340b8784b0122255cd4c23b965d0496606809008feffbdf7946bd42b284966a6a2b4b4c699154b5d7fc8f8a24173b97e99206b61c2339ca8209f17c911ff87d9928880fd204bebe2fff6dbda1cda9ac20b89b7f99485a905d3ff0ef0af63a839284eaf0527a127c0a475670929d540409d56b37231bd0be23772ad4289bfd248692e0fb90091e74423b73eb322f455a4fff2c979cacc24fc61a07ce7c3b9d73ea7ea2458cd0077c4bbcbaa8ca8fb7a315160c6556a108d8c9ef0c4c3d882ecc53b564998be75b4390fc6c7d669c821514d2d08e2faf759e591dd783723ccf3fe35304b055f9df251b4c9649c878cdbc4f12c81d1b36955fc037741fdc4be86cfd496b9920507ebd318c2c3a1b6010c0202a989111ac927942cc30b6285f472d61b0fd3a541763c8c62fd472b1c03d7083dcfada7c47789fac38523402b8e37ba57a69b3cf70ba1019ac6139297577f1e91beb4e45d36754f27c11bd9946bc368b10ccd9bbce088111673def4a05c51b6e4eddae6bac6a4737171cba759e8f199e5537f2c0b0f949daa0cf13dd8eae8e1b45ad9025ed8d5af69eefe2005a420dace6db4d45be30151f1257ecac4ff10b1e40dc37ac25502289ce74979c3a8c27d07943b76ec05087bdb9035d5f1e44bbac6c177cad20986be91bd3fa899a154fbfffa2d6c058445f22a2c27206cde88c26136121ee67d6139b2d7f3ee704b6c6e1a0bab93bf8036fa32c36ef12c4ee0a700840b5e767ce2ba2a0cce5f333daff039a2d1874809995bfb0df1baaf6da0e6cada2339ff8ed2b21d971e39074641784458c0062b01f03b39a5e2fd351ff6f28957461ecefde8e1d747a8c84ffea8e9ef2aec57a3bf1f50052715051de9fcfe89d217fa6a1ddd7dbb84111d0466552dabfd0e8231c767a6f8fc1d240f916bac7c7b87274fb83a495bb61aee3962bf44b72c64cdfbb87fb50ad758cb3a234fc68ce6b1ea383501dd7dcf6c542df1f649bf1297ad4b312a076a34eca133147e05cf261f1e7c166acdca8e399d779b196859dd9709a6f7d089b7b1b4b2b79160cfbef344d0dfe9061f9680a29597b521791da312c761791d8ad330a86474641fe18c03ef7550c70e95d50056e0bf96b13121a39f91b929b2d847e0354aa98af1d5719cd1695dc20fe0e7011acb93548c68b084a1975df4b29688bac9fb588a34902213bec07f8a1b31ac697a426fdae640ce64c180c6375d8007e65e5bcdddc4f91f5206eb60bd327c649b9115016b9fa10bfb547af1bbfbf025226f71f40b90f3d2895785d32cb6d9910a4d80c577933f69d6252ee5a1db301ce0924f6507bdf56ef4cb526250967b86ceb3e6713fc8971120cb59f3dfb4175bd4113419846e9a60f973f1305f4e6bba49cceb8ad4480dd6a0f034d2cf6795c493179b5b19d1c81b002bf94cc8c404905bb6246e74331e030cad13ae7828e02f5a48f1720c29410b718dc9f43e1412a7c399cc6608afea32dbab22401d1ccdc44664d1f8c5f5fef664372062003a01b01f7aa6623c4b5f5ba069f926c3399d1fc58e24207cf5b7faefb1938141a630e9938219cf7f0dd89df2329123e57c7bba1a77fad240889a1796c56a3bb377cbd3002401211f402e261d841b1f8431c85fc038d46537ab3a8a9f950b26cddfa11d5df8978aa7fffc956dc52873ab7726fbe9d8ffe07954cf69ccb9ff5074adb103c7da214dc10932f29afa31ca7e0d4c10150d6a5f807f429fa4871da24b61e7c538eab48d760cfd3a0fa0429b64f04404e568b2a1c99e3753181ffc149b01b011410b7c30da4a2956cd5630df7eff2282b980f65d249ab5fd6aadee7ed15f0127bd1e544f06ad3b0213fb95a5f1a28473ea3f93590a1db060f875691edf05945e9682e7e2be5424f624f9e54e20402b5ed0f499c555753edebf69a893ae90ebcda96969d0480f377866f0584fdae11de5b134f96907292ca8b79baebdc4c5a9b908b603996489385a97968a615d4b1238932a3564145e1569b4afc2a2bec8e5a680ae712b3dc6441105d4023c3b38fb9f621c5589b26968eea0105d8454bc35b0cfee923751f53c52a1af70a6aa83900a00821c58b68a9bb4f0d9a67ca936f303ed30b8a753fadcdb58534af84c8aaddc898e494322f4cfc1fb72f28547d8ddec38398d27f904ea806106ec7fba35ea3ea78173804191b02cb9d74b4ec74e528fc1989addc8dacdea6665dca501179d80bd47e34c17119440454616155f1202f25b0522c9b2b8cdc93ad2d5a1be4ef43c138f51e08dcda66ff238b5e074440d263801f104426643cf896d258924c659bb4f1cf60c17255f64b236ae1fff175848cad23747473b21efdb2908ab5d3b5b8f14cb5ad842ac18e57c836b4216ce57e61a37f87bb9e635b18b22fa4b16c734236ea8e17ca2a40f6861013c3bb3af2cc67b3fdabac3c14c2497c65f65ea18697f3650951993272841969047081f4648d390d045e246204c620f3df810d28f4756d0c7fddc19c797b11b775fe22dcad670fa5521ca7b9cecc8d198d110bf81069f99def952e2aef456fe4d4351c62b9f150e635904dbcfa0157a9e4f655d5635822a10d7f793213c926c5ea9bbb1f533a6515ca5a1b368f175a5f4c0289e80bd7e512d56d18e06a34239e052d74424abb531acec347e6023f9aac0464bf529f683fc24e2124dbacff87927bf1dfa949321ac0bd141d470c00b189df0bf0fda1edd4bc670647c67f32640cf7eab4feffc4e985503408c0966645c8702edd92f486f853a41d8a377fb656727e72ce31b9cbd3d1c823c85924d2bf8582aea2018256a03194351f8678aeaa6d0b793b734b460b5ada5679ba004910acbfe34af4226a3c204ff7509fa89f55948592caa792633678e99acb967e4fda7c3c317731576c387e54f81a10ad4628495deccd901d831692a9296b52a2479d44ef187f8063d26c271e6e1cb3b7639abd08025ed430236c4330345bf19f8ecdc189c4136bc230d4dafe588b7047de9eac8c0d55306cc4cb0a4bdcf29c6030e890c775e4b5f8312cd47e19afa2c90bbec9f4084a320024c2214345281490e937967c33e9a5357b1b1235c56e6731c40dbc8f4e0bae0d307c54ed2eb2116abc720acb64cb7f27f433c6793d9a83d119e5ca12fed69ff2ac8ab4aaffebf3a16418669f1097ff3267ee2bcae67d5ad302ce5088397edc7a316fdcd935bded404f7b8178e6bbe1d5005a474ea975c779b9f352f1d6f16f6a469ce4fc6710dae1b26eaa1934e28775c0476a6ca31faea1513fa764d7c4b5bb4a9333c601aeaeee4487a2b04adcacb7e816bea0cf25c372f3eeb33d5d521d122a54f562ec19b9d5df637627244280b6b3daa40fafe8a1d66833e2a97b43603c7f30effc097c6ec19dc6cf4061099bee8f78292542937963e1173c36ca15fccf5d88e6dbf86334ecab75d05d4bb953412d7dc954576f18376d5f1352c03c66c1a0a3fdb2f92c27fbcf4261a773f4126499aed5edc231396daf \ No newline at end of file diff --git a/blend/message/src/fixtures/encapsulated_payload.hex b/blend/message/src/fixtures/encapsulated_payload.hex index 75027cb07..f36c7ea74 100644 --- a/blend/message/src/fixtures/encapsulated_payload.hex +++ b/blend/message/src/fixtures/encapsulated_payload.hex @@ -1 +1 @@ -011027070809aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file +011047070809aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file diff --git a/blend/message/src/fixtures/padded_payload_body.hex b/blend/message/src/fixtures/padded_payload_body.hex index 39e965d94..f4b34dccb 100644 --- a/blend/message/src/fixtures/padded_payload_body.hex +++ b/blend/message/src/fixtures/padded_payload_body.hex @@ -1 +1 @@ -1027010203aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file +1047010203aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file diff --git a/blend/message/src/fixtures/payload.hex b/blend/message/src/fixtures/payload.hex index f3a98723a..b11ef9c1f 100644 --- a/blend/message/src/fixtures/payload.hex +++ b/blend/message/src/fixtures/payload.hex @@ -1 +1 @@ -011027040506aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file +011047040506aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \ No newline at end of file diff --git a/blend/message/src/message/payload.rs b/blend/message/src/message/payload.rs index 2f5940f61..e155ffdbb 100644 --- a/blend/message/src/message/payload.rs +++ b/blend/message/src/message/payload.rs @@ -8,14 +8,14 @@ use crate::Error; /// Every dispersed payload body is padded to this size, so it must fit the /// largest thing the blend network carries: a block proposal. /// -/// A block proposal is at most 10000 bytes: +/// A block proposal is at most 18192 bytes: /// - A 297-byte header /// - At most `MAX_UNCLES` uncle headers of 361 bytes each, behind a 1-byte /// count prefix. -/// - At most `MAX_BLOCK_TXS` transaction references of 8 bytes, behind a 2-byte -/// count prefix. +/// - At most `MAX_BLOCK_TXS` transaction references of 16 bytes, behind a +/// 2-byte count prefix. /// - A 64-byte signature -pub const MAX_PAYLOAD_BODY_SIZE: usize = 10000; +pub const MAX_PAYLOAD_BODY_SIZE: usize = 18_192; #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)] #[repr(u8)] diff --git a/core/src/block/fixtures/mod.rs b/core/src/block/fixtures/mod.rs index e155c1b8e..c981a4ee4 100644 --- a/core/src/block/fixtures/mod.rs +++ b/core/src/block/fixtures/mod.rs @@ -44,7 +44,7 @@ fn header(id: u8) -> Header { codec_fixtures!( References, - Self { mempool_transactions: three_references() } => "0300010101010101010102020202020202020303030303030303" + Self { mempool_transactions: three_references() } => "0300010101010101010101010101010101010202020202020202020202020202020203030303030303030303030303030303" ); // Layout: `header (297B) || signature (64B)` @@ -58,10 +58,10 @@ codec_fixtures!( ); // `header (297B) || uncle_headers (1B count + count * 361B) -// || references (26B) || signature (64B)` — 1471 bytes with three uncles. +// || references (50B) || signature (64B)` — 1495 bytes with three uncles. // // `references` is a `BoundedVec` capped at 1024, so it carries a 2-byte -// little-endian length prefix ahead of its 3 * 8-byte hash prefixes. +// little-endian length prefix ahead of its 3 * 16-byte hash prefixes. codec_fixtures!( Proposal, Self { @@ -69,5 +69,5 @@ codec_fixtures!( uncle_headers: three_uncle_headers(), references: References { mempool_transactions: three_references() }, signature: Ed25519Signature::from_bytes(&[0x01u8; _]), - } => "0100000000000000000000000000000000000000000000000000000000000000002a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000030166666666666666666666666666666666666666666666666666666666666666662a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666660177777777777777777777777777777777777777777777777777777777777777772a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777770188888888888888888888888888888888888888888888888888888888888888882a000000000000002222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222255550000000000000000000000000000000000000000000000000000000000003333333333333333333333333333333333333333333333333333333333333333444400000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888030001010101010101010202020202020202030303030303030301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" + } => "0100000000000000000000000000000000000000000000000000000000000000002a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000030166666666666666666666666666666666666666666666666666666666666666662a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666660177777777777777777777777777777777777777777777777777777777777777772a0000000000000022222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222555500000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333333333333333333333333333333334444000000000000000000000000000000000000000000000000000000000000777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777770188888888888888888888888888888888888888888888888888888888888888882a000000000000002222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222255550000000000000000000000000000000000000000000000000000000000003333333333333333333333333333333333333333333333333333333333333333444400000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888030001010101010101010101010101010101020202020202020202020202020202020303030303030303030303030303030301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101" ); diff --git a/core/src/block/mod.rs b/core/src/block/mod.rs index 8fbe70864..460857f1b 100644 --- a/core/src/block/mod.rs +++ b/core/src/block/mod.rs @@ -31,18 +31,6 @@ const MAX_BLOCK_TRANSACTIONS: usize = 1024; /// Note: This is not the total block size. pub const MAX_BLOCK_TRANSACTIONS_SIZE: usize = 1024 * 1024 * 2; -/// The most mempool transactions that may share a single reference prefix -/// before a proposal is treated as unreconstructable. -pub const MAX_CANDIDATES_PER_REFERENCE: usize = 8; - -/// The most candidate combinations a validator will try while resolving a -/// proposal's references. -/// -/// With `N_comb = product(|C_i|)` over the per-reference candidate sets, this -/// bounds reconstruction work so that prefix collisions stay a cost problem -/// rather than a verification-time denial-of-service vector. -pub const MAX_RECONSTRUCTION_COMBINATIONS: usize = 32; - pub type BlockNumber = u64; #[derive(Debug, thiserror::Error)] @@ -845,15 +833,15 @@ mod tests { assert!(matches!(err, Error::Header(HeaderError::GenesisSlot))); } - /// The specification fixes the maximum proposal at 10,000 bytes: + /// The specification fixes the maximum proposal at 18,192 bytes: /// `header (297) || uncle_headers (1 + MAX_UNCLES * 361) - /// || references (2 + 8192) || signature (64)`. + /// || references (2 + 16384) || signature (64)`. #[test] fn maximum_proposal_matches_the_specified_size() { use lb_codec::BinaryEncode as _; use lb_cryptarchia_engine::MAX_UNCLES; - const SPECIFIED_MAX_PROPOSAL_SIZE: usize = 10000; + const SPECIFIED_MAX_PROPOSAL_SIZE: usize = 18_192; let proof = create_proof(); let uncle = signed_uncle(1, &proof); diff --git a/core/src/mantle/fixtures/tx.rs b/core/src/mantle/fixtures/tx.rs index 7c6e878d5..a88fb7de5 100644 --- a/core/src/mantle/fixtures/tx.rs +++ b/core/src/mantle/fixtures/tx.rs @@ -25,6 +25,6 @@ codec_fixtures!( codec_fixtures!( TxHashPrefix, - Self([0u8; 8]) => "0000000000000000", - Self([1u8; 8]) => "0101010101010101" + Self([0u8; _]) => "00000000000000000000000000000000", + Self([1u8; _]) => "01010101010101010101010101010101" ); diff --git a/core/src/mantle/transactions/hash.rs b/core/src/mantle/transactions/hash.rs index 13af5759e..6dfbd6920 100644 --- a/core/src/mantle/transactions/hash.rs +++ b/core/src/mantle/transactions/hash.rs @@ -15,7 +15,7 @@ serde_bytes_newtype!(TxHash, 32); /// Number of leading hash bytes a block proposal uses to refer to a /// transaction. -const REFERENCE_PREFIX_BYTES: usize = 8; +pub const REFERENCE_PREFIX_BYTES: usize = 16; /// The leading [`REFERENCE_PREFIX_BYTES`] bytes of a [`TxHash`] — how a block /// proposal refers to a transaction that is already in a validator's mempool. @@ -162,7 +162,7 @@ mod tests { assert_eq!( TxHash(hash).prefix(), - TxHashPrefix([0, 1, 2, 3, 4, 5, 6, 7]) + TxHashPrefix([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) ); } diff --git a/services/chain/chain-network/Cargo.toml b/services/chain/chain-network/Cargo.toml index ae8dace88..f11b8b42c 100644 --- a/services/chain/chain-network/Cargo.toml +++ b/services/chain/chain-network/Cargo.toml @@ -16,7 +16,6 @@ workspace = true async-trait = { workspace = true } backon = { features = ["tokio-sleep"], workspace = true } futures = { workspace = true } -itertools = { features = ["use_alloc"], workspace = true } lb-chain-service = { workspace = true } lb-codec = { workspace = true } lb-core = { workspace = true } diff --git a/services/chain/chain-network/src/lib.rs b/services/chain/chain-network/src/lib.rs index c985e01ff..94a20ac50 100644 --- a/services/chain/chain-network/src/lib.rs +++ b/services/chain/chain-network/src/lib.rs @@ -15,13 +15,9 @@ use std::{ use bootstrap::ibd::ChainNetworkIbdBlockProcessor; use futures::{StreamExt as _, future::join_all}; -use itertools::Itertools as _; use lb_chain_service::api::{CryptarchiaServiceApi, CryptarchiaServiceData}; use lb_core::{ - block::{ - Block, BlockTransactions, MAX_CANDIDATES_PER_REFERENCE, MAX_RECONSTRUCTION_COMBINATIONS, - Proposal, - }, + block::{Block, BlockTransactions, Proposal, verify_header_alone}, header::HeaderId, mantle::{ traits::{Hashable, MantleTxWithProofs}, @@ -63,7 +59,7 @@ pub use crate::{ }; use crate::{ bootstrap::ibd::InitialBlockDownload, - mempool::{MempoolAdapter as _, adapter::MempoolAdapter}, + mempool::{MempoolAdapter as MempoolAdapterTrait, adapter::MempoolAdapter}, relays::ChainNetworkRelays, sync::{ orphan_handler::OrphanBlocksDownloader, @@ -85,22 +81,14 @@ pub enum Error { Serialisation(#[from] lb_core::codec::Error), #[error("Invalid block: {0}")] InvalidBlock(String), - #[error("Failed to reconstruct block: {0} mempool transactions not found")] - MissingMempoolTransactions(usize), - #[error("Reference {index} ({prefix}) matches no local transaction")] - UnresolvedReference { index: usize, prefix: TxHashPrefix }, - #[error("Reference {index} ({prefix}) matches more than the {max} local transactions allowed")] - AmbiguousReference { - index: usize, - prefix: TxHashPrefix, - max: usize, - }, - #[error( - "Resolving the references needs {combinations} combinations, more than the {max} allowed" - )] - TooManyReconstructionCombinations { combinations: usize, max: usize }, + #[error("Header is not valid on its own: {0}")] + InvalidHeader(lb_core::block::HeaderError), #[error("No combination of candidate transactions reproduces the block root")] NoMatchingReconstruction, + #[error("Reference {index} ({prefix}) matches no local transaction")] + UnresolvedReference { index: usize, prefix: TxHashPrefix }, + #[error("Reference {index} ({prefix}) matches more than one local transaction")] + CollidingReference { index: usize, prefix: TxHashPrefix }, #[error("Mempool error: {0}")] Mempool(String), #[error("Block header id not found: {0}")] @@ -586,6 +574,23 @@ where } } + // The header must stand on its own before any mempool scanning. + // `references` is unauthenticated, so tampered copies of a genuine + // proposal are cheap to mint, and reconstruction walks the mempool once + // per reference. A bad signature is a property of the proposal itself — + // identical at every node — so it is final and recorded against + // `block_id`. + if let Err(e) = verify_header_alone(proposal.header(), proposal.signature()) { + let e = Error::InvalidHeader(e); + metrics::consensus_observe_proposal_reconstruct_err("network", &e); + error!( + target: LOG_TARGET, %e, ?block_id, + "Proposal header failed the checks that need the header alone", + ); + orphan_downloader.insert_rejected_block(block_id); + return; + } + let reconstruct_started_at = Instant::now(); let block = match reconstruct_block_from_proposal(proposal, relays.mempool_adapter()).await { @@ -602,6 +607,11 @@ where "Failed to reconstruct block from proposal: {:?}", e ); + // Deliberately not recorded against `block_id`. Failing to + // resolve a reference says the transaction has not reached + // *this* mempool, not that the block is invalid; the same block + // may arrive in full through chain synchronisation and must + // then be judged on its merits. return; } }; @@ -1008,99 +1018,63 @@ where /// Reconstruct a `Block` from a `Proposal` by resolving its reference prefixes /// against the local mempool. /// -/// A reference is only the leading bytes of a transaction hash, so it may match -/// several mempool transactions. `header.body_root` still commits to the full -/// hashes, so at most one combination of candidates can reproduce it — and -/// `Block::reconstruct` is what checks that, so the first combination that -/// reconstructs *is* the match. +/// A reference is a 16-byte prefix of the transaction hash. Two distinct hashes +/// cannot be found or manufactured to share one at any feasible cost, so every +/// reference resolves to exactly one local transaction and resolution never +/// branches. `header.body_root` still commits to the full hashes and +/// `Block::reconstruct` checks it, which is what catches the residual, +/// cryptographically negligible case of a prefix matching the wrong +/// transaction. +/// +/// The caller must have validated the header first: this walks the mempool once +/// per reference, so an unauthenticated proposal has to be discarded before it +/// gets here. async fn reconstruct_block_from_proposal( proposal: Proposal, - mempool: &MempoolAdapter, + mempool: &impl MempoolAdapterTrait, ) -> Result, Error> where Item: MantleTxWithProofs + Clone + Send + Sync + 'static, { - let candidates = candidates_for_proposal(&proposal, mempool).await?; - - let header = proposal.header().clone(); - let uncle_headers = proposal.uncle_headers().clone(); - let signature = *proposal.signature(); - - let try_rebuild_with_txs = |transactions: Vec| { - let transactions = BlockTransactions::try_from(transactions).ok()?; - Block::reconstruct( - header.clone(), - uncle_headers.clone(), - transactions, - signature, - ) - .ok() - }; - - // A proposal with no references still has one candidate block: the empty one. - if candidates.is_empty() { - return try_rebuild_with_txs(Vec::new()).ok_or(Error::NoMatchingReconstruction); - } - - // Try all combinations of candidates and find the one that can be used to - // reconstruct the block from the proposal. - candidates - .into_iter() - .multi_cartesian_product() - .find_map(try_rebuild_with_txs) - .ok_or(Error::NoMatchingReconstruction) -} - -/// The candidate transactions for every reference in `proposal`, in reference -/// order, subject to both caps from the block-construction specification. -/// -/// Returning here means the cartesian product of the sets is within budget, so -/// the search that follows is bounded before it starts. -async fn candidates_for_proposal( - proposal: &Proposal, - mempool: &MempoolAdapter, -) -> Result>, Error> -where - Item: MantleTxWithProofs + Clone + Send + Sync + 'static, -{ - let mut candidates = Vec::with_capacity(proposal.mempool_transactions().len()); - let mut combinations = 1usize; - + let mut transactions = Vec::with_capacity(proposal.mempool_transactions().len()); for (index, prefix) in proposal.mempool_transactions().iter().copied().enumerate() { - let found = candidates_for_reference(index, prefix, mempool).await?; - - combinations = combinations.saturating_mul(found.len()); - if combinations > MAX_RECONSTRUCTION_COMBINATIONS { - return Err(Error::TooManyReconstructionCombinations { - combinations, - max: MAX_RECONSTRUCTION_COMBINATIONS, - }); - } - - candidates.push(found); + transactions.push(resolve_reference(index, prefix, mempool).await?); } - Ok(candidates) + Block::reconstruct( + proposal.header().clone(), + proposal.uncle_headers().clone(), + BlockTransactions::try_from(transactions)?, + *proposal.signature(), + ) + .map_err(|_| Error::NoMatchingReconstruction) } -/// The local transactions a single reference could mean, refusing as soon as -/// the reference is unusable. +/// The single local transaction a reference means. /// -/// One candidate beyond the cap is taken so that "too many" is distinguishable -/// from "exactly at the limit" without draining the stream. -async fn candidates_for_reference( +/// A reference resolves only when the match is unique. Zero matches means the +/// transaction has not reached this mempool; two or more would be a prefix +/// collision, which is infeasible to manufacture and vanishingly unlikely to +/// occur by chance, and is treated as unresolved rather than searched. Because +/// the match is unique when it exists, the result does not depend on the order +/// in which the mempool is scanned. +/// +/// Two candidates are taken so that "collides" is distinguishable from +/// "resolves" without draining the stream. +async fn resolve_reference( index: usize, prefix: TxHashPrefix, - mempool: &MempoolAdapter, -) -> Result, Error> + mempool: &impl MempoolAdapterTrait, +) -> Result where Item: Hashable + Send + Sync + 'static, { - let candidates: Vec = mempool + let mut candidates: Vec = mempool .get_transactions_by_prefix(prefix) .await .map_err(|e| Error::Mempool(format!("Failed to resolve reference {index}: {e}")))? - .take(MAX_CANDIDATES_PER_REFERENCE.saturating_add(1)) + .take(2) + // We collect into a `Vec` since we are only taking at most 2 elements. .collect() .await; @@ -1109,12 +1083,8 @@ where metrics::consensus_observe_proposal_missing_txs(1); Err(Error::UnresolvedReference { index, prefix }) } - found if found > MAX_CANDIDATES_PER_REFERENCE => Err(Error::AmbiguousReference { - index, - prefix, - max: MAX_CANDIDATES_PER_REFERENCE, - }), - _ => Ok(candidates), + 1 => Ok(candidates.remove(0)), + _ => Err(Error::CollidingReference { index, prefix }), } } @@ -1122,8 +1092,106 @@ where mod tests { use std::sync::atomic::{AtomicUsize, Ordering}; + use futures::stream; + use lb_core::mantle::{traits::Hasher, transactions::hash::REFERENCE_PREFIX_BYTES}; + use lb_tx_service::TxsWithCommonPrefix; + use super::*; + /// A transaction that is nothing but its hash, which is all + /// [`resolve_reference`] looks at. + #[derive(Clone, Debug, PartialEq, Eq)] + struct HashOnlyTx(TxHash); + + impl Hashable for HashOnlyTx { + const HASHER: Hasher = |tx| tx.0; + type Hash = TxHash; + + fn as_signing(&self) -> Vec { + self.0.0.to_vec() + } + } + + /// A mempool that answers every prefix with the same fixed candidate list, + /// so a test states only how many transactions a reference matches. + struct FixedCandidates(Vec); + + #[async_trait::async_trait] + impl MempoolAdapterTrait for FixedCandidates { + async fn add_transaction(&self, _tx: HashOnlyTx) -> Result<(), DynError> { + unimplemented!("resolution never adds") + } + + async fn remove_transactions(&self, _ids: &[TxHash]) -> Result<(), DynError> { + unimplemented!("resolution never removes") + } + + async fn get_transactions_by_prefix( + &self, + _prefix: TxHashPrefix, + ) -> Result, DynError> { + Ok(Box::pin(stream::iter(self.0.clone()))) + } + } + + fn tx(byte: u8) -> HashOnlyTx { + HashOnlyTx(TxHash([byte; 32])) + } + + /// Two transactions that agree on the reference prefix and differ only past + /// it — the collision a 16-byte prefix makes infeasible, constructed by + /// hand. + fn colliding_pair() -> Vec { + let mut first = [0xAAu8; 32]; + let mut second = [0xAAu8; 32]; + first[REFERENCE_PREFIX_BYTES] = 0x01; + second[REFERENCE_PREFIX_BYTES] = 0x02; + vec![HashOnlyTx(TxHash(first)), HashOnlyTx(TxHash(second))] + } + + #[tokio::test] + async fn a_reference_resolves_to_its_one_matching_transaction() { + let mempool = FixedCandidates(vec![tx(7)]); + + let resolved = resolve_reference(0, TxHash([7u8; 32]).prefix(), &mempool) + .await + .expect("a unique match resolves"); + + assert_eq!(resolved, tx(7)); + } + + #[tokio::test] + async fn a_reference_matching_nothing_locally_is_unresolved() { + let mempool = FixedCandidates(Vec::new()); + let prefix = TxHash([7u8; 32]).prefix(); + + assert!(matches!( + resolve_reference(3, prefix, &mempool).await, + Err(Error::UnresolvedReference { index: 3, prefix: p }) if p == prefix + )); + } + + /// A collision is reported rather than searched: resolution must not + /// branch, so that two validators holding the same mempool always + /// decide alike. + #[tokio::test] + async fn a_reference_matching_two_transactions_is_not_searched() { + let candidates = colliding_pair(); + let prefix = candidates[0].hash().prefix(); + assert_eq!( + prefix, + candidates[1].hash().prefix(), + "the pair must collide" + ); + + let mempool = FixedCandidates(candidates); + + assert!(matches!( + resolve_reference(1, prefix, &mempool).await, + Err(Error::CollidingReference { index: 1, prefix: p }) if p == prefix + )); + } + fn future_block_error() -> Error { Error::Cryptarchia(lb_chain_service::api::ApiError::FutureBlock { block_slot: Slot::new(2), diff --git a/services/chain/chain-network/src/mempool/mod.rs b/services/chain/chain-network/src/mempool/mod.rs index 6e1679a67..4b600f0ac 100644 --- a/services/chain/chain-network/src/mempool/mod.rs +++ b/services/chain/chain-network/src/mempool/mod.rs @@ -12,9 +12,10 @@ pub trait MempoolAdapter: Send + Sync { /// The local transactions a single proposal reference could mean. /// - /// A reference is only the leading hash bytes, so several mempool - /// transactions may answer to it. The stream is unbounded and unordered: - /// deciding how many candidates are acceptable is the caller's job. + /// A reference is only the leading hash bytes, so in principle several + /// mempool transactions could answer to it. The stream is unbounded and + /// unordered: what a non-unique match means is a consensus question, so it + /// is the caller's to decide. async fn get_transactions_by_prefix( &self, prefix: TxHashPrefix, diff --git a/services/chain/chain-network/src/metrics.rs b/services/chain/chain-network/src/metrics.rs index 5f937229b..8e8499714 100644 --- a/services/chain/chain-network/src/metrics.rs +++ b/services/chain/chain-network/src/metrics.rs @@ -43,7 +43,10 @@ pub fn consensus_observe_proposal_reconstruct_ok(duration: Duration) { pub fn consensus_observe_proposal_reconstruct_err(origin: &'static str, err: &Error) { let reason = match err { - Error::MissingMempoolTransactions(_) => "missing_txs", + Error::InvalidHeader(_) => "invalid_header", + Error::UnresolvedReference { .. } => "missing_txs", + Error::CollidingReference { .. } => "colliding_reference", + Error::NoMatchingReconstruction => "body_root_mismatch", Error::Mempool(_) => "mempool", Error::InvalidBlock(_) => "invalid_block", _ => "other", diff --git a/services/tx-service/src/backend/pool.rs b/services/tx-service/src/backend/pool.rs index 4309d126b..7e0f897b5 100644 --- a/services/tx-service/src/backend/pool.rs +++ b/services/tx-service/src/backend/pool.rs @@ -70,10 +70,10 @@ where /// Secondary index over [`Self::pending_items`], keyed by the hash prefix a /// block proposal would use to refer to a transaction. /// - /// Buckets are plain vectors: a 64-bit prefix makes collisions vanishingly - /// rare, so almost every one holds a single key, and the branching cap puts - /// a hard ceiling of a handful on the rest. A set would cost a hash table - /// per bucket to deduplicate keys that are already unique. + /// Buckets are plain vectors: a 128-bit prefix cannot be made to collide at + /// any feasible cost, so every one holds a single key in practice. A set + /// would cost a hash table per bucket to deduplicate keys that are already + /// unique. by_prefix: HashMap>, removed_items: BTreeMap, last_item_timestamp: u64, diff --git a/services/tx-service/src/tx/service.rs b/services/tx-service/src/tx/service.rs index 5b9bb0c62..91fef6c97 100644 --- a/services/tx-service/src/tx/service.rs +++ b/services/tx-service/src/tx/service.rs @@ -459,8 +459,8 @@ where /// Every transaction whose hash starts with `prefix`. /// /// The prefix index is consulted first, so the storage round-trip only - /// covers keys that actually match. No policy is applied here: how many - /// candidates are tolerable is a consensus question, so it belongs to the + /// covers keys that actually match. No policy is applied here: what a + /// non-unique match means is a consensus question, so it belongs to the /// caller. async fn get_transactions_by_prefix( pool: &Pool, diff --git a/services/tx-service/tests/mock.rs b/services/tx-service/tests/mock.rs index b8b148422..dbfd2524e 100644 --- a/services/tx-service/tests/mock.rs +++ b/services/tx-service/tests/mock.rs @@ -817,7 +817,7 @@ fn prefix_lookup_tracks_the_pending_set() { ); // A prefix that no transaction carries stays empty. - let absent = TxHashPrefix([0xFFu8; 8]); + let absent = TxHashPrefix([0xFFu8; _]); if absent != prefix { assert!( app.runtime()