diff --git a/cmd/gouroboros/chainsync.go b/cmd/gouroboros/chainsync.go index 797ef3e7..42873e99 100644 --- a/cmd/gouroboros/chainsync.go +++ b/cmd/gouroboros/chainsync.go @@ -103,7 +103,7 @@ var eraIntersect = map[string]map[string][]any{ 72316796, "c58a24ba8203e7629422a24d9dc68ce2ed495420bf40d9dab124373655161a20", }, - // Last block of epoch 306 (Babbage era) + // Last block of epoch 506 (Babbage era) "conway": []any{ 133660799, "e757d57eb8dc9500a61c60a39fadb63d9be6973ba96ae337fd24453d4d15c343", diff --git a/ledger/babbage/block_test.go b/ledger/babbage/block_test.go index 9214c82e..b6b972a6 100644 --- a/ledger/babbage/block_test.go +++ b/ledger/babbage/block_test.go @@ -1,7 +1,79 @@ package babbage_test -// https://cexplorer.io/block/def34305d66400160e408c9842181e96ca9d1167cd35d8f98bbc3828cb513fb1 +import ( + "bytes" + "encoding/hex" + "testing" + + "github.com/blinklabs-io/gouroboros/ledger/babbage" +) + +// https://cexplorer.io/block/db19fcfaba30607e363113b0a13616e6a9da5aa48b86ec2c033786f0a2e13f7d // -//slot:47260741 -//hash:def34305d66400160e408c9842181e96ca9d1167cd35d8f98bbc3828cb513fb1 -var babbageBlockHex = "85828f1a0064a05a1a02d124455820f5039a11fbec6add444c94e61620cd720c5f097e07f05444604cac5d5c7680425820e9de60013d48279d97a08874664ea5cfb858ea6df3076b650c6c58759ecb803b58206216d3bb98e512daa6e37efff747d8a1c8cbdc1236262678c1f721406454375b8258401c91eda7453b32ef5d997287f46238d6a20f971981c8bee0a8d285ab454ebbf7546071cea3236fa1ea9ee2b378cd208dadc16e3f93297815f8e90da615943a1b5850f4e219da4771d9a7136c279142de356d3c13a591affca8fd18405ef2e5b9b73c6e1ae7c6b6dcf08e3592013ab07a61c5bb4821c43d823384d3dd5e89338e6d15e4e9b2fce2fd3a507b54d6d92dc4a50a82584000064a07b9de212fd99d1a0fa352586dea26939935569c2fc0baecabc35accef53f6ff649723453f42c74b37b42a0342566780ef01dd136fe476f5cc24dd9dcf58500969ff80ff669f83cb18e55deac93ec6b80736ae1a941d2a9fcb9f5f0323feea93c8c4ebd8ca5c8bd305344b1326cddfb485a538f0573bad78a5357cbb801cfe0a3050d847e95d09850df89720a04a071918065820b6838d87b1b2b78372a7a39624a73e7b9cbfe60f5a3185706d272ee93e36f3ef58208069bfd77cd79d7d2f2ee84b16706040d92f9e02fe5575bfcabbe68794df2c4606190140584015bd96123bcfbf60b8ab0baafaef443d96a509364cd9a62ff46a0dac766ee6a5768fbfe0339fba9fd5381a0eeaff4931c5b879802db52f43f003ba020f72150b06005901c024a34c13d649677919590f8c64f97e427724c666ae84381d1e67f6fca6b588e3e7c88c62d309ff85fff5d64c1cdf30a7700a4b31eabefd6c9af1062a1b191e00dd5d525a005e8a977ef5b9a66faae6958cadfa61ea6c8e90980ca9d32e4ba87c81f31ffc323b7e3f5b1decee3a026633061aae34ecdad464375fb12105a1ffdf4fb8dccb4bbe69c623f01ccc320e03bad8d5d93023a62d31e9f811dd77ce971c04f3de0bdf748e95c47ce26569dbee3e8f23545d8055655b3bd77a108bdda863f9d7df117258bd246e52d2f3d4e43a8e7d6e82f1736dca90c6e96c80679fd3b57c0e4673c8174c1e96edc45f60c19381b3ba6735bd1838c29dd72607ee4253bb7c9f0a5fa967a8e29b202560615efcb7facd6d8f802c5a5e08ed9eb87d67a1b498d5605acee0e7a62eead57a10951195b4ba1cd8cc8e9245b3774ae4f1d57f49ff1c54beb94c5c5d0890d07d6e0c71957cd75a58aeb7d51cf8b1daf7cedfcca9779e3197a9907099464e2287dbf5afe60a838d55d89190f9f75bcf99e0faabf2aa4a2cf7943ec6dc2c7a9cd9d6a6e7a002eb13b6eaed6b7b69e70eed0d6d7f06e8bf6e804cc04f6cd9e4310dcb3c3c7e6f91abfc6e7c2428d1a8441e6620d6698ba400828258203d34730eaf05548a8e49eebcf51e6c9ad8201799859c2dd33f0bf786e550b522018258206b01ba4521b6db1b3b29d3d750ca8498e8a903c180a7a51ff3b4c9a5fb1f894f08018282581d613d578fd1329d16f14632fdac42b76eff513958a5fcb6b7044c65de121a001e84808258390144c768ed65cbda093c3b3944c4cdcb8fbeaabddb454bc8215ebefbf8e256fc68d5465a168ebb902ff5aa0915568e08b64e94ee7cbaf20f8f821a0ad7abb2a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a793c8b30021a0002bccd031a02d2aac7a5008182582087dcb45cbc04ad1766bd421cd398750a39ab98e38d459b8850939a702629c7bc000181825839017e6fe6a86ddaba04e0d6a86e9fe2b798ea4699e0ebe4149bc7ecd86c9b9c0651c3d2ec1972acab92d685228066d5b29873626937dfa590161a063cc7d2021a0002ceb6031a02d13237048282008200581c9b9c0651c3d2ec1972acab92d685228066d5b29873626937dfa5901683028200581c9b9c0651c3d2ec1972acab92d685228066d5b29873626937dfa59016581cc485ab20bd3f105e59f3c50a0d3fbaf615a51f70a1c6d29d00a1fd27a40081825820cc6e628f27106b7ad61d848b0cdeeefcb229be213111464a0859e8058d0fbf3701018282584c82d818584283581c0691eb395323522c7000aa6184db1ef0cb6797f6bed732dde59cd2cca101581e581c2b0b011ba3683d149cf0922ae6310efac7a12fb9aaa14a74640fa48c001ad9a709ef1a02cab68182581d616904e8b2c26f3dda6c4a5db4b3ec9e31d581c9960977cfe9c6917a431b00000007ae8decb1021a00029cd5031a02d1324ea40083825820ebd76ef3d237c0af87037b330520d9ebc43cbf5b280c23cf4fff4b30f1f22cef028258206b01ba4521b6db1b3b29d3d750ca8498e8a903c180a7a51ff3b4c9a5fb1f894f01825820cb5a50a95a7a5733e9673db4775bf1c1affa30d000873f97f44616c39cfaa11800018282581d613d578fd1329d16f14632fdac42b76eff513958a5fcb6b7044c65de121a001e84808258390135227524fdc6a69e8dec93ed5879e14d760a98c46e949e27eccbd49c2868509d565ac04981e3033b1142dd2c14dc1d2a6a3479fa7b921a30821a00238503a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a019c7544021a0002a09d031a02d14047a3008682582013bea1cade794a1d5467e7cfc46b47295e1d37bc5148e6ff580029a4c40a39c6008258202555e959aac9bdb1c60c7462ddad8f85f2cbd4788e39444e32b3c5e72157f66300825820643132411ad05a7b3f8a593b452f8e3058a2ffa6553066df2e3cf8b622ad8e810082582066f82ddb7be854f0b23e91c6edd2f831b96fb4c1d27575c556ac0f0383b08a0a058258209c2af09fe31d5b85a12bb2b32873333e61173f2a20cb7a64c440d9dba903cb3e00825820d364fe589aacdb2cc5df258fba1e17ff442f5cde458f9ad7e3c684df96804a9c00018682583901994ece48a7a131116e2a1a72d8568eb9dd1692a15c19c77651f9e46eccfae0e8377d194c834fa0c6bfaf7d1479cbc4968deb6ea6d9a438c1821a0016e360a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a0091221182583901694f5d8515c2a10393b6f0da5b185e2139c1e011339f54d350ae44f0f82c49db66d38f4daa4efa7c685445e5f245292aaec184ce4899bc14821a0016e360a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a005756268258390135227524fdc6a69e8dec93ed5879e14d760a98c46e949e27eccbd49c2868509d565ac04981e3033b1142dd2c14dc1d2a6a3479fa7b921a30821a0016e360a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a004d88b282583901f05329c96cc1b43fadc84177ab6db64c717cd6c3d1cacbced852abb9dbdcbd948a0742b085060e7a73f9be3bee4a47d1aff86203648003f5821a0016e360a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a01087b1082583901c78fdd55c6290368690fe3a08eaae29a06ee52f4894a37ecbfa5ba2263aaf1c26785267aca525db5d6eb69fe6ba618f221845efea7601a2d821a0016e360a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a004d893282581d617cd4ce2933a9230cf5f4419b9d1c48d4d6b8da0dbbace50cc5789b38821b00000003608e54fda1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591b000000057b5c8951021a00038139a40083825820cb5a50a95a7a5733e9673db4775bf1c1affa30d000873f97f44616c39cfaa11801825820f98bceb21953be391d1962e58d9776f0d9e615e152244963955a3521c726e14102825820c7932d8af88144805c9063faa0f428938f2a6777ce8ff6338f722068cb451bf701018282581d613d578fd1329d16f14632fdac42b76eff513958a5fcb6b7044c65de121a001e8480825839010cf82bd9f91707a4e48e8c89f96a2d2d45f6552749c2e069ebc1748dd3e4c2ad591be1018c462c57e23f0fc0fa7ffb16fe4d9dc25c3eb770821a002594d1a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a0337164d021a0002c329031a02d1403ea400828258200576c31e7ceaa3cf5c78bf29bc595a062038409475ff954ee53d7d321120cfb9008258201a0529ca4ccfecf3b0a65864c0280fcb686a4e832b77a29be852cdd77c20961d00018382583901633f44b1b8f8ba35e2a88f01d9976434f4eaa03315ce647a391c0d8cce22971bad0a2a295e1b1dac28e749bb09beea835d00189138e271131a006624fe8258390199df1e69ce10845d0d491944333131c8ca0839f8016964b425738c3326b7f328849b8604fb414facea42c03162d838217fa1e522cf2f2322821a00172bb5a1581ca5bb0e5bb275a573d744a021f9b3bff73595468e002755b447e01559a156484f534b5943617368477261623030303034363433310182583901815f778a2ba10aa0fdc4acf1436e701f78d6f717361d4164c95dcfb77e9edebd75b1908b72519186c997cd98e6d62e5636f0e3aea1ee51401a000f4240021a0003118f031a033f013ea6008482582009db85e7a762bfbb57b32cf04f1c355e90e077be7efb55d7ef700f376f008892008258202723983e9e4b085db6e3c93f57a9a42acc8bb039eb99dd8fa9118a92746e668b00825820a3529c7fe543b4c6d834b092ad28ec98937861644f2e9e6aa227aae67f95844d03825820d58425e42d2e94531007e4f2ec2cc415988433e7ecf174775d1e66de791f41d4000d80018a825839018a9a85d079208203727090cfbf263fb30b56d85dad34d6aa4779d2b032bc73973236dc7d6f7cfd6ddafb91b65e70001ad791262bcb8934821aabda4cec8258390151843571b4aa1e6517df552e656963ea5e521adf633ca794319a424d83f2bf80b4601e48c4e90e1d6b07c9503516659252c914e29b62bf131a34c0574282583901a252df5e72fadbae8bedda645dd2a2148d7658b0ad341982db3691ca51c2c1f2969f094d9d492019f557253632050280c8395c987474b5151ac35ddab682583901ac469db726e66cf9bca1fb4c60ed5f96ba757146a7de5bd782b084d106c04bb2a6dd85068f635ff77371f2eec40d1b070aa0f8b1224a66e51a0118471282582b82d818582183581cc9924e377d4f23c35c949f285fa189a6bbdfca2ddf9293e3166cf278a0001aecac4fdd1a01fc09d782584c82d818584283581cf8e422e7423136795554f68a598324cd1b0523a381ec3aa467e282a2a101581e581c2b0b011ba3683d55eaa3a82a30b7dbe84e7a690d8c19593cf5ff920a001a4c2461561abadaa37c82584c82d818584283581cbba61babe49fbb0ce9868128603f45de32ef57994f68354b0553656aa101581e581c2b0b011ba3683d0a588d712ab8fc1936ae69af782e6a84f755a8be55001a55db53d21a3965bb9682584c82d818584283581ccea8496d5acfb20a26fafc0ea9c0f08a898c43222c5891f4b45d6ee0a101581e581c2b0b011ba3683d1a209f152ad6791dcff21dfc713898c64464d13361001a0564eca01ad4698fda82584c82d818584283581ce6153e2ae3a8ae674da3db32213a1e2ac60a7ab157988dccad4e9d27a101581e581c2b0b011ba3683d4400f4cc2aac8e0ca0c4a4dc8545d9475876704d01001a43c463851a013fe7a082584c82d818584283581ce454fe8ba7442b0881747d1706baa45a4f4b6cba730a4415b59d39f2a101581e581c2b0b011ba3683d246e555e2a324e286fab497985a4a6ac92a6440c28001ad6b4e0531a023777de021a000384b1031a02d140260e80a400828258206fe6aca3f2508e3c14010ba598cb4058317947ef6692df818a42c5a6e515702d0182582026d8779ca684d8a6b7c95e3a11417372ff92ed5bb08a57c9e1861da97293d51600018282581d613d578fd1329d16f14632fdac42b76eff513958a5fcb6b7044c65de121a001e848082583901694f5d8515c2a10393b6f0da5b185e2139c1e011339f54d350ae44f0f82c49db66d38f4daa4efa7c685445e5f245292aaec184ce4899bc14821a00303306a1581ca0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235a145484f534b591a01efd69a021a00029a6d031a02d14047a40082825820648877fac8f758dae06fca006690ed1387b2ec2204b1bc016b266bce638bfecc008258206fa89cd3f64122f6244e14b71d2ddd5da532b33bd98730ca3d79353828f3a1fe000183825839010de15f634e8d7e52f432b004c6759fe473dfde8aa42e459bf4c0c63196f63ab876bfa489c6f80114acf55e7aa93d68ab48db25e74fc5bf851a011ed834825839010dedcda071ff3e073c74bae09910551de925b6c9f1b94f1aa1f15c85085b4d63207ae5045b026a9da263509936b67c9ba81889fecf97abbd821a0017bc62a1581cffff5571ecec795284f04ad6e6852ed2d46d924535ed68ad97fa1e70a1581a4861707079486f70706572436c7562506f7374657230303637370182583901815f778a2ba10aa0fdc4acf1436e701f78d6f717361d4164c95dcfb77e9edebd75b1908b72519186c997cd98e6d62e5636f0e3aea1ee51401a000f4240021a0003128c031a033f013ea40081825820614b760d6a77d7d1e55e8a923b566db0b2f9783460905f257a8e66ee416a5fcd010182825839016628e483e260103db8178508368f19e09e064e7161a6bc9670c66a02ee699aeb3c45015267dad04ab3d67d6cfa953fb753fed34ecaa464411b000000012a05f20082581d61d91ef01b73f3010bb173945cf5417257c00c002715a13052015ab54f1b0000000a9bff5964021a00029cd5031a02d1324e8ba10081825820810b493ad7eb21086048625c3997fdb07c7317a392913ac02feda8acb3c4716e584052f9e3436d9a2822490ec5fad02991c930e4d9b121b3b9cc032573d3197780269f631f9c4758862206dff1e740aa815b1bf80ee5a4d80f2f3fc29cecb268e80ca10082825820bb6baee3198d38fa0b4d03509175af17c23d8c16ef1bcfea0faf3f8791a77f515840a31cee004c097aaeba3c014898370b7dfaaa6b450c6ae00487d2664be400ce203ecabdaf70a26de71642750472859ea9ba2e92035998c1061455f20a60360b0582582029a440045e38c8c80c9c14360fc24dea92c6ef070a35357cd93d59f3f18d91485840b39b51e4a0f542da77d1cd754979c4f77a713fb631d8084475debad30347ee717f7ac37cabc268b6c42d4e32595852038c6454d75c64e1fb11e3bf44ea537d05a100818258200d197b7eeef1b961962a2911d4b553f0d9c3114b8d3e61de3beb4f39dc348eb058402e760d569035b2e10b02906e33dcd0ddc236c9b45cb3419264ac9a0b36a6e8ad0960ad03aa788338044eb443eccaf33699f0d7d493667c9203ef907900edd10ca10081825820c116ee479a4ff442d2d3660167d68e235bb364ba33038d0ec42c665886eece015840c3093d7ec89a09a635b9c43cd2ec3465dc4468e02efd3b9666367920b4bd72284402bedcda969123a8bc6b0959bb160eca4ab68dfa4cee6f37f4af984fcaca02a100828258203e9c556c0dd32615166dc28dded1f633409cd1c0cb71b6d2a441466a05e9146858403fea4be8326d261e3929f43ec1fcbca846c20d308eb013f5ae932b3c8a52dcbdb1829e069c5adf83c0c5afad0385c2180373b6c1fb2a963bbc6a96523ea2d609825820c0c19fad21788560e60d7a107512850c5c9b2c00e2d516c58244022ddbdbad665840493df152ccae48f7692b3c8a9b11d49c0f7eab12183d5fa63db15362ddf34f658e0ff561178812a7006dc8557ca2f59b6ed5d0e8984aecac2a4c91d24dc10b03a10083825820e99aa428105d443a8951703eae6ce058a39fe8ce3287188e72be39c00a0493935840d0ba8e7c812df0b90d86abcfbd13f6b4e99dccd61b91152a6696a82496a863cc3a048458058bf6690244022e0c69ded087d1ca9dc6ae735c45f1d6555084e108825820345e42de07d8238215773735dcfb78f59fa6fe268dadf013e6d844c7f7d20e295840440fe4178a4866f64481af152acaf51c3eebaf705baf3b09a4c6a219754380a6e523eddaef0bf39e74d061700f939863d1cb71a73f14a529875433153a3e650582582010008943d7d5859179e04581bd2b9ee085233a0f7393e2bfe6d2ebce701dc9ba58402848b1dcfd59626885d6f3fc6f99173e2158e262dda5e69875075fc6f4a315c9df69ea1e4d8a2e25fd7cee3655e385770bd081a8b6fa4d63595c19c90ece3407a10081825820fe955d3686653e37c86aec94d57186dbf0f1e414867e964b65049b57416c86465840cae23a41f72d40b9d9c4c55195a6c3f51f625a1f89d4c418f328a3fa64a61e318189119b470c4a8c84ef3a23b8dadd20dfdcf42fa7f11130fc063b7221258307a10284845820d6ea97a4aea06aa80380c8fbd6d7fe91286f78acb1149591ab4d57860e0494e558400099134777a40c19f4c71ba2a5703ff9d40eaddc6d92dc1a9088253a8ab3efe3c4a273c956295900aa2d2842354685a71c0839c292302c414755921ca396e70a5820b39b080c850256c089b3251f3ab398e5b94dd17c364689137ca8b3fe49ad404f5822a101581e581c2b0b011ba3683d09e3df362a1c27cb901932f2b3e859b6182c5125858458207037874260fa1f84b455ad67c6ecda64366bac8cad65dffec8f7870a6dc75e4c5840dfd0d3b57b323d47a5aafa9a1890335224122e3e77a77c5bce151103df985f530cddcdf91724d8b886c0e10ab0ff017c8cdb4441a8885ccde60798aea4af800158208c9281701891f2dc0a66bba4bda8f3416431b460ede13bc6784d8d5d7547749e5822a101581e581c2b0b011ba3683d2772fa792a5889e41828cc76ffb7ea2569c225682b8458200704240791a0b1bf27fd81a9d8de9cf62a1ccbba53795413ee733a7b26ee926a584017079517f099ae9d1a047528ba2aba3326c74f6f5aea21ef4a52fbb0d42b129d52984a2d7e11c49548e419908f2729e1103ec6b8251777e53e654420573090045820a0ec57cb668bf73a6e2d94df5ca19ba0b3eb4f561cadcd5829ec56fcd35a86c45822a101581e581c2b0b011ba3683d6f1d0df82ae9435de7d874433338188b2aca8e4d6b8458201477bfd5a93ef5aa5f21cb7793c12bb3554669cc01c0575ae7c7282d7ebcb40e58405d6b53624bc1477de3a1b9f37385f9d1d2a9db39c411e8f11e08e3660b4cc6916c1618800c9f465ae437a59bc2734d8652e1676461b9427724cc2da5174fae0d58207e719362b15ce90d7755fdb1892d8a56c3e38a470cadb9bbc85d73d276e2a53e5822a101581e581c2b0b011ba3683d477e6d862a2533b07c33e15177ab90b3742a4df901a10081825820a62cf49a11ca7cb60f63d140586ca033c8630c0dd05a4fbe98353ac7e91544ca584078626055ddb4269801483b14c4ebe307493a62b1c6a6318ffa1efe6ed10ed26f4234414161d8fec9347f081b0b03769e305e06356e6d96643872420dbbe05007a10081825820e409ab4c9ef9cbac82c4090fe0202d9452151d7610f8a0837481319564cb28fe58401e1a197f1ae918365d3ba6ca5ec3f86f2a83cf7d34319104f8f9e9a412130ac88e392fe29f9e0b850beab23c2fd885b41c45df9f19fa76bbc9dcf15389f5a50ea100818258200d197b7eeef1b961962a2911d4b553f0d9c3114b8d3e61de3beb4f39dc348eb05840a989df7349b26d4f4701d50b5c6820e29c07415200d9f97c3dc36bf32dda505b0da234792db1b13c6b8cd494edfa84593803cc764c9751e004e568afd431500ea080" +//slot:76204984 +//hash:db19fcfaba30607e363113b0a13616e6a9da5aa48b86ec2c033786f0a2e13f7d +var babbageBlockHex = "85828a1a0079c8a71a048acbb8582062304d8672d2f7cede894d32f48e8ae06b589d58bccdbec5a042e97f89e1e8905820c28264eedc90b7bc299b6c8ff675e583327f7ad5e00bcb95c525c093e68436ad58209a117213fbb51458275c9d9316780057ca9f8ea4004452a26c55201d94ce213782584083bbe54c131e0154efc7861611d29331d56ce588cab57c76507cc5e5aeba4241583161a2ec4fd5c99b9316e01941dee01cf0bbcf5bf018fdfc1433dcbdc734aa585085fbb0c776a83c54e840c42942beddeb22674c193dd942c50ad1ea64acf5480096a68085722273413d98ceff0e1b5bba13db0a34227042e8b5bac6a4903931df25d889632bc5d949c94f4e7fa6d4a20d1942bb5820e138830408d117043754ade30b35f0ef98c74f78f77d28067aae744d9fe01e3c84582001e39b5d1da225105cabeb15a076a5040229639d802cc2ca2de267b2c28f71500819021e5840596a50ae6e40675f7c25b3fa48bbd410c75825326f25a72fb3549c83ef4e20a0940ff826076edd47b0191570e74028bcf2753aba674f953f718b7e239389cb0d8207005901c039ae63b2479c9e8c65bb8cd887b826351073b601b91cd646d2e8b66c7757c94e060d14813587a95bbe154183298ec60c1145608472162a20de2718acd6fd0c01d31754e8b537813d7bb2bdcf0789099963f4ebf1239b6c5555814123eaa882ce1f8363895fdedd1ba48e7806ccafbdecf50d5e4149d46bdd8dce5edfe61270799440ca36b4d365d38b911910923fa00c715c309fd0a6d7d6a0320741a451657575b741e451e271c886ba46b4cb308067fbb994c99e30a15efae167d3726b6d9a85377b0568655346d0f20be9cdae14ce98b82c5ac0573a901aa3291f7f1e58ae89592da9a4564d326563e54f510eaa0a6f2e265b3bc64fa8bcfaedea86c1dcd2c25a6db0fd7c1770c7cdde18d5a56b4bdc24915203a21be03c6a9f01f3d34b75f6b37260d5325feda1e8de5d8c38948f7a01b85aed6c01e58e12414d1ba66bd47860abfd4a5d6a5cda48aeb2c1c93ce4c2daf29af3af8a8d67b95533f9dac1f3597a1263a277eff95cecbcf2a8c5b8f187a6b46478a1d0ba42b23b4b4d95a9d60c9c0a2ef515d1544117916d1466b0c26e9e373799e2c5a288c1deba7b850d6bfdd42621e2a9e6c19e822714fa72af251a5383af3f03aa0f58701b2ec0f4f0c08ea40084825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e02825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e03825820a29c2246d60024bdaef4b336e4bb94a060744cf5e03c7337261b1e5abb7b817e04825820db73666a95f672028c92fcfb8e59c17ea0bf585778f55cf89a365db520a10bdd01018483581d71a65ca58a4e9c755fa830173d2a5caed458ac0c73f97db7faae2e7e3b1a819bde1858205ad3e0713e3b1b1e789e8da37bfa679cda9cef2346f0a1b71fdacd3b2910a82f825839013a28cdd189cc574938c0b19160d12c4bb6544c6bde7fe67685dbba6a650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d821a001e8480a1581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1b0000000ba43b740082583901223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d1ab0a1553482583901b816fab02229f7f4e80523b3ccb6548d619170f0861dbb0e7dd32d43650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d821a003dedc2a1581c29d222ce763455e3d7a09a665ce554f00ac89d2e99a1a83d267170c6a1434d494e1b0000000e2e2b342f021a0003330d0b5820912df7bc22c1f7bfd23930a72695416d059609ad4de9e2cd4a3e30818f6e09fda70081825820610a374a41a14261b0b4a0b6526341afaee728e42ac81f83fd3301829bc42d5c010182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a00150b80a1581c702cbdb06a81ef2fa4f85f9e32159c03f502539d762a71194fc11eb3a15819416476656e74757265724f665468696f6c64656e3133363734015820f6c87da37e98ee4196f241a03f5141003040d3036518294df63a68c82cbd91ad82583901d24caba5d7c0211a276823f337c582150e57000aa3172ecb682d6b76035559f36857c99ae41471b68df4b054899396e46ab7837e04ab69b8821a01c4b3a1a4581c702cbdb06a81ef2fa4f85f9e32159c03f502539d762a71194fc11eb3b83957416476656e74757265724f665468696f6c64656e383638015818416476656e74757265724f665468696f6c64656e32313634015818416476656e74757265724f665468696f6c64656e32353132015818416476656e74757265724f665468696f6c64656e33343437015818416476656e74757265724f665468696f6c64656e33363735015818416476656e74757265724f665468696f6c64656e34303834015818416476656e74757265724f665468696f6c64656e34363636015818416476656e74757265724f665468696f6c64656e35383636015818416476656e74757265724f665468696f6c64656e37313330015818416476656e74757265724f665468696f6c64656e37323335015818416476656e74757265724f665468696f6c64656e38303034015818416476656e74757265724f665468696f6c64656e38313835015818416476656e74757265724f665468696f6c64656e38333831015819416476656e74757265724f665468696f6c64656e3130353433015819416476656e74757265724f665468696f6c64656e3130363438015819416476656e74757265724f665468696f6c64656e3130363732015819416476656e74757265724f665468696f6c64656e3131383436015819416476656e74757265724f665468696f6c64656e3132303038015819416476656e74757265724f665468696f6c64656e3132323934015819416476656e74757265724f665468696f6c64656e3132333232015819416476656e74757265724f665468696f6c64656e3132393238015819416476656e74757265724f665468696f6c64656e3133303234015819416476656e74757265724f665468696f6c64656e3133343132015819416476656e74757265724f665468696f6c64656e3134323933015819416476656e74757265724f665468696f6c64656e3134383235015819416476656e74757265724f665468696f6c64656e3135313233015819416476656e74757265724f665468696f6c64656e3135383235015819416476656e74757265724f665468696f6c64656e3135393135015819416476656e74757265724f665468696f6c64656e3136303438015819416476656e74757265724f665468696f6c64656e3136343833015819416476656e74757265724f665468696f6c64656e3136353835015819416476656e74757265724f665468696f6c64656e3136363730015819416476656e74757265724f665468696f6c64656e3136373435015819416476656e74757265724f665468696f6c64656e3136383134015819416476656e74757265724f665468696f6c64656e3136393234015819416476656e74757265724f665468696f6c64656e3137323538015819416476656e74757265724f665468696f6c64656e3137333935015819416476656e74757265724f665468696f6c64656e3137343235015819416476656e74757265724f665468696f6c64656e3137353234015819416476656e74757265724f665468696f6c64656e3137373537015819416476656e74757265724f665468696f6c64656e3137383735015819416476656e74757265724f665468696f6c64656e3138333333015819416476656e74757265724f665468696f6c64656e3138363432015819416476656e74757265724f665468696f6c64656e3138393335015819416476656e74757265724f665468696f6c64656e3139323738015819416476656e74757265724f665468696f6c64656e3230303636015819416476656e74757265724f665468696f6c64656e3230333632015819416476656e74757265724f665468696f6c64656e3230353036015819416476656e74757265724f665468696f6c64656e3230393832015819416476656e74757265724f665468696f6c64656e3232383237015819416476656e74757265724f665468696f6c64656e3233313036015819416476656e74757265724f665468696f6c64656e3233383333015819416476656e74757265724f665468696f6c64656e3234303130015819416476656e74757265724f665468696f6c64656e3234313430015819416476656e74757265724f665468696f6c64656e3234313738015819416476656e74757265724f665468696f6c64656e3234353632015819416476656e74757265724f665468696f6c64656e323436373301581c95d9a98c2f7999a3d5e0f4d795cb1333837c09eb0f24835cd2ce954cb258184772616e646d6173746572416476656e74757265723434370158184772616e646d6173746572416476656e74757265723732310158194772616e646d6173746572416476656e7475726572323330380158194772616e646d6173746572416476656e7475726572323334330158194772616e646d6173746572416476656e7475726572323431320158194772616e646d6173746572416476656e7475726572323638310158194772616e646d6173746572416476656e7475726572323734300158194772616e646d6173746572416476656e7475726572333133310158194772616e646d6173746572416476656e7475726572333437360158194772616e646d6173746572416476656e7475726572343237370158194772616e646d6173746572416476656e7475726572353534380158194772616e646d6173746572416476656e7475726572363035300158194772616e646d6173746572416476656e7475726572363237340158194772616e646d6173746572416476656e7475726572363733310158194772616e646d6173746572416476656e7475726572363831300158194772616e646d6173746572416476656e7475726572373036350158194772616e646d6173746572416476656e7475726572383637360158194772616e646d6173746572416476656e74757265723836383101581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa14c647261676f6e77616c6c657401581cf4988f549728dc76b58d7677849443caf6e5385dc67e6c25f6aa901ea44a506978656c54696c6531014b506978656c54696c653432024b506978656c54696c653537014b506978656c54696c65353801021a0004ad01031a048ad587075820edba043597fd64b8cf24db36d4fedc81ea6638fb0071af61c0d49a3034bfddb4081a048acafb0e81581cd24caba5d7c0211a276823f337c582150e57000aa3172ecb682d6b76a40081825820d9ad2a3f32db78fcbb392a205a363194376f50add9e09a58246c5bf9647c445d02018283581d71ba158766c1bae60e2117ee8987621441fac66a5e0fb9c7aca58cf20a1a1daade8958208561a991a09051589d8c8399c2d5cb2c89d2f1c8beea7f8da8a9bd9cf3cb584482583901206a54629f155d28a5db2cfd7f337b852cfcc1c4c52e8681282eb4e6650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662d1ad8d6586c021a0002b1a10b5820ea824d166eaee5f622181e2eb41beaed21183f5b91d4cf2527025b3743ebcbddaa00828258205aa66d833962fdc02ade26e4ea42756062e6c6140fa98d12ba15de09877b3453038258206b9697665132a2f949fd97f6e937b85f12bf03eb1f75cb777eb990b8c0dc09b7000182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0013ed4aa1581c2a04f5c8bc3d3aab127092181750eefb3a8c7363d5190e2b77445d96a1494465656431333639390158202b1b19cb5c16e08bf5ea9eb6af55eecbe3257bb3bae9d897ea2360aaba9880d78258390186a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b405432f9b6fc9b2ea7dbf540f1b8cf86cd59c15dc84f0cb8d9da7c2f3381a0309f36c021a00048932031a048ad587075820b4b3d23f1d036bb0abe5ba12a6951b07df66ee36c7abeaac35a5aa43b9fe125d081a048acafb0b582086b6b6c397365c1b6b1bbf726a7e458609c38e9a3655d6bbd5d6d067ec77294d0d8182582083953dd59fa255b986419d56e9f3c61a8fe9c08cef8ea932de6a8bc18dda621b000e81581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b40512818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a40082825820ad5f8e5de5438d4db9b0c770aca35858267de3474ca1c5fdb7f6db2d9bb2806a0282582027e48d0108615bd7bbd1b571b7465dc1035be0df619a504902e486cf4246ae0e01018282583901cfabb98e9a371aaa24337ce37696d97e911e517657a96cbd0d2366a501b0d96ad6d361d1766e4cb26ad274a3353526ef58263bc777d7f7671a05f5e10082583901036e735ee499824b87baee5e2789ef7d47afd81e36fe816f9d4e902fc6be284cb693b5105972d96836513ca205c3e3e6303202c77b7fcfb01a09855e28021a000297ad031a048b1f5ba4008182582065bcedd143b5642919ccab3083e54d1fa64b74cf477d0735d5c212807f4d391901018282581d6131ec74a9f86884e7a16f8fc30840f7f409c08b91e93d2be3a43774421a004c4b4082583901cf8c0a037ecee4657bc953058412acedd978cfbe96b0b07e948e6c5d1504fa2622d7fb4281d233b00400732137312a63f701c76f16fa4df51a04c43477021a00028cad031a048af5d0a50081825820438e038d985fe9b570b4da715e7cb45a8fc6937a2cc7108022186c814358d949010182a200581d6124d274bfd913b241a8cca20c6977775718fddb8f3763f1d365c85445011a001e8480a2005839010e2f66bc953ab54f124150d389e77e512a4732be749e1fc17d0616c74a52cfb4899e29a8f46c27ffbcaab3a5cfaede5de53c90b1693269db011ab36ba898021a0002a885031a048ae7c705a1581de14a52cfb4899e29a8f46c27ffbcaab3a5cfaede5de53c90b1693269db1a1aa449e3a400838258202f598d9c36aecd1989b96a79391eaeab807dd943e0e2120b90f2d55599410315018258204c65fe251508c0541e47c0344118fc5a660467db9d201d68eee918ca058df92e018258206ae4955a08774d408a016a39c61629b03cf97384cbff5129332eedf31aa6beed04018282581d61aaaee3c027ea14f958d0c8145226620f6548c1739636510500ff60fa1a0d693a4082583901de2df9808b7fb0b42278a0ef80800ecbdcaba9805dbb4f466d84347c5f23a3349b6923cee1fa6414e9cf29cc29fa54924680dc4d4ff9f93b1a01ed9e5e021a0002990d031a048af5d2aa0082825820121f9e0f7c6182bcf638be8d6ae79bae0ae8873b6f6da420726b3a19a9365dc9028258203f968c86a9e249f5d97f9381dcc123e353eff0c923a1facbfbf0095e2cef5224000182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0014a67ca1581c13e3f9964fe386930ec178d12a43c96a7f5841270c2146fc509a9f3ea154436c61794e6174696f6e50697463683138363735015820b678cc8c0f77c5d36d119a42c449ba8cff4101ae751f33acc3bf01ade5922e5982583901709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090de74a327674876a8ca2981170c1acbc8952c825c6e02e3b21c026af061a01dba8c6021a00049c72031a048ad5870758204ce3f7839707168434bac87e365e308029485a136a29a5bff86249b9a1451b13081a048acafb0b58205189e62c285ae72c513ec09ea72d685fc5dbb3b2a17c42b8aa70fa2e06fe87f00d81825820fe8c06c2a995c0faa3b728f64e5f55e12faf5d6cf97a7213ec59571f4e35e75a040e81581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090d12818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00aa00838258202d853757111193d5d6807259623d725616fcc79e40065d60297df2eb1810b9150282582089735f61c491b1b4a190ae34ce8feeb0ebb59163e3e2d505535cfbb9b503bde000825820d8a47e1c3d5c3db6e4c6380cbcc99f4d0af290a278da835cd51cc2928b04e633050182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a0013fe20a1581c062b1da3d344c1e6208ef908b2d308201e7ff6bcfddf0f606249817fa14a4f52454d4f4239383533015820efd5e998245eaf355779df42c9fe901fe84aa0abf87ecfd235cfdb8d530a2bb7825839015b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b0086f85b63375562f9119792fd4ee1ddfc09063d9591705c5110b7e615821a004a6c8cab581c062b1da3d344c1e6208ef908b2d308201e7ff6bcfddf0f606249817fb14a4f52454d4f4235333935014a4f52454d4f4235363737014a4f52454d4f4236343132014a4f52454d4f4236353533014a4f52454d4f4236363637014a4f52454d4f4236373439014a4f52454d4f4236383132014a4f52454d4f4236383134014a4f52454d4f4236393833014a4f52454d4f4237303231014a4f52454d4f4237303934014a4f52454d4f4237313930014a4f52454d4f4237323534014a4f52454d4f4237323537014a4f52454d4f4237363332014a4f52454d4f4238313638014a4f52454d4f423833323001581c14a3455f71c435a04ea1fdb50a3ef4c1cab0e79fb1565627ac66a575a144524156451a0003ff97581c86ec26a91051e4d42df00b023202e177a0027dca4294a20a0326a116a24e617175616661726d657231363030014e617175616661726d65723234353901581cdca54ecf37b0e3af2fdfd336e1d21fadcc45b3261b0f73a095631dfea144444f45581864581ce25f63ead710e65dfe69fbbb9945df9b2eb06b4694e765743ea71d43a34d4368616d616c69656e32333831014d4368616d616c69656e32373338014d4368616d616c69656e3431363601581ce2ed73b580344b69642683be7e807de1221462174c806d25164f72c4a14f4143524f4e594d4c4c414d4130323301581ce4214b7cce62ac6fbba385d164df48e157eae5863521b4b67ca71d86a15820b949e41cc27351bd18d8f4a42409175152ab966838ea0576dd5b396278fb6b701a000fd6eb581cee9c9c1568de2c9c00a7b0bd862a5ab96f488c8c731519178dca121ca147446567656e323001581cf0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9aa5446d7974680145616e696d65014563726f737301487365637265746871014a6161726f6e63726f737301581cf2fe9aafd2e5b3b00e2949a96d44a84d9f4d818d63945010a466a4aea14541554449541864581cf43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc535a144414749581b000000746a528800021a0005f0f8031a048ad5870758203f2c7f19c7d18f8e7ee7d03ca15eb1206ff3142864de5ce3ba5bf671012754bd081a048acafb0b5820312456cd3e7d6017f86007585a7672a120c6fa88f0d3348e93a73b9cfe935f1e0d81825820f81bf292d60d614e796f5ebd5c843490a30ee56a34f1fe7b145a6fca36bd2e7c030e81581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b0012818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a40082825820a6645a4e7dce33c28681a30c35ef38f46cb6067831e3376d6b79286bb86e5fad03825820c86bcdb2fe925009e52a44fd66faaa5a9083b6c02e1c8f953ca4bfe242b7d7a50001858258390120e41a6a85074ed4882c33f527eeda67939aded16fb204b7e4f8ffe396d5e0a2ec705777e76ffb4d15c5beba712ce5aa5f6af1305a83b375821a00989680a1581c372b988d54c5ae6468daf62a72d24837495ea92dc0a6e57f9e518101a14a48616c69656e343631300182583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0647064482583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0324e39982583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a0324e39982583901249e87df779418da97de48d585d06f2a6f86bc24e9076e42eed55a54c61d9df1f1d56bd869c5e3d2fd90d75bbb3286297d768bff7716c9be1a004c4b40021a0002c0ed031a048af5b6a5008282582014082fa60b6b2013f13014bbb24a4e847d0a7d00a736f4270d8dce10797568340082582014082fa60b6b2013f13014bbb24a4e847d0a7d00a736f4270d8dce1079756834010182825839014b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac24b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a000f4240825839014b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac24b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a022cc260021a0003917e031a05f5e10005a1581de14b9d7818556e6d48140fe422d865c7655926e32700b624ed74233ac21a001df2e6a900828258205477eec55b285bda9ce39cfaa9517143b3b332c6890db73d1b9df2f06956387c008258205477eec55b285bda9ce39cfaa9517143b3b332c6890db73d1b9df2f06956387c01018282583901ed95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9a5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900fe1a03473bc082583901ed95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9a5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900fe1a04f1c21a021a0003f9a9031a048ad587081a048acafb0b5820abaee9e437b93b02f9f1db924f5f49e8f7d6e50ee3ec747947defcc2d0955aaa0d8182582059f121845027638f775d5e154cd1cb1f99c49037765f2b070a342f1a7e2de056000e81581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e912818258209a32459bd4ef6bbafdeb8cf3b909d0e3e2ec806e4cc6268529280b0fc1d06f5b00a70082825820dbd42a658a7d0d24e7b34e09f839d47673869860d2bdb9ffe6d0359c51d42b8d01825820dbd42a658a7d0d24e7b34e09f839d47673869860d2bdb9ffe6d0359c51d42b8d020182835839119068a7a3f008803edac87af1619860f2cdcde40c26987325ace138ad81728e7ed4cf324e1323135e7e6d931f01e30792d9cdf17129cb806d821a001495a6a1581c988e147ccf378c24315bc68e72441059713e1667f3850b31aecf38d0a153526164696f61637469766559657469313936360158202674a98b9031549fc641b37b4688fb4fc902b7d2e0cff7b88681ddb1c241b18482583901b6290a826eecff64ce3a47e0dba5a9ece0f9fb6e66531521df8ab7be420a097f57b7f992bbb57672ba2b907cbb010b4444ecc16b197d918e821a0147ef12b6581c07f019ce45fb638353258bda4316ce5eb3d0f76a3fb739c451740849a14553414c54591b00000001cf8b9a40581c141b1e54e3cef46e357102e811c9d0d72ff3b0a0b6e93f3bbc382306a74e47656e746c656d616e2031353734014e47656e746c656d616e2032353836014e47656e746c656d616e2034333531014e47656e746c656d616e2034383133014e47656e746c656d616e2036323231014e47656e746c656d616e2036323433014e47656e746c656d616e203632353301581c1f9c0c14d211117b82a61602f98f18274bc5086ad1231614715923d0a14c5068616e746f6d4b6579343001581c258945167d9e2d6a56997e2763ab2e73002d05ddae39989939ecae39a2475754443133393301475754443331383001581c3f75c1332868430e28e156f6309836de8df19b620ab604c166741836a1505468654d616e6472696c6c7a3736323301581c5329a9b87459e1df8e86ce56bae4b3770862c0969011e6faf474b65fa1544169726d616e4a61676765724861756b6c616e6401581c5a2cdc6e3aa9612fe4676672f443e7efd39c309d45e7919a4bf27750a1581c426f7373506c616e657444697374726963745468726565313337393501581c705c14c3e8364ffd602ac954f6955b106fdf058e233c72e3aa2b088fa44f53706163654f747465723030383535014f53706163654f747465723032363639014f53706163654f747465723033353636014f53706163654f74746572303336363301581c76d51276ff5d4616fa87fe5e398f09110e9f085a26b44f07130b57a9a24e46616c736549646f6c7330303139014e46616c736549646f6c733031313601581c7b302af5758319058e3a282c424bf19adda9481372cf6e45fd33d0aaa14d54686541706544616f3132313101581c7b957fa45d75fed7b534df39f4f0686af890589697662f0b8a9602f6a1494c6f6d696e3130353601581c86b116d8cfd880445825208b4a355b7715b63763d6d8f3d37338d211a147657465726e616c190243581c8eb261bd0b2afee56783022059967d9ca1de66bfaf98ce215f7d8a35a34d4164616c616e74697333323830014d4164616c616e74697333353339014d4164616c616e7469733938303601581c988e147ccf378c24315bc68e72441059713e1667f3850b31aecf38d0a153526164696f616374697665596574693132383301581ca8c68ff1e130c79cd0cad73357670b3b4fd11a0708319a99be14e860a154426f7373506c616e6574566f784361743232303901581cb70962ff89093b9bdfda0883f10c8cea59bd1b908a5f184e375fb947a14d4375727365644974656d32333401581cdf44bef5a988e0b135145c505d734130f545dc959e764ac14c9ce983a4581a576f726c646f6643617264616e6f50617263656c30303136373801581a576f726c646f6643617264616e6f50617263656c30303436373001581a576f726c646f6643617264616e6f50617263656c30303539383001581a576f726c646f6643617264616e6f50617263656c30303637353201581ce25f63ead710e65dfe69fbbb9945df9b2eb06b4694e765743ea71d43a34c4368616d616c69656e313137014c4368616d616c69656e313731014d4368616d616c69656e3337353301581ce614d5074d8a879a8dc9b7d0da77114913245e055c2faa9be042a156ae4e446561646c7953696e2023313734014e446561646c7953696e2023343234014e446561646c7953696e2023343339014f446561646c7953696e202332313832014f446561646c7953696e202332323237014f446561646c7953696e202332363835014f446561646c7953696e202332373038014f446561646c7953696e202333343932014f446561646c7953696e202334323431014f446561646c7953696e202335303439014f446561646c7953696e202335333337014f446561646c7953696e202335343035014f446561646c7953696e202336323732014f446561646c7953696e20233634383001581ce78c8f1b194a38b783b1fbf56f7aba05c4b10ae13d8ce746c041366aa14c5468655068616e746f6d333401581ceaa972045049185981aca9f4aaad38bc307776c593e4a849d3802a87a14d536d6f6f74685965746934303001581cfae630fc793b5bb14735616b6f28cfae6d81a82ec05ecca98da3aedca1435441441910ad021a00043b39031a048ad58707582004fdd739bdba00b1e6b8c8d69bca76bc12db809e1f02a554cf76a0288ef85013081a048acafb0e81581cb6290a826eecff64ce3a47e0dba5a9ece0f9fb6e66531521df8ab7be8ea200848258205360587752a1225859aef8250cc9b4535bada5a9fc070300bad6b1afbb502241584028ed06d9fe5569b775f9f2c0c9ea5ddb6443a6e48f4dc247114606965ab1ed8321586c728eadc44a7c96f52be0ec3ae70fdf5f4f837e35c1029958c67406370682582089f130033c3f167baebd55184cfc8b6b3e064fa2ec6fa1fb6dda5c5dfa05986958408b88d8a9cb51813892bea49d1f896e788d32a0f1d136ee66d684ad8267467434a928150da152127791752cf217135049121f7c44fa8c1529ddac2fc9f5f4310f8258206e5a25761aefd9f365fb807356fa2103e2447fc83758535db2fc854dfbddf0565840f229e2ab396cae6281097cc86e584a4015556eafa588a76b678c83ae6c3c6c2de666a8e1282545e37a8f1a2f87cfc23ea1710d1b5d34b2ff0cfaf847f86b5c0982582021d58977115baa8017d6a3d6ae921ed76397d8a490d20cd3a43c16f545bca9715840393c9d107e6b61818ff2e41c872045be4d0f96598e1789b7865f527e3962927feb7ca78151d29986f8f016e56f889ff2c6ec6a55755db6234670d2ae7c23600e049fd8799fd8799fd8799f581c223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd8799fd8799f581c223061e4a09950baf14d5c7b223bc8b401df61e82062ec888caee152ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd87a80d8799fd8799f581cf43a62fdc3965df486de8a0d32fe800963589c41b38946602a0dc5354441474958ff1b0000015467fe03faff1a0016e3601a001e8480ffffa10081825820200a12e8283f5eb9c592157e6a43b1648714da96e399223a2e07448b293be9395840a64482e2e262c675a62ed8ce83e04d21252967ce494c8356ba36a7fb8783516f4c213d8c9a86cf676e3c595328f6ce735cb89229dc340480e1cf3e17af9cbc0ea20081825820b87eb467a0b6908857a720981ac0e547dfb0b901504883daf1236719491fdcc35840f2282f780907177b3e1cbea1e58502834442aee6c4ca312c3d1259a1494fa00d02b96703d00d3105e344ecd5f04f9b31134a1520a18ce40b703aafc10c637e07049fd8799f42df02d8799fd8799fd8799fd8799f581c206a54629f155d28a5db2cfd7f337b852cfcc1c4c52e8681282eb4e6ffd8799fd8799fd8799f581c650e633f78334f94681806c9f56e9d9c9faa40e22853ff4f9133662dffffffffd87a80ffd87a80ff1a002625a0d8799fd879801a1d663469d8799f1b0000004de1043a2fffffffffa30081825820ab28a6427f8a130fe51203def9d6da0fc50eb3ddf8159f3a3eabd0d976dd10d8584006d24d765a3b5af1409bb57b9838c14108211dc19c97749909e52eb91e1bd8feefc42d2d390de1c7e3a318de4384aaef5469a79d618057ee759b9be93960190b049fd8799f581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b4059fd8799fd8799fd8799f581c881614f4fa425081c473f18b5054ce9246575f82fdfb6472fd3bf98bffd8799fd8799fd8799f581c722578fdf29d210c4b7a172ec49e06950de9ab26cc954e7660db14a7ffffffffa140d8799f00a1401a00467ee0ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a002191c0ffffd8799fd8799fd8799f581c86a18fe76717c7fe9fdab29b74a21fd6f1b9f9c08f21ef3f2fe0b405ffd8799fd8799fd8799f581c432f9b6fc9b2ea7dbf540f1b8cf86cd59c15dc84f0cb8d9da7c2f338ffffffffa140d8799f00a1401a062666e0ffffffffff0581840001d87980821a000d12c01a10c5e199a100818258202c5205c7685d015a531ae03f59d3eb51f45a66d5b8060913ae060f8fb7dc16a25840ec6b7fe03ffaf8f4610d844b870ca82ef9743ad2fc076d29b849984768506a43246d5fc08498cba17787e4a1d2079b54fae9fe1b730be872242d7532a4247a03a10081825820ca1652e23e6d1556258cb05692e05397df8d8df7cab0e8b5f1f326d474d8826a5840858b14ddcb4a88be4ff987f98698d3441c2b071d675d5a7b596fb17148b0e0964e7f497d2bc09b011f153ec52d04d5bf8745928e05dbb7a350731d4f5606c502a100828258206ed4d893bf46519d280e8d9da3ff28807effc769abc64bfdc1b702a2bae85d1158407a2fb7509541935c79d0181b96caa09b98eda13aaf154bc30625eca8815e678f8dc70efd7d7aa489a8e598867ecc9ceededd2c0bd3a817db5d9ee1b031ed6004825820d48339712c5828962a644cf5992560882b5ad71fb9f57c836483e63233fd7a545840d42b9fdb8a64fc421c44d188cb56d26f23d71a8647fcb286306855f67cc799b50e67c89b85537b527bedf431b58a14154f54750b34e4140ade5f076a468db80ba100818258203236ab744071a1ebc12230acd65319f9c74fc69e035a28a3db6ede7610f22d6758405200f1d5deb93e2852c37fdf787e6b4b849d0008a3e171c1fb588130ff123cf7f05acbd28e9d8ed26289971c366ee0b6e45431879109d273e367f45c93904905a3008282582073a89a4c9e945459c734b2e465b0ad43e4e50abf867cf4ccfec2fc67fbe0115e58401345043c071a3b71b29ed209bb0675eacfc93c0f96b99fbee56cbed331766cf9c206dfc254f49ad36865bf9a1f34453919e8282bea607317631b7fab8a093a0d8258202ffc18633e7ce5c7d3c2eb63f2aec767dff84207db45cace148440095a8e360358406dca735501d6103b7e4395ed3bed14b513cea89e796106cf4eeda2388a9a2cd33e70426d34d0144bb4d5950fc17574a10d02f7d5e08f315c23c46f4885a4270d049fd8799f581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090d9fd8799fd8799fd8799f581cedc3c2961976efd921beb80be2a7169ecb2b6a57dc2ad62dd7f846f6ffd8799fd8799fd8799f581ce8e57d406e11c6b3fe6565e0ab944597cb8dd3b169dcd407a13a6280ffffffffa140d8799f00a1401a0083d600ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a0057e400ffffd8799fd8799fd8799f581c709cf04ff3be06e1787c925755bb98c6700373b56e0d23bd97a1090dffd8799fd8799fd8799f581ce74a327674876a8ca2981170c1acbc8952c825c6e02e3b21c026af06ffffffffa140d8799f00a1401a104ece00ffffffffff0581840001d87980821a000d12c01a10c5e199a3008282582080a619e25c5193c59dfbc991bde24baf3539e921a5db89662960b223fc1619a25840f40ee7c77a90b80509569655bf65dca83fb9601649dcb3d6952361a1a3b1bee03429f3c3d951339014901051ffa451207f50c9d9b67e736be5d9a1c6c8073b0b825820c29ab9e15b9736c66eea06fcde8aae3809fba0a9b93a6c2dc6b8b559586229775840955d9ee7b60bd35abd165e4ca5276d6e05e0aaeff2d7e726e38bef497b09ab80bb42418fd025f0d7ea2f35cf99755ad839f1aed0a6b82023bbd72cc071f51307049fd8799f581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b009fd8799fd8799fd8799f581c32a2c49166c95be42552495b9a786255fc4bad14591b2cc2fde5a77bffd8799fd8799fd8799f581ceaee221c93e8b88672ae3f0d5310ed2ede01827cce2a675ca58175bdffffffffa140d8799f00a1401a19bfcc00ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a08954400ffffd8799fd8799fd8799f581c5b4f5c2f12bb254dc07da610e1a22e27e1e4d051b8a822cdfe760b00ffd8799fd8799fd8799f581c86f85b63375562f9119792fd4ee1ddfc09063d9591705c5110b7e615ffffffffa140d8799f00a1401b000000018ad23800ffffffffff0581840001d87980821a0016e3361a1cbb5525a100818258203744585b228e2529c0670d82c878df88715cca79106ab83eef84556cb40efb5258409e2f2431037ded4c5b11987bc7c66d3dae26a13bf7bb59bfac62b0f1f18d48e0b5a7dd9c94a2cfb1e683295c2277b080c31ee4d5e6d5f3091b5fecb7cf4f1b06a10083825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90f825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90f825820d3306d98dd81c61e39910d2093f64966cf51f59bcf73d5c3e45d785e28fc204d5840679018a83689d0328fa033f61aa77c7622e27a4ebc9215235d92921d1a7074477ff00b1c11272f4bb2284acc7cc88ac0e02bcb677fe73d48b854e7652be3c90fa3008182582089a11758ef06dc94ba31c6c3f48983caaadabdc63099f0d984ceb71930a6b1e7584038dd182cb56158f65f55d2b346dfec22dbd104dd23eff0235a4f40cd2e19575179fc7bdd0d834a5f20394a68c433a27699e2be5b3a6f771d5b58ac92db73fd04049fd8799f581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e99fd8799fd8799fd8799f581c881614f4fa425081c473f18b5054ce9246575f82fdfb6472fd3bf98bffd8799fd8799fd8799f581c722578fdf29d210c4b7a172ec49e06950de9ab26cc954e7660db14a7ffffffffa140d8799f00a1401a00233f70ffffd8799fd8799fd8799f581c70e60f3b5ea7153e0acc7a803e4401d44b8ed1bae1c7baaad1a62a72ffd8799fd8799fd8799f581c1e78aae7c90cc36d624f7b3bb6d86b52696dc84e490f343eba89005fffffffffa140d8799f00a1401a0010c8e0ffffd8799fd8799fd8799f581ced95fed4f4ea2b013914d78f0f4748387f7a196644a7b42d99a7d0e9ffd8799fd8799fd8799f581ca5af014bfee1d5518e209e99179137d8ed75838aa83e50d5985900feffffffffa1581ceaa972045049185981aca9f4aaad38bc307776c593e4a849d3802a87d8799f00a14e536d6f6f7468596574693331323601ffffffffff0581840000d87980821a000c83921a10270770a100818258209dcd2cba94db4d7ab5d68da45a657c4859ded3e5498b8aac2b2756864e8a0edb5840560152a0312d3b56feeb20e4f5d6e71c9c7038a6bcbd6123089374f2c91cc2310cdeeb0b02c236910d31862ffda77300a86d1a14a6c1043f77bd23e6afa79706a501ac007840643837393966353831636432346361626135643763303231316132373638323366333337633538323135306535373030306161333137326563623638326436620178403736396664383739396664383739396664383739396635383163316365373761343034343732383763333832643033666232633137363162373364386665343502784034613735313166666463643862393534336266666438373939666438373939666438373939663538316339316565653263663238306636303937646136663633037840633365376631613863393331613061346430663266363430333537653836646165656666666666666666613134306438373939663030613134303161303031360478406533363066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030306631623330666666666438373939666438373939666438373939663538316364323463616261356437633032313161323736383233663333376335383208784031353065353730303061613331373265636236383264366237366666643837393966643837393966643837393966353831633033353535396633363835376339097840396165343134373162363864663462303534383939333936653436616237383337653034616236396238666666666666666661313430643837393966303061310a743430316130316133633466306666666666666666181e613403ac007840643837393966353831633836613138666537363731376337666539666461623239623734613231666436663162396639633038663231656633663266653062340178403035396664383739396664383739396664383739396635383163383831363134663466613432353038316334373366313862353035346365393234363537356602784038326664666236343732666433626639386266666438373939666438373939666438373939663538316337323235373866646632396432313063346237613137037840326563343965303639353064653961623236636339353465373636306462313461376666666666666666613134306438373939663030613134303161303036360478403861303066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030333064343030666666666438373939666438373939666438373939663538316338366131386665373637313763376665396664616232396237346132316608784064366631623966396330386632316566336632666530623430356666643837393966643837393966643837393966353831633433326639623666633962326561097840376462663534306631623863663836636435396331356463383466306362386439646137633266333338666666666666666661313430643837393966303061310a743430316130386632306130306666666666666666181e613408ac007840643837393966353831633730396366303466663362653036653137383763393235373535626239386336373030333733623536653064323362643937613130390178403064396664383739396664383739396664383739396635383163656463336332393631393736656664393231626562383062653261373136396563623262366102784035376463326164363264643766383436663666666438373939666438373939666438373939663538316365386535376434303665313163366233666536353635037840653061623934343539376362386464336231363964636434303761313361363238306666666666666666613134306438373939663030613134303161303037360478403866393066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030346630613630666666666438373939666438373939666438373939663538316337303963663034666633626530366531373837633932353735356262393808784063363730303337336235366530643233626439376131303930646666643837393966643837393966643837393966353831636537346133323736373438373661097840386361323938313137306331616362633839353263383235633665303265336232316330323661663036666666666666666661313430643837393966303061310a743430316130656161366364306666666666666666181e613409ac007840643837393966353831633562346635633266313262623235346463303764613631306531613232653237653165346430353162386138323263646665373630620178403030396664383739396664383739396664383739396635383163333261326334393136366339356265343235353234393562396137383632353566633462616402784031343539316232636332666465356137376266666438373939666438373939666438373939663538316365616565323231633933653862383836373261653366037840306435333130656432656465303138323763636532613637356361353831373562646666666666666666613134306438373939663030613134303161316238390478403866383066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403039326464613830666666666438373939666438373939666438373939663538316335623466356332663132626232353464633037646136313065316132326508784032376531653464303531623861383232636466653736306230306666643837393966643837393966643837393966353831633836663835623633333735353632097840663931313937393266643465653164646663303930363364393539313730356335313130623765363135666666666666666661313430643837393966303061310a781c34303162303030303030303161363364343330306666666666666666181e61340dac007840643837393966353831636236323930613832366565636666363463653361343765306462613561396563653066396662366536363533313532316466386162370178406265396664383739396664383739396664383739396635383163373638313138303030313436393937323139393039353861316437623132633362346636666402784063386633323536666134646331373164316266666438373939666438373939666438373939663538316337323235373866646632396432313063346237613137037840326563343965303639353064653961623236636339353465373636306462313461376666666666666666613134306438373939663030613134303161303237370478406236633066666666643837393966643837393966643837393966353831633730653630663362356561373135336530616363376138303365343430316434346205784038656431626165316337626161616431613632613732666664383739396664383739396664383739396635383163316537386161653763393063633336643632067840346637623362623664383662353236393664633834653439306633343365626138393030356666666666666666666131343064383739396630306131343031610778403030623731623030666666666438373939666438373939666438373939663538316362363239306138323665656366663634636533613437653064626135613908784065636530663966623665363635333135323164663861623762656666643837393966643837393966643837393966353831633432306130393766353762376639097840393262626235373637326261326239303763626230313062343434346563633136623139376439313865666666666666666661313430643837393966303061310a743430316132303934373434306666666666666666181e613480" + +func TestBabbageBlockUtxorpc(t *testing.T) { + // Decode the test block CBOR + blockCbor, err := hex.DecodeString(babbageBlockHex) + if err != nil { + t.Fatalf("failed to decode block hex: %v", err) + } + + block, err := babbage.NewBabbageBlockFromCbor(blockCbor) + if err != nil { + t.Fatalf("failed to parse block: %v", err) + } + + // Convert to utxorpc format + utxoBlock, err := block.Utxorpc() + if err != nil { + t.Fatalf("failed to convert block to utxorpc: %v", err) + } + + if utxoBlock.Header == nil { + t.Fatal("block header is nil") + } + + expectedHash := "db19fcfaba30607e363113b0a13616e6a9da5aa48b86ec2c033786f0a2e13f7d" + hashBytes, err := hex.DecodeString(expectedHash) + if err != nil { + t.Fatalf("failed to decode expected hash: %v", err) + } + + if !bytes.Equal(utxoBlock.Header.Hash, hashBytes) { + t.Errorf("unexpected block hash: got %x, want %x", utxoBlock.Header.Hash, hashBytes) + } + + // Verify block number matches what's in the header body + if utxoBlock.Header.Height != block.BlockHeader.Body.BlockNumber { + t.Errorf("unexpected block height: got %d, want %d", utxoBlock.Header.Height, block.BlockHeader.Body.BlockNumber) + } + + // Verify slot number matches what's in the header body + if utxoBlock.Header.Slot != block.BlockHeader.Body.Slot { + t.Errorf("unexpected block slot: got %d, want %d", utxoBlock.Header.Slot, block.BlockHeader.Body.Slot) + } + + // Verify transactions + if len(utxoBlock.Body.Tx) != len(block.TransactionBodies) { + t.Errorf("unexpected transaction count: got %d, want %d", len(utxoBlock.Body.Tx), len(block.TransactionBodies)) + } + + // Verify the first transaction as a sample + if len(utxoBlock.Body.Tx) > 0 { + tx := utxoBlock.Body.Tx[0] + if tx == nil { + t.Fatal("first transaction is nil") + } + + if len(tx.Inputs) != len(block.TransactionBodies[0].TxInputs.Items()) { + t.Errorf("unexpected input count in first tx: got %d, want %d", len(tx.Inputs), len(block.TransactionBodies[0].TxInputs.Items())) + } + + if len(tx.Outputs) != len(block.TransactionBodies[0].TxOutputs) { + t.Errorf("unexpected output count in first tx: got %d, want %d", len(tx.Outputs), len(block.TransactionBodies[0].TxOutputs)) + } + } +}