use fips205::slh_dsa_sha2_128f; use fips205::traits::{KeyGen, SerDes, Signer, Verifier}; use rand_chacha::rand_core::SeedableRng; #[ignore] // TODO: rerun WASM case with context at top-level #[test] fn test_browser_message() { let msg = b"asdf"; let hedged = true; let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(123); let (pk, sk) = slh_dsa_sha2_128f::KG::try_keygen_with_rng(&mut rng).unwrap(); let sig = sk.try_sign_with_rng(&mut rng, msg, &[], hedged).unwrap(); assert!(pk.verify(msg, &sig, b"context")); assert_eq!(sk.into_bytes(), *hex::decode("932b30e756257dda01d47dd4a1b0e62abb8fa01f222ad8554ed821a89f82cbbb3f537f509949e758624a70946a776986052a5761098a9b4ecbfaa10a92aee325").unwrap(), "sk not correct"); assert_eq!(sig, *hex::decode("9d17e00068ec228a32fab3988abd86d1588e5402741d7296aab76be22a9ac235dc8147225db2989350c21dc15954e4adb582259e8cbeea56fc31b03a68dcbcbe35f4857daef1af33f782dacf4d293072c0c1024e68b7d199a00e7210b59807d8cc65cfd7daecabb3210392117168828a2d6b217ddad5a8c1e20b31b073ba4677ca8f10469fc864a2e7ee766fd7721693311b8523d9265af4e57e5a2c6a769d6c1c0b45e3664e3b7f35238e6cf42e9b0a0434ef2d4f8cf56a9fb7ccd9d321c222a43a63e345d01bd8013af7340f295487087745b27752c6080843211c2893adca9f574311ba058c4c175afd564f5131c22557c037e0b321b977d1f4d82a04a24bf34dd18ae60657f323c89441ce7122b26fd610bd95ae976fcf2a7f6faaa1a59caa564a0f84d5ebb77b3263e9480ae57e1ccdbb790a62b34c0d1693d748b8e047814ec5cd9a3115ac2a4e4e120957095f14fae6920de21d126cb0b0fa9d391a62c20a17ed07955c708bdd08f2b0141df3754d85aeb432fa2a5436d2c124dc3853ddb2569682cf8eacc432ea10bde68959fe85e319df9a44e11e0d648bc167cb28cfb7bb852b47e7745e8d5ff891349fb43e92ac213838d5e0682f552c0a8ea6a30851e82f7da14bcf7d11d5bf6dc3446459fc77cf9dc82cf8d33b904752952ec877f198eb848d16e48386c45f916c0b78b68dbb26357d4ee9a817c232a6fa6da4a8f83b826e835653b96c54128ffac6f28ad169aba35b36e1dd0ea9a52d5c06d683ac9ab0b6ad849eb78ca35fc20a5f8dc3ae27cb05c69c40e614d4d19567f50bfeff3da6b7a4da2f9ae63d4c6ede0722b6af88457b4cce36dd9f7d9d98108f2c9606cc9d57cb9ab07d93a7c32f33e6f7f94b8363473f50d2ce4b74b6278ebd36a0126f7e8574390c69d0a4efbe1a3b05c245e806f2099b07299981f9fe38564393cbcf1c9e39d4e5c273f5abea6e67a793aeb1f87dafb756d919b8b6d893b4c5fa5e1f1e6a17e43a2a87c64dcbaa298d9590bc2b5640f7675f70a8944bc70901cf2eb3ef149cbfa901806029accd938c6b9551791e230a81a88e98692d155bd3a64e243b071a8ac7424967139ea82efe28688beac12925c5800623fb4819c938e1de6167d243d7baf96c8c5983f85601f8dcdf1390a04037ed0f7365ab7a99f0486d62267f9d5af7e4142ec83349df0fa8c1230e3565d02f9a0c62ef2b7527ff88ff847f043eb4e0e50ff84ac988f3b7c54d26903455baf06893857796f6b234728248bf6a06fe0ca8c163d49ca3f1b5ee88d7ace66eed43e7f111c19d1025c141d6995e67914b740fe1c62272e0e0e672f346126df240634b3f93d21ca1f1b31133b5935f2508015ca85e8c5ff5f1dc970161c8849f3270165f96824d4a34caf76d03c43be9a408658e42ad0d4e12c858563fde4f143757a7f46abf394515d90c223f0dbaee5d8ade68e6bc0540a5c73ffd20a561c984d2ad6e391f45e88d97bdb5859e5cfb58ab55b024803b51984ee32e20fdfe603d1246ff918ecd9046d38c505eaf13e913de21a599c864c5d40d147c530560a41847cf4150748bb3c754f39eeeb450ec7706bb4b67de52d5443c5395b1f0925ca989339affe484f74b8e14abb72cfae619afdd9c1260f83fe6fe483c07da57c86eb969463295f289eab2d5836900a86138d37ca9b05e743a68e9d495a4235c8653d649bd525299bec36b2dd7927a20cce1ecf9cd38efa40fa75c86938b49f87c2fa5c87a4f773c53079a7e479132798d6007dbb922407f208740d5dcb2278bbaf5fe7eb9a5f55c30d9fb708bfc8ea4606698c53794da1265b14b8a343a6d162ef1c8d4897b64f4da55c52d8b494d7a28afff3d71430ec49afb53dd7f2847e90e27f62153d20f5ad1516d9cf0b3e95f2d025ab2ff091b9d783b6fec1481bbd355e348f037f6843ba934162084fe4ecbb15ba2cdc3976c9c96ed46bc409be77dc4588280c4d4a8b01206bb3a4b6775cfb5d2a4ddbac65cf0f9db82d8fd691a460d276bec94213ff1de4e61c87218ab9591afa1ed124976f5f662993500f8b6222e96e970a4bf3a6bbb4adec7131372646527b254e2bf95d3f350f5656663a96f2bbfcaac3e7f263b8bd97a40d27ab38af064be561669d49e937094b7312d12a702e2dca281851722617cf69d36a1ece15b932c806336bf5cc65db5b047bbb5d28495a92b5f31ca8d43b71f1f7e05eb82f7c52bb70e19a2e3856761969bee57c3ee1c15c2572b652daff218a93ebe08a9979e9738dc7a142f814563941a7187d3a1c69db43db40a865b558d72cc5b8a657eeaac71d89f0dc9a36a5161a98d89e9022bcd6660092da82c543c50b926226ee7aa36552d7058b719b9c8414db207435a8778b563475107d9cf120fe191e2d289c53724bef1afeda720c33fb41677a058045d516485ae0a8a06c3147183d06aa2759dd206e3082864ff633faadd4b600db2c05424fd9c602155003612623fd98f65ba6b75007b81ec64b9ef3a33dfa9fb6f193b613f5ef05a6b77a633527922014a2e730660a7b035334746b7c92bf627928f819372c3e3a5fc418fc2fc5bbdfbe8044ea90cc705f01e9e31ad0e9a812ed548b1f3935454524d16dbfbcdcefc4d3c4cb2b5a7a05977324388624d402e2bc58e70f5b0dec39d458903038b1a59ac9d82d0c7742ec30a7dd2c9b9f5fee5595df85cb27f2e0dbe1a91e3bcc8510e73d51dec55881a5695e7d8b5459d8f6b78b4e67a15ab221344d79a5e051d66002831ba2b5a826180c404f40bfd4de083c49a45f581c1c1ff77a363c316c694a930e484a65ed693df3a8e0dabbad6d2a83153587f145c1e3751ba361aa7060d55022e48a2a07474f1570b5a72fac307d1794182e1c7516feb8258bad3548a35ebe9d89c12ce6b0e0ab82eb542d95419d1004e56e220d4ea83f2d64e988c65b6f1b214180bc7137735c09b8ed91e4adb2772764069a6e8b3ce4a94660d14434d90c5271c2219ed9364631541c16bfb6d6d0e687c7991c272addc1de7438b738ff38c0987f759102d7560ec359a4ad3a86d622bd01e832ccd2816810daf1f8e93e5c8cbe9081f868184aacfcb89ee47ba497be126a3229ad5fd7224dd40edcc0cd7502986a706a5658ef8ac7652d00922ed05339d9679b41fe3eab6dc4aea4480e6dec563f2dbd3aed04dd6d1cedd3ef54297c46257fee5458e1cd27d3d5e8415e1f9f3ebc23ac62664d313ee0d593e335de92c6ad53b70086532633c8bad2163fdf975683aa7451a7b83f6c046f628249bb86510fdf804c52bc1be49736e6eda74caa8d8b03a4b469b7563c12757f974ea32671e1c0689e9f0b8bd7c82b130d2d476d87e8595546138077fd420addaae0873080acf76d5b0108eb24584c2075eabaea2b22bc97334c027a2af246c7f32a1f7bd0b538aafa6d9049a69a8c1c187073cd93983b16af837ff70059e7e5f40778ade56fa7d863897a5450eb3fa546548ee9195855a9c152a1ccfbaba91f3dc046b107acbdda3288ec45af7fbdf18dcc7b59a9a9569485ac84c0a903a0f5df33a73e749f4a40fec4f91e2ef4a5ea2de82280e3042fa2545f8c228f3465ae7219eca8e5316ac7feb43dc0695081751e9ed6f88f9bfc5b4ffd6e59a3ed64bda331f7669442528d68ce4c789e1f0c71a7368d7331051c9b3b69a19d2ce67d1926c4b664aef56f43f66b65cf842a45157608f50ceef1282ad27ed818c7e447126058e1bd04708a8df786ce9b7033189cd23e672dd7ed9ce68e6e04f5be15f515c93cf3a5bf7d4276cf9ef8ad26e69cf803feace8e7f0ebeee4730abfc143c58a96b3362a96c6f1139da5c02b3b92e47e7db1ceb51db12792f104744f1594a17e2d6f9eddca63accbdfc258af937bccd3b41ab02c63a477b5155dcd13b67d85457c132ebb74e75bff663d54adea2e60a0e22c5d636e8011ca266caecb72042519bf3d486da63945e55667e95d4b021cb7543b7651637b95ecf72ac37ddcf88abc7601c64262069f7eaeaaadfd9f098ca7d302e5c8dea19aef9b88fe91b891dacd862a4285bb38d3a5a4c3e9c9b05993796da43829c4ca1fee5e445dc9eeef777f8d3577ede8f572cefd31390154a66f69098cc46a5ea3e47dd60c93ee686b4256315520951ee611c5bba38daf90699faf44fd7bd094348f69a6ab9719e1e911f816826af83f6ccc48298995cc31c74e2bdb90144b4a010003ab0ace7edd48a63e2e714e74bad4894d9b194048f77d5ddbc2d7c46dd5f49cfa5e0fa53405348a969c60b99bc6acb637765cd8d3f3001a39e47f673095e4e9a2d18c6de847a8c4d21ebbd9bfad46b4b268d42e5381e62e4b10d60839b7f0ebcc038daf880bfed0f9ba5f1c291279eb09dc3527822eeed334e902bbc00de25177cdfaaee2a8f38fc99650dc9c2f7135be069780ba986a860686f5fca6f0ccdf5dc9ae2297d399a2313aa9cc098f10c56d8eb9749ff3a6099cfaa0f4a875dacec9be99ef1be886dca1603f173d7d5f0ae9ca21efa6a8712cd3d4f94c28bbacf76bda4257fab3d6a8e2aed99c1bab65229d0b2fecc70e70d552c3bb6ab2b6001f9972ffff463970e868a3a8bd60f026f2256971881841cc11090ac7cb2fbd2b5d1f004db857363012ec625fdbaffef6d9478263f5f44b066d1b06359d9f7dc35595486f6614d21eb233a829f070fd424cb4993898a07285d440ca0b16368024132befba916fbe1e5dc5494393ccdad8e26d7badb188151b72c8acb52741f845a1303f435b96183e7941badeab89db594fb02564e1044dd89a675cb93607601ec538bab656b7c0e044dd1070c579b6810e430bfa72c0942cc81b5b568b898dcb5a485607015082a8617b7e632346d71ef4aaa777230041087efa04e3790a9e4a142294db12ba6b2e5daedfe5f62075cbea60bb7831e384995353e73de02628cdf167622cac7095aaae439c30deaf0599a5eea663ffbc162319f17319f7004e2fbe2a0587307b8eacb6477feea92ffd946989e8deed65cd3d97d38342cb5a59f7f2754439963711b7077c46d9b1a24b7fb25093935e43150f8943e6c2f7af495ec8d31da6aa69c58b7b5ddc742848b41293cc13701f367589199040c0f80bb1ae3380578b394c3efd3cd77dac9f11598e55fb37d098a6b80e1a26e9f7513686b82b5299ef7e9ba27ad9f7bdae8543427d55c2259a83d23b26d0d3523b38bfcb2909524bbd377eee913ac97ced157a8d785dab5f6ec5eecbf035aefb71f4a95b75eb0ba35d3180adb3287509d8da8d793e90345b8d2d7f3fc82b9d80eb334c4e126e948e0fa52c074944aa26bae4243888a5e58fd69b442f6895d0453f4cd1b991a8ab40aec79908881fb5971dc233c512f24655804482111d0ff86a497acec8afc0d73adbcb547f60f21e4f107011dba908e65c082f1a455899e405a1a07773fe7a8fb3022c985802138da35a5174533a49ac01e128bdc39101a19642110ddda2e96a448246ba3252236d4345724c26836e6b2348ee5cbb907b56ca7596fc422485f4404a03d1812d15bafb0d85a46b91c9e81846a2b71bb45cbb8e17eade2c0d2f7ad525a73af5aeaa34de583497c31b07980ac865d84989162c075ab2f0d9a28e91da4458bff856d680bdc557da72cc74677bc449ad807618958eecb513b1d9e3bcc1affd1f1eb5036060c492b85d831ddf468367cd4d407a533e749d8254214db96ceea22002e3e57c097ee713bc03214a17525220ff3bc3bae179bd5eb9b42e8ce9673b9f4002232f3de02c3d756920c95ecb78b28177a4aa1a92a17a6434b499423cc3fe84a7c9232f4349e8c1bd1c3d3095f4d79936c1ed88125d7a9e8891dbb18fb39082630fbc839494d0043a5a86230920ec8f262c248103d8978a810ad2dc30d4c226b03f42e64276833791e94de06da2c9048a66acc8a6d509ebf68e1f7cf7e004324592abfaae2daea48c042857502b02de681602a857b000ee420e23a18080c9131a41db35143b93be7ebe9ecd74118f450ee9b4f47320bbad3a0df7757dba75b0349c4ba5c8b5db56b1e602cc63d06cfa56d3187e42f53656e0d2ff8ad1c063f61a9514455868452d25d494809c748e8bd47dbd53228f6a5954714f7b80b2cb30dd82d60afdf6e4f854ce0317d9c85863d9ed29c50484ee0b654324ccfa1dafe4f2227da4900bed35931b00ee92f8975f3e40b23c41535cec85581dae591afe2cdc1058eca598808b197a43b317da3c8abbe1e33497b744393cf74132fbf9da36d0d4fa7185cadc2db0d95e498c5a3ec709ef79c963a91dd79179eadc4a5e4ac3458a70d2102d4d6698fcd2cb4d13b9cdc48a114725137cc3db3740d4929cca6f770f5095930b292a3507941352e75e5f9d239eaa2c89d7dc4bd1d5e709d5ff86d9ae9fed7f4c7f23ee73de55b5c3c23e4fca7a56a0bb76dffe59a8c7b6065b8c8325d3b10ba43f945913a18b957546b0cf34feea2e78e3af4c14c31e22ee21a67bc5023d22ef6fad16a0cba7ffd8258dcc8548b0fa291fb3c0d34ba668a9626c656ad840863a2c85d300f7fcffacb876690a7717d312774bafe87ad75e5a84f12185e408461e95e27d2536f26c200d3b32f6b5179757a099e08a6a381b9b910c45b4875ecb76c6095795b40b6d666b74d5d4891f3abe9301e3bff72b4786099712c90cb6f50ed4b0576f1e60465f563a1f82070985e49b171c2db7276bf7c8719b0a799f0665cc8660fc28b92ed9c9a609b6acf16561b44a735f8c1c6f66850a47b461dd9d7b173160f3324420fcbde540c2b5bce230943446d84fa3b27c52d3d8e8bc999dc441fa77584cbd0145060b0869f93c3bc2e28a7c7da242eab0cf10fad217d2725065647edbcdafdb097aff698c287041f6599eca03492871d3205be79f11c7ee7263f947e6d15e6af304746f2004183af533e9a486473ea019f2a065f878497f76dcc0e60d9cc31b9458242733318c8ef910b0e1d7da0f87125f6568dad58566870ef2f0ad46f8c69adf00db262e2539d245a47fc2ddf98a99514a65fad03e296a8065758e2b131685b7b804b2479c0f1039c559d492fb5a0801de77a1d1142cea081f7193b92ae7d55f0d7ed4451d29c18b495569a5eaf1929f699d7e2809d3ac2c6f17f3461666830bdd27338a4a5e49ba801e9e956cb90af32a0f019137f834c91104cfce795d610e8f3d921441c89c6e1e69771968feab02dd795029059e95078c96343588c14e4c6702127c661cfb39e16ebb3050316a3a3467c5fb4203ab92a6f25df61cd773e5f62827597d107327b0bd144a9f9e172faea6264064726387057e7ce166040e386d2ab6379554abd4abb89754e4eb3661615cf6a1c801e8108b62e7bb923bb557ad3fc6d59bc7b52828a2f453a704f50c2f92733150003b5d795fd4570193b84a7a1a517ccd4ddf81bc9045b11b89f7120491e0e978e515e8479ea0c0cda05cac2a0ff1bc05f720e44e4caa49ef4cc2e9ef31d60447c869baadf62545e07b9ce985480c60118c252f72e2535dd1526e1c13815ec6cb5d2f85397a75441542c39b236de424b847712e0f68e42bd3dc8915ecc978238cf269b18077afc1e36ada5424a1dd2200d8e63e9686427d4777fea2067ceb391d87d497d0e03a8b9c311e346d6aa5f781680ef66a223dcf280d051f063963e007a6b7d70adc38fc359f90d0f52617a72b5a1506d9b3c397ef3655b6ee0733370c908b3a3b43900463f6dfdd03c6796a18f75974e62684f3622294f5adbd99781589310675a21bb8fbbb3455f855f5c15cbda8cb2d40c66b68df48c2682ea6432913db101888b1fa6e562cdd4ba813d0463486b36d917c15e89f80b4442340ea9216c76a0cda64fd072933e50ffa16e8123ca404c71ded8f3b435e9c2c6feb44b39c1ab97d9362a6a19b687a142248c930277191c23a70f9a80dfcf33f188ad53d4b50912d0d54469e1617b6fd7534be48107c1b0fcab9ccacc5360f65049f2bf965ddfa8303a0e01db9b08b231565875393c8fded0069ecc104ba0a1ca5309ac2f44e9c92d3d276e9347296adebac5e06318142d5a75a1cc4eb090fec809ecd7d489b6a31217734e125b51932bd94b1b80b24097dd56be632edcc8f677a203169884c43c9870dac584812aa392b8b076b873e8a4560d347eba65adfe9684fd4efc9b68c01c3a5964b03114c2cb9ecbdc97cf504d6f366f24c6e1a351a317714bcbece872f29fa49966f624c62308a71112b7b1d76d478672b10189b88f3db2fa3bbeabbc32d649bc9795cdba79a8d08a59edeea30c86dff4393b3206038df05f6070af85960300ed7226eb9907003f238ad0be7c70f507698b99a6d45208f11bceb1d01efa5ef550bcb103c39529567a5eff72525d11016ab0eddf8477337888d3c5dddc4015f34f8e7450da44c7ed40f0c5d2180c2015b7930cc8012732d4544c3e96318df33d963538fce21c25ac9a5f3c265d4c57eef836bd37fb9f6c39fdbae27b9d680a8ab769974cdd93a543b2cca681259a78af8327753f755c2d5338a7ee68382097db166f9cdc5672fa2f9365b002d9b4701b3b97b8b821631d4b61f6536ee63d50e9e5ab7530787acb6c9cd4950a5ce8e4c0fbe1d13f0cfc01b0a8f0240041835e0d7c69e3a24cc264f6f64968dd646d84f13368987969fd2bfd71eb3be9c64224687308dee6db5c46a1972faf7f888457619c6dd90549a6c2a759f9666afe3c9f8d4b58cf6af12d2db4882ce43e71f51d2e35b5ef11d37752fbf0fe2ebd8fc7b167ff319dc21c0d32b07981b036b78abebd48f7eb8a6be10d70ebbd678b3a5f760594ed6fa11ab6f3b2a5f6e12368e2be8ef7a78bb6379673fdb3bf6bdf88ff88d62ac88a898eaa6f183ffaeb19a795a5705055bd00dcd8411256e6124a18d19927e8b1331f0ebb77e90ed75815c4ac581967a47fdaa4ee8480398f2f62b358a392fb4648ae425a98f2221f45d1aed10be650240ac7abd2bb4ceafd06f2c0677ec780ce0b43b3d5f33fd00f617a57cd9152f0a6955ac7af95440ce2902cb3f49cd61863c5894dbf5d24eb19bbbadbb5b462f028e8fbe942447bdcb29f718d2ee52c289b4a2a5fc49c1eaa3d7c71cfb80b20027ccf49ae776bdec99315e9fa6d8bdf65722c1274d5fe1cd9493930fb34baf82be88f70309c747654eaa30c8fc30d965cf3dc36140ea9873712f48821ed0439c16dae84b79d1ad69723e2a22a33c5b1eb86ab0d6fdd113799f06eac2694978b7c0e35c6dc90b8d1f3fba25ec431197a85b8d8932870d50bbb3471aafc53ced16faf293fca8ec7a92b8123c8b63977939f06a9883d290d088e5aa9c83cfa002c6c8084df993149b078ca56e36e5d99363a91a8941668088f5c290f8fbe1037a3c9521b7affe0f58fff7f1da49d60621463030dd5d6ddecacd21736973a396bc481a4e648be60d3ba3ca2d73fec84240ef39385a9315e2998c3a99b3db2466e179af500639c97120654be9b031260619354a61be7417d4719a0835d0dee3b6c96d80c2430b21acc55cc4444a993fb8bc0130835e56c932d02df199bdb33c2ed0d2f6ec56b54e9ea4a0ce4a632e02c4ed34e51f2543f42c6ee5f074fe9d9eac20aadb80ef3e005c4831f8b3c9b948f939c63aceb2814b78c730e560b9843f345f0e2dec2fc1699055d9a26fb21cdcd73c8fab0f0e4e327d8774a06def6aef429b21d6a2713d0725e24ae985eceb5c09159d6c29ee32ef91388695aca13d34f547f62bcdeea040999ede5450e9ee3fdbf50d7a649706aa47988f03be72055f4c3d61f2891204dafbb1ced144a5c2f0419b70f0c53b995c4b56a1a49412855b482d2c2e7752cc855977b68d1d7415a072bd475f06318a58a0b9acff002996d05b5e1b57af032f0b8a3fd518d528305aab22757123979ae03fd4177f333a55776ff960a31855cfab7337489cff277537fc7367b4de8f2358c8474ab0cdc08ff09662fd470c24da4c78057ca01f0bf2a7fd02a439e75f1fb9cb8efa05e83fd654ac082ce3ab9055a88d189638726a28fbf60d720e4ad9c67f03b5206887ecf2bc1423d7679a0bbcb86c4385e16050738c3ca5a61e0cf414613d8d1e40dd307b76f13b6f6663774ea6a739958250266c43eabe7047d07bf3453cf05bde8c7299dc4c9ba22216ef9cc928ebc8dec1bf417418015847d92a90d463954fcb5fc02794b57755127a2e4ab4481b7646efdb13be197a7eb8fb91383cb63c15a532a52ecf468efabc438a7b9d56064ec7ea0d5fcbbb8248681aecc751118b37f166812e457d5a833e7b3f9dfc74bdd70c28425917193d501ca067380a5c282b714c65c5bbdd74ab5f5d233dad025d6cee087c557c9667c40b1c1a613d707d582235caa173a3841b18d8285bc9b61f7b28c5fd47b582233080a82c2c467c9bd90bc87a406f3d74d8f8f861555211808df089a0ef74b28fc87d232ce7f95acedb14f03d9eabc21009e3e86f5e5dbaa45154818359d44e29aef7e74585f987f55aa06dd1c31631c926d88854baa94abfe7b59542fa78318385ec1b6136090d557dd7d79fd8797affde2c3f88a67479f28b8716e8135ff6da34b91384afab406a453f1ae4d7a64d38f958b932798c3896c9402784dd5a1818be67c018d39649ae8859e8786acf8be2f048747ad9fc738453da9f0459fe24b5b3c1b141644a06d9d8a206773aacb87e71b9ec782688ab5e0e51f34e72413f7dff3222c82e07dc767d619d6e2627a16413d63c5c35cddff4407e7a922a5f19962104b6aa53d812e3cd51786f18cd32bea15db3764c322bcbe43362c802918f7fea3d3bcf26a7cb289e191b443cf10c5a0871a07c0352b79e3970b2eb52c0946d61aeb00d2e69fb24545b090b80aa047cd236c4534b6690a5f5a294596317fc9f1c6e0648e9dea1fdd0f84bececfd0c2a90ccf1d686a508db83a7e1d89e914f12c27d33569ffe878f2bada6a965fa76e772664cbcdb4127207d3c03659ba06e303f2d8945ce440522be77f2d90ed1f9f683cb390de55f6dabd9e650aee92b04fa0f2d76e79414974bf3e8e056a7f0089504b2d6455ea57c543c460f7f3bc542b99de576508a0ebdcfce896b9d550aa820036b2db1cb1df21d73aa96a88541a2619c3bb56a85e3c4ba70b1a62775144a9afc5e5503b33a422eb3784163ff0bedc6922955e1b336f53c4172b8100dfe8145a0c36b9d6135a568084da7393df618a9cb5d3dfdd1cafaceabc382e3a97e7adc48aff791cd205b379cb55317774f7e90837898132fed635267e95e99b72fab5a724ee3784c381b99c4769ec369fe5558f400566b6d463e31acab4be6308af32751d83fa886744e10938d126b1c18ad1792652259c32a5d59aee0477dcae1701daa21aa3def631a361325c6407f5e2005b6d19bab20c43561a1d1aa67127d0119178a781e9031f52ed4251aea0b6f0a8b6ea1cb302b0122dc238c4610c5bbfd436ac812d337a5ef57879c408dcc3ddc6c2eb49ce1ad03d722d4e61812afe7880da068f0845de8765677e16772b05d1c9b037ad542a99b73a5df7dd9abda5d84559a38c4e5ba11e647e0f22971a8e8f5baa31d5d68a896a144a02a6701550912d48617432822f8fc4aaa3ef1fbffffde984e52af4036acc7078befa9e3bce8cc420afdce74e8a5af6e14a51e3f83a9bfceca5eafd88a41f2b7a5038a2ed9d920ebaab0167695fb926c61a69bb94b31128f77e13768b030caf1a663870f7711e6c768b9ff2d1573fde40978cd9c132902e01cf98dd35c3cc3ceef663bd6798ca68108d224476d9d6f8de750a18281c22b582ac608555a81b71c611402a97c1719013b8d30b7e037e77f2a57634e2f8752e64e8318a6d9ee9b930dcdf9c8fcf56fb766afdbd89f94536e2e29644594c17f0dc809c0aec4300c3844dbc18637075b5e108e71d7746e4b68cbb1b3ca6f56142ce078fe65ddd2ebabbac967d6a4dc423b5de2d467bbf7af3c371c3d7090fe2c5506e03c9d627132b8ef11c8eab2e23f3fadf223e070c18a8613b96aafcb6e7a09c603cd1ef4634de21ae619104d98f51976e06b81e0798e2003457aa54ecb8f7eb748bfe5929f7101e4d7d012f755c0fea091ca683d3def2322c1cd66cbaf220538c6ba09bbf55b74e434314e0dd36ed725d9241104b43d68173cba8931c81b212fe39841f875d269e78ce9e1fa552c3af2ac6fe00e4943a7c36abed592749771fc7b65dcd8944c70e73fd9b84ffdee7fbe6451dafbcd2a93c16b7fbb820e881a4fd689e366816311096af603cd261b9a84dcf56cb39052c7ef890340f4a89048378df5720217b8cd1209372bd55f4b8dd89675674c57581b4714d1b09c333d156a7d32f45177b6ff4831fbaaf7b5ea40bc994873b891ebc6a8cefe916c9c333ad050e929b950a9912dee46256def39960378fa1226ae15238c1345b1ec4c1177466260d19897749f8019a50f0582d42488b09d117535c558c09802120a60d224030b0a56ee2cd517a659de23c64cffd064825455125fcb94eda799c6fa49cfa13fa71d8864bfb48a86e7efe0431db3b678b8f53585ad3d3dec57f4133235941bb73c07a65a8ee8f3fb6f91c3e762d1cfdf28d859f148f6c42eae782076171a35400bf9cc257413edd34114f9806daeb5e16ce170b0191713286ba65b65312b5a9d9090edc0774d7945000e0a5eaa029077b8227d14a9e83657efb253f4e8f8e4f7de5f4d223b91faf9e9a872b21b1af8548a556bdee874406f787e3303f7af9c44b7fe98974227dae2a0f70e7dc42dab6f43ab711dbe673b69d87b6d824f938b7cfe1f158cb8fc02c5fda6688055490b8757bb462c12ba8a7ba23055a3a5876c66b397e2e2e3a6f3fcc85bb8cb0fd15946a88c07dc88b29dc4421dbf0c1a2eef7c69848d17af43c6f14c69be58dcb86031091d77f278cc72d4f4beace166336836ed6587e1258cf627f006044e932ce74ba3234e384e1379be4c010d9a608758b704522a1753bee42025299c257084f323d85857c311ab2758a1ea9904049b61c66a9ea8671cfafb78cb16acfdf0e1e4b07173515e99f9516cbe974387ab93aef9a044ed24ad7037d1ed096477ba9438a87eaf30696a65dda5a7e14ec2e9b15e2ae9b5e630ff0d13f80c415f054383af8090c9f94997e8033a98100d0903d4d75b02e939e9e691bdddbea038577a77d2bd761d98611e7d43a44ac0944b8de31f1058b22fec5f388a199553e12982c33a1cff9eb58c2c290cfda64f5d310f05b031a416b63d343787509c7f1dea91e19b1fae114e88bbf691bf0323f9374cbf45025f917a7464de3aa7280987f1593ac7aa4360b784080ea0ab24e3b5f5dd96a830c97e25aaa882a520b4d60c4145f0ac69a22c8c7a84bab2006d1f375a5fbe93ac7d489371bdc1f3aecbafa0b15aff8a531112148a608c6bfd7b837b07833ed7a32568a5ea4d6a412aa0bf488242740d483594d5831df6e66f317e2c6d3a5abaebfbd9e506a5b732e098a515311e6fbc785af7f7538c934534d2ef8bb3411615cd5854becdc13004b77d9b2fb88d919f6196e9a535ed180fc20bdfe727d90b74e28c7d152ebaf5a2eba31b7ed0da2de4f570cfbf8fb8378ee83c35014242fe3252eccb22b6c59a0aa09ca81b00ffbd2c022b9f2ab76a01ca8d650c34e6296fa70cd9ac0cda54158861798ea5f7d991237b6522e7ac775c95b5bc76992fcac8b234d3786feb245666d58c89668aca25a36014ef9004864ff268030432f77e77ff8060bd37ed98283ca2d566e0376b66134ee5ea797fc37e9eaca105643db7cda9f5a46cbf21e28d451274541983c4bf77e78f129a7db364c6ad2f6135b4f46601c3469837f989234671fe93793390120125dcbe27c31cdd06f61b6f8a953fdac325763dbcddc7d9ba2f1ebf3ccba3d1bdb70b5b66e949ab9040015bbc9023b639937774093b14d956272a7d6dcb1fab46871d03c49461cd81be5d50e397fbc21d1c11bfbe2db602dc27fb395bd14b3bde40613559638fcf88bc07c477ba4201315df13179f6cfe78b07cd7eb8994e95ee795fc9aaf7261dc548f74bc80e6d4c58b84a4e13b8fb5c9592b5f8ab794bb3fde6c25ef52f5f8d3b9ea7d8ccea54b9c946d219b7e658a548f9f4c7875ad1832641d5aaae4dade0f70b52303fb015c317398b8a909c324c0b5152fd99d96532ca1e92a0fe4980e33f8f0003c084e607fd3f75c48d030a30548636ebcbdafdac941e66b3f5bf499d5aaef9817ad06b4aa6ef6618a6fedb9134b9161a7e053af378a8e7629a2821cf679aadf24f95f0f22fc703c983e543b3bb081b2c4e9cc4928a2b3ba7a97bbf0a35212ed0c4797147b32987664ae024077a1f579ae4acde47a2cc73c56b4e8d379198e3c4c3a331230108eae8b29df7071eabecc39720e12812581bce5ede459ec19b9a85fe0c200db0a8acee1a084f5771e559fae9ae4615eca614ee184ec0d7372f11c9336bc1de6d1a2f4f18877021ff2c44a597adddf1d9899ce62e23238cbcebb2a3be6fcc158a534a10f5253531df1d44b47a665b30858f6e3fd5def4e957ed6170f80d73ae2c41add61e7a336b60c8b46dd95380d8181fad523743fb23656249e5cea9a9d36fcc048fefa554433ffbef20909da573e046190a6e1d6e774fb89bc15fcb2f3707b6f1399ca7c5a53650225c4b8f87b047a0cb08a8f4670b7faa1bd7c0299a112331f19ff97d5373cfff00a54303f723e3a10e3a34dd34199067817f0cdc88cf556ebcfe38673baac858d58fe7fdc2939d7a39c3588cca455f8096d9027c0b1c344133cc1ac96768ad1bb8f228e7b21381039d34a00e0c78fb44963cfef528bade198ee081f9a61841e800a92c3d73f6fa37b813bdd5082bf98711e198fdef59bcacb0d2ed5d51722673081108c8c22de1169571fa4339db1b5501fb0ba025b7b5a20ab9df789e26810571f7f783e29572900a6fd849884ee182d2ee5e535d6846dd157d4a3b71f033d5389ecb231cf7837e43f023fab91cca2eb3e5823d361ae10e5b8351b1bbc836d9202e8125935919fbf0252ebe698253557a89e9c97d7aed01a2472accb31accb4c62fbb48205386e406687d90e2e3516cfb3d443d291134685985d5861c16d491519b1ab1d9921ecb625033d3ff85ecb5dbfa30939c5aa99969a635b677d277818681ff7aa8be51c5604bfb721b20877e1a33ecb57c96a8f9152e3802ac30651a85cf7e45a3710b2a6a221d2419490199ed6c23686099b3433d81eaa08330a614b6d0a69d4c5991b49c4e6da99bcc06d66f26573e523f3142a392975f8c5e52185c531e8e7b34d3b290dfb2d9f7ff3f6a3f0eb03e47bbcd4c4d2b2df540089fb46282a297495a49ec2f12e24499f509e635539f832a83f8f4d8432938306542310a2819d3b7424c92258171e1146ae00411aa1b1b615c26b6a1575a42a2f749bbf4cb79c538cb6576a68137dba7f9238084e0e866d57064ee608915082b7f5792a0da4adb83faa8ef3bbfa44a64830d1bb201e398e82de3330ca0db3c4a95160dd397a5f02cad184053ac46917128a63683f453b546c9b9037100cf5bdae07bfb9075ce689675c4b34489049f9e9bcd539b4db76bcaec135cab77ba3a87daa0b492367e274d943d31186cc91eed6a63c1c8cc2f643b6ad26c02df9a1509e377afb85ba6b1395ca50b753a2ba2ae44322a60819347aa334a6a4c56bd6e401433e568eaa6c195b83a8de64eee9d58c3783d54accf3a994333e3d4235dddc984b92412d08fffdae74b6809c24dd8bacb4546091bbf6f91e5f96b43b2ba893868a6fcd30b5c72be5ff296a2106dfbcf08c95724d58f4d1ba97d2483015ed92993e15200e217bb5096ac0b6232f41c4de8ca9ea2cf056ef49deb503042bee1b6f88b253822d748bb1abdafb47bb2a6ba358907844335ccdc42b67a38a1a21e65a9f7939b88b2fbbbe69dc12659fa6fd4fe0a361c3aae5fac08caa3fbb77801b7b2e56c5140289a2e99698a79ee86d5587dbd51bce6ea0127feac48b2cdec584510560f765aebdd1607c70055134c04f9d4fe64db22a3a6c73d0e5530b9539312baa938d4754019fa7da83ade8205d744490bb849577b991654e5bb3a14facf483d2b4a118b1c22022b9f4102a3b3fc93eec8db29e529e3f1940c2203ad409791c2d1b36584b83435fac2ab9d4b96a3fde90569b6f3cd91a19d69c3c5681b1c7f7083981634a94dd099c8df8668031b62a8d63d2e2cd29797805a917d142924b13cd14b5fb7cb464943c5bb264385f3a6eba9503364bcffdd601bd8eb36ccb1db9d929f24e1a4125e7d5a64e7daaf46e5ece112815881901afbfa8bdd0fe8b8e40006ba3b36b0f9434664a8ca8e66d5942e54ecad8c09e801748313b999052e0bfd897bca8aefa667c7dc4c6c343b7f2a5a5a270a61cd815f5527ce98e16007fba8dd7fa6445466d5364134d9723192b19be1ceb19a8e0a1207ab1666b5fd0c681a303fd133dbfc00cf58dbd7edd51cbdfeb43d35c5ae06dfce70819c8195edc2baa200023387c3242ff892372324b64028a6d870db8adf9b6ff838e7ad3c93aa78dcd25a0c2810304a19f225fdd26ff60eb5b4820a148f454f5655b9653442837f717cdbbef72b803b2c956c2706a11b237534909a29d8af3ac2732ca61259cc995ca8a50ba232541cd7993cec647c4c5e021436cedfb33599cbc098d74a8fc72643635f0cdf5106e287c67010367a115471881ed066aff9e33766b2dc150e8fe53b16bf28664eb3e7be5b382e6c6655556f862e64d77d17986715daa82f3f2a394db1f236e2ea54e33f600774ac8561876ddda9785a9499023a8e6b09c9a3504e8ab53c3543c0531583c5bae8609f6b69bcc289151585228d4a659ea9029f99b4917489b4bbeadbcdfeb88e7a02c97fd322673fec74b3fabec75963c4e95951da756669f67a49ff739406dfbbf93f88d50bdbb64b9d3903b431cb13a02651a582ebe472548672998601bed8e37c993437e07eaf29458460096c07f61501e78790fcd768ec10f77079cca5f9b09bd85cb34a2780df365673c75d6c9247f989845c82d925bab473329608dfb6a353a8f43c1ed0f32fb868c87230ca02ed08c45c738a19b51efb9e972e2b90ee2cf4037432b5da49d0a9f5d208799ca5ccb2760dea597b731299a3dbe515543dceea7b03a7f0e400521bb8e2797e612f7111f66f95066de62cc10474732a81f149406981d251e333bcb0fe41acc7ca08fcab2d3278c6e54ec3e619fd1b924b39e5dc3fdb5fe7b4b55b4aca4ff2020372c47e4c564641bd8c38e40a0018c5f4b76a337e243f6507afc874089ed910722368e0f308f7e61c23cd4e66ceeb0ff4d44b597ea937e7d6941fa8857b81589c5e3fcd460ce4fbd22824de0d9b8db55a04673368a17df8801f8ea0637bcb65224431e5c39171285b646614652438c1a57840b210cdeef7bf518b5ea6457592219c9604c0a8dea79b942d2bc68816dbcf2b1693290938853d8d16e76fed027856d042d2d0d74b72f2365aaca23bd435d96905119a36d39df407ea4c7daf735394abf6a51ba01a60b596e71bbfea0b6604ee1318981b9ed1a24d661f11957182634c7810b3e7f18883c0c4ce1c33c39700088f8f5886af37d4b4c70b6beb4bdca39c3dccf9b46a6054c6a7d46c8d4f5e1364dcde1d7e067f1f87dc0c8da943c9a8612d5440f17b70b3ca32a72ab7e6c6838ed5fcdcc2e813115d2dc312fb1af9ee20c4260a425c31f39a43f4a18380b2a6404b21433e22ba6f1037e18cd0395a05400ca46ee6f45580c4f05a83bb2eabaf1c901f4fc755f9c8517ab02c3beb1c20285d248b674e4e24f8bfc9f185508af9079a93e8a3cba683dc3f22e729fd14bd7bc2bd14b46dcde0fb1105a79108547e31006451d9e27a30fe22c59574e25ac413df7df16f19ec2b2a17533ec5cc259b3dbb7e5c42ecfa167d5ce67f73d5b4bc2159bdc9bb4135287745c5d9c22893fe5888564865daef0f4ec9e72bf3d5ef4c08e951c16dacbe1ef4037eec16d2c361edb8cf2ad8aa8b820edd1dcfc4dd77a1f8e577a76c58027637af941190c55e0f5b50f541302ec61aff174e610af388c2e81c4afc7f5b2a4b5daa15c1b501d9cb3d101aac64c1bb32d451c490f13b300ef763aed4a1d0e832dc1fc253616df27812e798a38c51d2e67be7ca181541c7ef8913c5df2700a88fc45081e7ae3dba4beb759f233584d0a1304b4bf863e8d9435fe98ccb0a78706c312b0158daae7ab0b9a5ba5b4f36e0a8fc0fd2e8abe629c71a63b509b699a3acd74b0544f2edfd812bd6aea193974e7fe1529b79685aabbfb49ea4fe10d997d03ef71dd7e793029e47dfb5ad9cee85d2b4b6d0435e88f7266de12c6b5112836ae42f3ad74878ab2ce2019847f4b3cf4b166109f173814b03c56094c11abe9f991b0aa1d4ca50f59a6e656a39ebd64e947a4de70a4101e683a40906f3866e89d4693d3b274387496edc3945ae5f1fa7fe3eb4de960fd3bb18bf95f375a6b95ec6e09fd8d02a316f50ecfd5e33b418389a5f84a258e53085c6db4fcdc85c29a0d2770b9e0e48c99289596fa274dfb9de9bafb70edbc783622b1e71cec6f6504da9df24982daf2fe59d58f93ee96762aafac4eec32aa3d5ab55e41d71fb174ae500bae7c9619c450e02562551a658591fef223d840b37681f5fee348a92221c55a0038f18605cb7227ac7b52e647f74756e27e31339504b1270d40e4b0bb76a2d415c92e069ed46005ffa2a3e66192a8a9cb6fca66630b4554a00aa3f5681374b70f410658663ceb4717dce0e4e533880cb3f97d75025ffc9e885821ce85082246e93d02f480281286a0580fbeaf131a8521f64b2fb76bbbeb3f1fcb41d5765e5b8baa199e05136a4f8844c297e8e8f80adb1102e87228c6ea0f18207e28868963edb751478ec99daaee9c3252a4eae4c57d4b88667da1caa2a41dfe4c287e39159043e69968a381dc80229362b65c80f2d4061fbe903b383ccd64c5580d0ff3b4090c05d05d9aae410f162a0740406135402de8847acfba5df6336b9af8c6c8be66fa2ca53e0f0a829f707269625824b5998f003566514c899c94458f07eebd611551121a95c5f35ba73f63cef09acd67a0dad83f444a45653f4e5bbf7811318b72e7d16b173c5b5793739f9049e7ac154149bb48438b737a58eee6bf897b3c615861391c0961819f526c4a7f56af3c1f1e781d28c06f889179ed79249f35409bf38f0aef16a831c300b7ff1f270df090e5a6c3778d6a9653bf2094a45f00e12a93720ac526172dbbd854706856be8c2ba3404128bf4d126c7abf05eb7236ed528a00c3d5b1b3da67bc656753f5375eb54887a0580f05f4f186ff2549351459b83a3acb870b8813845524690ecdff975bd540e220ef277a1096bcf4f12730eca16bbde08945aedc6cdabff598982f51ee7dd985860e555ae6781e7096e1e59449d04f2cdbec66c26e23280f4f267d432959a343431fcd9948da10b88c29237c2328c7e7f034af7ca6489adf78e96bc0392ffc4040a41000c64f2f8d40f726633eecee62fd880f501d4d3fd756059c09d50b71d54d665a1611a49e328e5c98d517f75d614cfdbc819bf83fddbdcc54b62bfbf389e8f54c8f9bbb65c466b3dc3aab475e8ec0c017c753140cc62e169615d7c4f6568efe897be69431ca178534ada01f740b7eb7a58891dfd6c8f648e063f0cb003bcca75e76486954b35402f02f9f32f148de4e04a7ffa567588aa83ecd19cf2b1425def0d5573dc8c24e1ceb6b865f18076bcafe6f5259dd474b0af3aa734da0aa6927ce2f1ff5560fd20d356d7faa0d0c0c0620e62d6bf18463c0fe425c6b4066efebb81d36b71833eba3d39a5b67e16f60184bba5dd0c4d4e15cb1d34bf71f7e199dbbb84520528d0fd8965bc57afbc97e9c557edd3ea3509c44f0055a7b382a09ae7d27eeaae39d29aea21b0718a64f8feb89c433b81d7638841a2173c5cf0f503e287002ea120ebf9c7bd874d61294527bfd8b575f9c8bfd8bd9bb1f243f6b2a34dbc948b4d981cfd6f5c8a27e3163d3bfdf12253d96914904bfbe4ade40c7a71a9f088ee40083ee95e05df784e17a4caeb554480bf6ea43562484fc0be0e0788fdfd1dd4a3e910aa94b6efee4c4a6e62b5c249fec3ca12c75002f2c2089956c44453083cb07f34625751d0ab32262669c103421459ac341e887c720c9cafd7a1fa02218582b4c376f89d36de69739a6a880e8e31544e7e7899d873d60c501c53b38ad04581ce95fafeba4e29590140fbbfe538b775097e496ba3d8aba428b49cf1a30a59223688d02581cd70bf0f6d60c2a37e4368e983cd691ada9a831059bc8f392a05bfa3efa7fdca625c66af0f0ab40223d60767fba29327cd7e5cc1fe59f8102671bf06b8b0ba1381685cf9400058d84c8619931b661427068f30bf6bad5696ec894cdf8039b6b2a5ad13b9729f4d95aafbf9196a9cb3f49e1f9a2892befd82ee01b50c7a775460ab75ecefd8ea3d258496f36c314ec72a04ef6449dd733313cf130d8e164a42a6b21180795419196633e9616cb4ee528fc415231487bcc59b757c455a6e52f028691c4621f8d978039c311a963ab48dc3c96263d3b3b15d566c3ed8b4f82f90d609a2771d0d8466a3952131404e141f06a43a40c39046e16d1826d1b753b4cd95886d1751a5ca5d81d1069835b65265e0ce113fef148427d230638e7c54f2ae50d98c337cc553d0ef23e5742a580a4206a73d8be536a4d6027b75bb67be0d3266386187849cff586b30fcf35d092e1ae2b31b8756b8ac49d2d8f21bffd809c571b2b4467fb81c8bf657749fce6c3e16bda46241ab34e10b4b300dc7993dcb9056f3f4520bacc96b0a76120cf20f13b113428e8b167a4dbacaf47c0fab05252af60b6060d3bb019f39a3fbeadee651074704fc7b62e1e8b19d2b1362eeb88a78c0e68d775b4afb0da392473da188bae910bbc24f3e638e84d9b72d4e850632af15aa808fdc60bdd090d047363a5b379dbb7993bc0f9ac2b171810d14850ae8623d738cb16a1791e79cdafdd1b575fe9cb108b716c2dcfe0862d8d773ab986bc4a2e3e2632465e808cbedc2d91b498a8a5c17509e8930920dea06efa0d5956c601f3e7a344603c6b256fcd44668f83400621bb19b0bd0aaa534b6efc0867c9f9de89c8098da352686f9f72b29f70abd2b4e9da41fe6a6c53d36ba1e8157642644f232b64ad7d5189a2768177ff972cc89abbd192c8063adf65a5f0552db94811e8901b83555c651ff640808c310d0ad7bcc97e0330025ab162b3df5d274075b446cbc4e1b35d8015b75234ffb0c68b32b32efbbbefafed3f483a0d15c936a0f871b9eeed195b3b45be33afc591d3597119c811cde0acc49f5de5c60db82609881eeb65695ee0871eca1b83149b3a5ba84016488bda916b3e72c3caa49616c78347a7f584ca5bb64feaf33c06771dab2073baff64bf9042b3654be25e5be4c1b3bb2455358c89255e4c396e010b2d43231d6887b5531e5c36b8e5732ca2b7e4ead4d078b9573b6d9e970ec48ce9db78527932b37a2ad6ef616f34eca3d42140efa99e7b934e84d00b42958b79b7f0444283f2b9e289117fc16b47fb26885246b755a79781bf0d513ecf51a21f6304a22376b9d2757fa40129f88369b2df66dcc75305b692e284b4421f7ed9b71fb2895d8d8de046c60017d27c61fe9257a17f979460015c12ba65ca50bf71b55b32a50660f6e07f5bb853d8dcb04e3c318d1bf9fc1b5c8fbb89151e9c4a99c01f4df23c84ad38e915d47a977ff451fec9664a28fa28714aeef5f23a2c69733b8644f3258107dbccb985f4c32a4f48317e828701a0c21562fb7af421b4ceb6df0930d642c280bfb7d2f09e1b6a2e8693160ee4ef956ee075a98405b0ec55f230f69d2a4b75a8f554d0c33e3b088856d42d03df252dbd7c0dc8db1d57aba6a16db6e3baf0ae852a82ef24fc162a56b0d9f0fa3a290b10f5f7c5ba5625df3b1b7d408d9a7f88fcaad5609812d2f43631186401050f678965fb4a25fee297de16dc03adc0d61f43ce10e68a88888f31004c5c9e701b0202d5e9f6972660f3c20b8384283bf1ebfff04325b63a2da56d3357d6b4aba7b1414f65ccc2630edbb53910db391998b899ec87deb34c4fb5a3def00c4fa6cf89036a227c7b8b490ec1cd20312b7a0c4149fd1040223c2096af1e600ffd22532cf7b7f40a2ca403bb918f0ca36e40a11adf5b48ce717aa0e103ff10f5e9a2f5cd94c0bead64a7e522a1e0f975e279accd19697bb368c4fd6acea8734e4f32a13bc067b4975d662e8753cec3585c2bb9e3589ea07dc8e8b35e8810b7bc326172d724f247f67fa94c2d18c323a9b8f7770862eaa0fff2e203edb4b9682f21d9702623bc3b190e8bc270ea5aeb3975d7b2ffe1b424def4fdf58082628e1a475f2241040fa115a19634b465979548255a75b3efa033054df2b259a4f36dbf21edbe165303beb1d2b98a2289b30286dc06c0b6a1f59ffbf508e84dd281891bdd43daf8f010199ef7373fd98459d02f3bfd04ec3862be81cee04b30e3851a5b959fbd14a5f438de0030c67dd53f5b94fa20e35d5c3acb33ea45c3bdf896ee947977d60e9237bb80487c2be51d2d90d7fc9a50af3f8cfbc60c0d52ffa7661ca66655dd3e2d0b88e5db51dfe666c8f84e31886aaf88288b0f94cbdbc5ae396dde2cf9df97fe1f5e591f6694a4a6f255afdd157cdec7e296f69582f4a12aa438e9b6a591484af882f8cb8ac9aadf27852594ed5972356e836fa0e8e89051878db8b2732e3581d84ac126b1c2594a86a08871a93b2956c98541ed081c85073c649e9f7b019a432caad0c2b28f95ddf7cca1ac7941c3f67da53c5793d368b6d5296ed2732098238d5049992069a68da09d100991069c6bbf08f57af4c9955106268d535ad105cd462c49e1c5e567636b63f2c555ebbbe0e99d5401f56ea3dd0c87b8a0075e94bf9e2761d20b4a5a431ad40649e99926a64bdf04e75b61ec316552e7b945f2b470d79e025071e1d2b5e0e500b97b1ad419d8938356048b34efe09d987377fe836559c3a0e8b80e368b9b69f73b5409483a7fa65f91888f30ba86d901dbde40b762210a5e3fcaf1fc82facb7779a33b1c4f0f07801037c40aa8e09fd824fdc7ba1e57bd0693cc73ba044b82525ba42c9681f22542b981189ced030501150deaa3d04b75db44afa25ac581767bd8b4504d75b8ae5b47b232e54cf1c60d07449072cf60df64a0923362a4001618a58217882939e0faf9ce4caff532dec539e465c65016fc5212c0b2e93dabe463c4efa1a6e5648d366864c2aa527d24bad02809b09e0ea2e178e71150d3b08e86e1a6150254e9f65db6fe2178e2a6235fad7ec097d01a079ecf47ec8e976fbe4fc4db0fc5288e69b5411df7435d4ca11d5812cc345f3a2d31d8f5b54f6a31fcfc1a7b5a2fe4e9e4a8b15bb7e3422c98ab2d1a9b5f287455faf227919eda1195ce02373b2f70af3d9bf789a588f666ae0ce8f244a54a49632377dde741796677a51c8414b164f785d22a7ef642c5470523de915fa445385a6fa86f492c7611b170f3da112678ae4d5ccb4225f640bbf1de95d2221dc2030a26cddfe874581c61ea66274a08f6440ae547e1bb5bb2fcff438e0698e6f45098c9a124b398414173cfc908d84ebd3160aca2b0c8571fbf9f876a8d6eaa95e716a368b8471ebb8a7d76ed39faf7c31a185d978ffaab1313afdf59e1e2be2aeb21fee1fc4914c334514a383da4f567ff1a68bad688850e82a8f5b32ff6f659d1f4bd1f5374b602ea76ce768219dc6e8a3120b3888257af4e3889f36368b1b4e4eda8edab680f9577ff1dcb2283d10f4dd4279ed8aaea4e962e7bb78614d14943621336049b01152f71a2231e4eb4750403fdebcb248e5eb48d07abf2b40f24cb9575b1937a7321b657ba4ecdea19c5aef8220b95528b963273e9cb3437305478f73ddc7ad9be410fa452a10043cbb84b3f1d13ef140b1819edeaf92a2b782146a6947b5c71095e14b1d2fddefa47681d65a16cfec220a2578166203c2f770e9ed5c0eda868fa1d01e36bf1f11707711762b5aaf816d81cc205ee8659801f2937d1a449c8c53cf9c156308ae6784bb60dae57c4b2adce1d5c6eb55cbf8567").unwrap(), "sig not correct"); assert_eq!( pk.into_bytes(), *hex::decode("3f537f509949e758624a70946a776986052a5761098a9b4ecbfaa10a92aee325").unwrap(), "pk not correct" ); }