From cdb5c11d151b7e53e699e3736455b3572635bc43 Mon Sep 17 00:00:00 2001 From: Santiago Carmuega Date: Fri, 26 Nov 2021 22:30:32 -0300 Subject: [PATCH] Work on Alonzo ledger codec --- pallas-alonzo/src/lib.rs | 383 +++++++++++++++++++++--- pallas-alonzo/src/test_data/test1.block | 1 + pallas-alonzo/src/test_data/test2.block | 1 + pallas-alonzo/src/test_data/test3.block | 1 + pallas-alonzo/src/test_data/test4.block | 1 + pallas-alonzo/src/test_data/test5.block | 1 + pallas-alonzo/src/test_data/test6.block | 1 + pallas-alonzo/src/test_data/test7.block | 1 + pallas-alonzo/src/test_data/test8.block | 1 + 9 files changed, 344 insertions(+), 47 deletions(-) create mode 100644 pallas-alonzo/src/test_data/test1.block create mode 100644 pallas-alonzo/src/test_data/test2.block create mode 100644 pallas-alonzo/src/test_data/test3.block create mode 100644 pallas-alonzo/src/test_data/test4.block create mode 100644 pallas-alonzo/src/test_data/test5.block create mode 100644 pallas-alonzo/src/test_data/test6.block create mode 100644 pallas-alonzo/src/test_data/test7.block create mode 100644 pallas-alonzo/src/test_data/test8.block diff --git a/pallas-alonzo/src/lib.rs b/pallas-alonzo/src/lib.rs index 05b82cc..89ae6a5 100644 --- a/pallas-alonzo/src/lib.rs +++ b/pallas-alonzo/src/lib.rs @@ -1,5 +1,5 @@ -use log::warn; -use minicbor::{bytes::ByteVec, Encode}; +use log::{log_enabled, warn}; +use minicbor::{bytes::ByteVec, data::Tag, Decode, Encode}; use minicbor_derive::{Decode, Encode}; use std::collections::{BTreeMap, HashMap}; @@ -10,7 +10,7 @@ impl<'b, const N: usize> minicbor::Decode<'b> for SkipCbor { fn decode(d: &mut minicbor::Decoder<'b>) -> Result { { let probe = d.probe(); - println!("skipped cbor value {}: {:?}", N, probe.datatype()?); + warn!("skipped cbor value {}: {:?}", N, probe.datatype()?); } d.skip()?; @@ -158,21 +158,128 @@ pub struct TransactionOutput { pub datum_hash: Option, } -pub type StakeCredential = SkipCbor<1>; -pub type PoolKeyhash = SkipCbor<2>; -pub type PoolParams = SkipCbor<3>; -pub type Epoch = SkipCbor<4>; +pub type Hash28 = ByteVec; +pub type Hash32 = ByteVec; + +pub type PoolKeyhash = Hash28; +pub type Epoch = i64; pub type Genesishash = SkipCbor<5>; pub type GenesisDelegateHash = SkipCbor<6>; -pub type VrfKeyhash = SkipCbor<7>; +pub type VrfKeyhash = Hash32; pub type MoveInstantaneousReward = SkipCbor<8>; pub type Margin = SkipCbor<9>; -pub type RewardAccount = SkipCbor<10>; +pub type RewardAccount = ByteVec; pub type PoolOwners = SkipCbor<11>; -pub type Relay = SkipCbor<12>; -pub type PoolMetadata = SkipCbor<13>; -pub type AddrKeyhash = SkipCbor<14>; -pub type UnitInterval = SkipCbor<15>; + +pub type Port = u32; +pub type IPv4 = ByteVec; +pub type IPv6 = ByteVec; +pub type DnsName = String; + +#[derive(Debug, PartialEq)] +pub enum Relay { + SingleHostAddr(Option, Option, Option), + SingleHostName(Option, DnsName), + MultiHostName(DnsName), +} + +impl<'b> minicbor::decode::Decode<'b> for Relay { + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + d.array()?; + let variant = d.u16()?; + + match variant { + 0 => Ok(Relay::SingleHostAddr(d.decode()?, d.decode()?, d.decode()?)), + 1 => Ok(Relay::SingleHostName(d.decode()?, d.decode()?)), + 2 => Ok(Relay::MultiHostName(d.decode()?)), + _ => Err(minicbor::decode::Error::Message( + "invalid variant id for Relay", + )), + } + } +} + +impl minicbor::encode::Encode for Relay { + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} + +pub type PoolMetadataHash = Hash32; + +#[derive(Encode, Decode, Debug, PartialEq)] +pub struct PoolMetadata { + #[n(0)] + url: String, + + #[n(1)] + hash: PoolMetadataHash, +} + +pub type AddrKeyhash = Hash28; +pub type Scripthash = Hash28; + +#[derive(Debug, PartialEq)] +pub struct RationalNumber { + numerator: i64, + denominator: u64, +} + +impl<'b> minicbor::decode::Decode<'b> for RationalNumber { + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + d.tag()?; + d.array()?; + + Ok(RationalNumber { + numerator: d.decode()?, + denominator: d.decode()?, + }) + } +} + +impl minicbor::encode::Encode for RationalNumber { + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} + +pub type UnitInterval = RationalNumber; + +#[derive(Debug, PartialEq)] +pub enum StakeCredential { + AddrKeyhash(AddrKeyhash), + Scripthash(Scripthash), +} + +impl<'b> minicbor::decode::Decode<'b> for StakeCredential { + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + d.array()?; + let variant = d.u16()?; + + match variant { + 0 => Ok(StakeCredential::AddrKeyhash(d.decode()?)), + 1 => Ok(StakeCredential::Scripthash(d.decode()?)), + _ => Err(minicbor::decode::Error::Message( + "invalid variant id for StakeCredential", + )), + } + } +} + +impl minicbor::encode::Encode for StakeCredential { + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} #[derive(Debug, PartialEq)] pub enum Certificate { @@ -197,8 +304,7 @@ pub enum Certificate { impl<'b> minicbor::decode::Decode<'b> for Certificate { fn decode(d: &mut minicbor::Decoder<'b>) -> Result { - println!("{:?}", d.array()?); - + d.array()?; let variant = d.u16()?; match variant { @@ -269,6 +375,13 @@ impl minicbor::encode::Encode for Certificate { } } +#[derive(Encode, Decode, Debug, PartialEq, Eq, PartialOrd, Ord)] +#[cbor(index_only)] +pub enum NetworkId { + #[n(0)] One, + #[n(1)] Two, +} + #[derive(Encode, Decode, Debug, PartialEq)] #[cbor(map)] pub struct TransactionBody { @@ -288,59 +401,233 @@ pub struct TransactionBody { pub certificates: Option>, #[n(5)] - pub withdrawals: Option, + pub withdrawals: Option>, #[n(6)] - pub update: Option, + pub update: Option>, #[n(7)] - pub auxiliary_data_hash: Option, + pub auxiliary_data_hash: Option, #[n(8)] pub validity_interval_start: Option, #[n(9)] - pub mint: Option, + pub mint: Option>, #[n(11)] - pub script_data_hash: Option, + pub script_data_hash: Option, #[n(13)] pub collateral: Option>, #[n(14)] - pub required_signers: Option, + pub required_signers: Option>, #[n(15)] - pub network_id: Option, + pub network_id: Option, } #[derive(Encode, Decode, Debug, PartialEq)] pub struct VKeyWitness { #[n(0)] - pub vkey: SomeSkipCbor, + pub vkey: ByteVec, #[n(1)] - pub signature: SomeSkipCbor, + pub signature: ByteVec, +} + +#[derive(Debug, PartialEq)] +pub enum NativeScript { + ScriptPubkey(AddrKeyhash), + ScriptAll(Vec), + ScriptAny(Vec), + ScriptNOfK(u32, Vec), + InvalidBefore(u64), + InvalidHereafter(u64), +} + +impl<'b> minicbor::decode::Decode<'b> for NativeScript { + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + d.array()?; + let variant = d.u32()?; + + match variant { + 0 => Ok(NativeScript::ScriptPubkey(d.decode()?)), + 1 => Ok(NativeScript::ScriptAll(d.decode()?)), + 2 => Ok(NativeScript::ScriptAny(d.decode()?)), + 3 => Ok(NativeScript::ScriptNOfK(d.decode()?, d.decode()?)), + 4 => Ok(NativeScript::InvalidBefore(d.decode()?)), + 5 => Ok(NativeScript::InvalidHereafter(d.decode()?)), + _ => Err(minicbor::decode::Error::Message( + "unknown variant id for native script", + )), + } + } +} + +impl minicbor::encode::Encode for NativeScript { + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} + +pub type PlutusScript = ByteVec; + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] +pub enum PlutusData { + Constr(Constr), + Map(BTreeMap), + BitInt(u64), + BoundedBytes(ByteVec), + Array(Vec), +} + +impl<'b> minicbor::decode::Decode<'b> for PlutusData { + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + let type_ = d.datatype()?; + + match type_ { + minicbor::data::Type::Tag => Ok(PlutusData::Constr(d.decode()?)), + minicbor::data::Type::Map => Ok(PlutusData::Map(d.decode()?)), + minicbor::data::Type::I8 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::I16 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::I32 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::I64 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::U8 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::U16 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::U32 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::U64 => Ok(PlutusData::BitInt(d.decode()?)), + minicbor::data::Type::Bytes => Ok(PlutusData::BoundedBytes(d.decode()?)), + minicbor::data::Type::Array => Ok(PlutusData::Array(d.decode()?)), + minicbor::data::Type::ArrayIndef => Ok(PlutusData::Array(d.decode()?)), + _ => Err(minicbor::decode::Error::Message( + "bad cbor data type for plutus data", + )), + } + } +} + +impl minicbor::encode::Encode for PlutusData { + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] +pub struct Constr { + pub tag: u64, + pub prefix: Option, + pub values: Vec, +} + +impl<'b, A> minicbor::decode::Decode<'b> for Constr +where + A: minicbor::decode::Decode<'b>, +{ + fn decode(d: &mut minicbor::Decoder<'b>) -> Result { + let tag = d.tag()?; + + match tag { + Tag::Unassigned(x) => match x { + 121 | 122 | 123 | 124 | 125 | 126 | 127 => Ok(Constr { + tag: x, + values: d.decode()?, + prefix: None, + }), + 102 => { + d.array()?; + let prefix = Some(d.decode()?); + let values = d.decode()?; + Ok(Constr { + tag: 102, + prefix, + values, + }) + } + _ => Err(minicbor::decode::Error::Message( + "bad tag code for plutus data", + )), + }, + _ => Err(minicbor::decode::Error::Message( + "bad tag code for plutus data", + )), + } + } +} + +impl minicbor::encode::Encode for Constr +where + A: minicbor::encode::Encode, +{ + fn encode( + &self, + e: &mut minicbor::Encoder, + ) -> Result<(), minicbor::encode::Error> { + todo!() + } +} + +#[derive(Encode, Decode, Debug, PartialEq)] +pub struct ExUnits { + #[n(0)] mem: u32, + #[n(1)] steps: u32, +} + +#[derive(Encode, Decode, Debug, PartialEq)] +#[cbor(index_only)] +pub enum RedeemerTag { + #[n(0)] + Spend, + #[n(1)] + Mint, + #[n(2)] + Cert, + #[n(3)] + Reward, +} + +#[derive(Encode, Decode, Debug, PartialEq)] +pub struct Redeemer { + #[n(0)] + tag: RedeemerTag, + + #[n(1)] + index: u32, + + #[n(2)] + data: PlutusData, + + #[n(3)] + ex_units: ExUnits, } #[derive(Encode, Decode, Debug, PartialEq)] #[cbor(map)] -pub struct TransactionWitnessSets { +pub struct TransactionWitnessSet { #[n(0)] - pub vkeywitness: Vec, // Option, + pub vkeywitness: Option>, #[n(1)] - pub multisig_script: Option, + pub native_script: Option>, #[n(2)] - pub bootstrap_witness: Option, + pub bootstrap_witness: Option>>, #[n(3)] - pub monetary_policy_script: Option, + pub plutus_script: Option>, #[n(4)] - pub plutus_script: Option, + pub plutus_data: Option>, + + #[n(5)] + pub redeemer: Option>, } #[derive(Encode, Decode, Debug, PartialEq)] @@ -349,9 +636,9 @@ pub struct AlonzoAuxiliaryData { #[n(0)] pub metadata: Option, #[n(1)] - pub native_script: Option>, + pub native_scripts: Option>, #[n(2)] - pub plutus_script: Option>, + pub plutus_scripts: Option, } #[derive(Debug, PartialEq, Eq, PartialOrd, Ord)] @@ -474,7 +761,7 @@ pub struct Block { pub transaction_bodies: Vec, #[n(2)] - pub transaction_witness_sets: Vec, + pub transaction_witness_sets: Vec, #[n(3)] pub auxiliary_data_set: HashMap, @@ -506,24 +793,26 @@ impl TryFrom<&[u8]> for Header { mod tests { use crate::{Block, Header}; - //const TEST_BODY: &str = - // "85828F1A002F48731A0295ECCF58205A6D350C1FAD5B631779380C3C46D79FB11B57FFC85283284703D23A80DFB6FC58207A41F85C0098FE985D353B2E5F7857817FA2B9381E69D82F310F8CC234CBECC258201406E0E6002D049FA58A8120F3DD925E10B99DEA4BCCABC4082FA91BED2E8DCE8258402BC7FD7CE46DC0E0EBAABA32C6B44EDA4456A2824BF7D0708686F8CBCEC15F548464FE38AA497D292DDD490FB3DBFB34ED850C959DE7378E121FE0159AF033775850717C4B0C95096288054F1492B8FD99A9C4580FB7FB769575D7EC349D1E041C2496680B83F5510EAFB91ED8ED51A7647666EA4377DBF5326885F35933C96F377FC787C566D8CA2A266BB60BCA3A9AD70A825840000454DF44A1A3953A0118DBE89C9B0B4E6A6CC5E1AFB502593C6E1CD769DBBC8BFDEA890115F94F2F31A6DFE7180DE8CBB6F9AF6199B570A1A5E4875721A379585064E02BB0CF4A19EF7D4A6D6C2B6393B33AD8F94F00C4A01271A33BC9AD816E27FC2E1EA521C699AB8B8E57FA4908B299B3FBBB9655030D4A86874577F5F9EB19D6D8E8520B0E86127E5EA458F43BA40319033B582076B1655BC1D9BB338034AEC6764EA55F3B3A463625C1A2CC1684F8685B58E4B858205FF5BE25CA3FC8040B9A2D2D1AEB323BE1F89CDF913C0AB23451199098E20E200519014458408F55CF769916B900A08201C01300A2ED84CBDCD4875EBD3968B72AC47D6FDD9D341277F0F13C33FBE476FA8E8E5FCD7C4C7FAFC69B2A4E9AA4B4E2179B62470E06005901C061EF4EC195563108A8FE8A47E93C4F250F61702073ADB7535AB7135058333F1512F004E68C1233B6B0168703E964AFB177A82D8BA1C4A96083A8F7A12BDB0505990D95B3F8B197E5DA7AB84421BDE583B0E9E9753BE70BA570114DB9840A33E3E4C9C6A763C80EBFC97D34D6E934BC26BE37C743F4EF7B94D010F319BB0E74BA278DBBE633A49F90294075A0F27F1E34209A207EBB96477730B7ACC6A0D05F60F21A7678B9638391F226F91B2E79B615051796A62ED910C002AFC50A706AB68AC2A854A2A75300F5880F7D0E6B4FBAC9E9CFE989CB57E77EA4DA5B7BA1415429C97A16DAF33074F87EC96099C35FC2A01B4FF57B948FCB5D50CCCCDBE0662240796D7EC340FA2DDA273252F590BC44E8D11CBE34DAE4F0F8F76FCCE800FF9C8733E95DFB145A2F56E508E2EA567B8D1681797F3D31D5CB0B93987E5FCC4AB7C40CFEC82F9B2ABAA2DFE22ABFF7ADF513A3DFE0867BE55CC1DE3292AF7D34F22D2686593E6537B9DD00337A61601E163ED66736EC3C75AA13D757DC64E4DD14F069C7564EA061584F2B5EF96B28C1EC218C288845D17E05E14D5CEBF7D7425526A98BA8D05504B3F68A3F8066B8EACB199E193014E842D79F260D5F2673E74AF382A40081825820D9F9EB10FA009216EF3928A457B2BA00E184850A25F6C99F89EBB144931B47220001818258390076B0D16F5D09AC02DD1786981066F6FEDF7AC165A08B3B6F0FB33F039BF76872CE2FC9DEBC7C431CE4700EA060A5AEFDEC0A173D8ED6B4261A032D4D4D021A00029D59075820104A2697C9A493781B519E5D8261EFE9B94D921EC5FC4F1890800A957CA21B55A40081825820EF52C7F6EA9E0CB1A0ED270BBBEB1E07808A386DB77FD738B1F1076AB14E66C4000181825839009493315CD92EB5D8C4304E67B7E16AE36D61D34502694657811A2C8E32C728D3861E164CAB28CB8F006448139C8F1740FFB8E7AA9E5232DC1B0000000450E78E70021A0002AEB5075820849385BD8ECC595A27EF52DD145ABA067166FC745C1D940DF3D258605FEB79DA82A100818258209DD11E64A93710854FEDF85F1B4B23192079B812B67AC3EE0B97BDB1111380615840B41A3539134FB3F8D48F75C876830777CCD6043E9F85D8A2477DA041C5160BE2497BA851CFB19D30DEDEDB9C767CBD8063E1ABC9278A3AA400427A81F09FC709A1008182582073FEA80D424276AD0978D4FE5310E8BC2D485F5F6BB3BF87612989F112AD5A7D58407910E0CEDB222E4018BC1F11EA4D4EBEC6811A1B436610470E2377C6DE4EA28DF66E657A97E62B52964AC9F17558865D125FE46379576AC2544F05BA4ADD300DA200A11907C1A363636F3281A266736F75726365664D485A3031396576616C7565633438336868756D696469747981A266736F757263656553485433316576616C75656439372E326B74656D706572617475726581A266736F757263656553485433316576616C756563392E3401A11907C1A56641444142544381A266736F7572636569636F696E4765636B6F6576616C75656A302E30303030323937346641444145555281A266736F7572636569636F696E4765636B6F6576616C756563312E35664144414A505981A266736F7572636569636F696E4765636B6F6576616C7565663139342E30346641444155534481A266736F7572636569636F696E4765636B6F6576616C756564312E3639674254434449464681A266736F75726365667472657A6F726576616C75657132323637343134383233333435332E313180" - // ; const TEST_BODY: &str = - // "820585828f1a002f48651a0295ebd258209b7738d2f814cd6d5ded17c2d470c91cca0a3fdd25655543793998c2cdbd881858208f3455035ef9178d72699fa60dadb1e0a7e26f2a17499074155b3c4cfcbfef1c58205251058d5f98cdd68cd920e2e169c3eb849405ca438b70889928ab29de85ce5b82584028ed7802b66c4f003171d06ff4a23a71f635383f1a92e18d7317467274311f1a0df7234e07c608102f144171670cf140382b5303f48b80f1fa8b42fce686942b58501293eab0b20cfc34caed068c0011acea3c4d80e0021036bfededb502d79ff2ed885ef02108f7191ef169c3f5f8521e5f8dfa56c4b9b1d4029af63d43368ab8ddd59f99fa2260ae3b4bcb641be8a1900e825840000a6aa6b202e15ffd14a9058409bbd03443d8996323104133877e57622f290a2490544c50960a51758cc251fdc7de80a3298c607b8648d239487b1d29ee792d5850dd5f692fd4bc313282500acf5c765443930032655956710a28298e06883f702dee01ec51710b2ed1a061d422b64269427147eb22c40fb5b4b5ae407a8ddc812f0427eed2717c062975448e90c4876b01190b3658206541929d5ac907fe28a646eee3bc16fdf882292c179393447209f5e0df0c0d1c58203895e87ee01d33e288a4ff5cd00ae36b15aa9e8b29cc9c372d0a10837345b49809190134584091847ea1dc8397fcd79eb5378680ac884fd56efa7ef5f002676ab8d8c7ac16208c2792391099b12d17a24d22a4f9daecd865f678ea2cd305941a1ca94257210a06005901c0bbff78a1a0e725ffc15a241c77543e8126002066e5c8377346d725bf210c6883da08e0c4a0f6c56afb8db5408114f0905cb69b9200456eaea9ce25060470060484cc673a4294c20ec39d8384374f948279b2a61f421b98b09bcbaf7bdea18010a5b9c6a8881f7ac0263305f25f25e39dcb168b1729a3e8398ffe894475a7870d6fec76d1369bfd70349af2cf58849ca2f5f3d85ef39c33d9b1b91ab4bffef0e78f7672f301e02940f149465ee6e7d29cc5dc39e80aa666e8e1534798d0843c40233d79b5e7f203dd3f81274762933c1e80d8efe12e2bbdebccc0bf7d23e95445dd42c5077f29ff7efe8d62a7ddb88db4312f1c10c3beb25c2e8374ea67219af3ba4ed6a629a99dd0a94a6d73ebc3ec8f90826bfad87e191865a7a50ef75631536a979edf105aeaf87bdb13c0fc445020983433b250ad8ae7e2161651f664c77e8bf5364a37674a234875f005dea3c2723ec6c1d5133d01d814c47efec5fcd5136df4184439b904d8527d1c034fa62b3e86c7cfd83992b7a9ee203400cf0c8584bdcea505de9c913d92c660135749ca91254da93a1a5f7365afc061b21b3aa59283bac1a4d233142454fe3293ea1628c3e353d731e62ea57f93f11f264e5f5d5486a60081825820717c8f6669f2a23d9496cbafa9ad971d133da4bde9351320f31ead9e655af1ec01018382581d6073c79da74be41b27d2615aa6a37aae7b9ed198db98180734b787447c821a001e8480a1581ccfc88d2da7673f2f29a63167839bd100a79091826d7106b171010fb2a1524d495448554e4a4e465431757064617465640182581d604cb068cb16029a08b7c22826d26891e76ecfed27149a093d71ea10b01a3b1a568a8258390007b5bbfad7192d21b5ba5dab97550788f3624d84e53749d859923e79a4c3864ff1f301229f7327ed862c1742fda268acface349c5a71e77e1a001e8480021a0003330d031a0295fef407582005ee0d396af53845c6544c7d79b2af0202f30213ae3acf9a1956f2c2b838e29e09a1581ccfc88d2da7673f2f29a63167839bd100a79091826d7106b171010fb2a1524d495448554e4a4e4654317570646174656401a300828258209c1fd1890883594acf5aa650dcb3fb5575ae36dc716d65b7d35085226850a98201825820d86023cc0d6aaa5369ce5ed2f0b58cbab1a4a342dcaec3d0d3eb358770ccfc1c01018283581d70e1aa22984b9d5d1687d26f6a0f4ed33f106987107d7fe3acc345c0d2821a001e8480a1581c70a522742c69926a3e6da88afc76d3de6e1bda3ab9f1673bc6795b74a1434e4654015820a84c5151d5d712cb1e316a52ff79952adf66c15810db5a34a604ed047ce50c6e82583900f75dbc279ccbb34102e1db992d2a47c027da94d2fb88d561755e2ca7ff597e595e715fedd593998baa9af8574431cf129b089ab6dfcdf01c1a0197250b021a00029e35a4008182582039fd3ed2bbd79b2766c273e61aa9ace38e000eba137af488561da33e738fc2b5000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000450fa550b021a0002ae8907582058ba4cc38121377e3fd8fd562cad34713fce005dcbde64be58f08ea677b8c96da40081825820bb0368319dfb966ef87167ee46898457d858c51ada338796b13a57f255ee31460001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a033f9abc021a00029d5907582067d342508ab82f0d87afebb26827fbc06ba2b58fe209a8d704008a9871a47baca300828258208a8bc249d91f6bae06b8825d5228d6a4ce9eaf550d2aced0c7d0eeb12b8dee1b018258204cc72591ad435591277f4b3f62fe7a6280eca05eee9e8be58e6040ad14d93ed801018283581d70e1aa22984b9d5d1687d26f6a0f4ed33f106987107d7fe3acc345c0d2821a001e8480a1581c70a522742c69926a3e6da88afc76d3de6e1bda3ab9f1673bc6795b74a143536561015820e44f754a48df3c04f5adcbbda56bca03b28af7270c5ee1878f783b3a42648f6882583900f75dbc279ccbb34102e1db992d2a47c027da94d2fb88d561755e2ca7ff597e595e715fedd593998baa9af8574431cf129b089ab6dfcdf01c1a001d014a021a00029e35a50081825820d282ef2c00a9975ac7c96ed24d906ade50951ad2fe6fba62e48aad7bebfda1e700018282583900863c2608950c5fc9b7fefa84e73abd6be60799818c0f4a39d7af7fb956d9af2dfb01a0ae7f34beeea07bd7999ca3a4b92e5e3b38541974a1821a057d341aa1581cbef1e9c947d3a407bbca55d21e019d528109223e5c0e43bf1fe777b2a24b4e6175676874794e465433014b4e6175676874794e46543501825839009cfa4dddd8b4fe587e9b73d535c9523cba7f84108f769b4e49223eb1bfda8211a59fca51637ed369096bd12322a9777be665124f41940a9f821a0016e360a1581cbef1e9c947d3a407bbca55d21e019d528109223e5c0e43bf1fe777b2a14b4e6175676874794e46543701021a0002c591031a0296127c080086a2008282582084a01a897c93f0274bc303673c254707f21a29e058308dc7ac5ce9d5fd69999758407b16314b62d263e17aa2f405fbd039e70f94afaa70cf2dd3af8107ce644753a88d5a73190d8e257f79610ed73825432327eb0308978cac488cad12366e0c3e0b825820cdeec72572a90f767a2103aba0a1777b11300fa2c63219324c7a9a2f56e3d2e25840d21876c97c6b2832a293960052d15df06efd068f7edc24f126ca19f35d3f3744e6c2f56571e2341733556f756d25b822a54f4016e5055c2bde8e01f10df2f60401818201818200581c1b20a61dd889f311a93e11fec20456389895fd8785d3b288bde84eb2a100818258206acd90e62a869f8dd75ce2626660583c73169fa11f0fd367f892847596a545a85840c25b1a4a9b10789f82c314b4f24008f6ded239beb883a29bf4abe608c48a1d9c83d3c3d448094640fefccc1ddd5b3f9c70c36aaaf35d396a6ed0ba7448ab7c08a1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d584058096f18bde0125edd4cfaea75660f3988ad05f7d00f6e513896db2f9093f89d72ae7efc7eff220694153c5c9345e40dd55c2003d30aeb1c3fa9f3d747352803a100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb111138061584027be9ea45e07d0bde54848617c75191f78a4ed0d17dafbb689513bffcb9b9439f7a5f1cd4d865cdc15415c18fadf8c4dee10b688f38ceffa24a22e8f56267e07a100818258206acd90e62a869f8dd75ce2626660583c73169fa11f0fd367f892847596a545a858402aa77032686d47e19bafeff34b028b25d9a326193497d23edc4044e5d3156aa70d04a391d8195db381e9cd2b60c67fb08f97aa73f1d27493bc9c9651b0c0b40ea100818258208b6fbde6ba7536626b336faf851d5014e09f1b97eceb22b5c4074d7fdba7784f58402a649935b8a50b02f4634ed5fc395dcc1de5521261b669ea815bc6c72dd677c391ee166586d7938b2b49b165d4b3436910e1c60c2a45fb59d219e04826927804a30082a11902d1a278386366633838643264613736373366326632396136333136373833396264313030613739303931383236643731303662313731303130666232a1724d495448554e4a4e46543175706461746564a56b6465736372697074696f6e782474686973206973206d79207365636f6e64206e6674207573696e6720706c617466726f6d6566696c657381a3696d656469615479706569696d6167652f706e67646e616d656c74686973206973204e465431637372637835697066733a2f2f516d55736f3368446e6434583134794d33353866563748346f715471686839737a3138733273483151684c56573565696d6167657835697066733a2f2f516d55736f3368446e6434583134794d33353866563748346f715471686839737a3138733273483151684c565735696d656469615479706569696d6167652f706e67646e616d656c74686973206973204e4654316776657273696f6e63312e308002a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323936396641444145555281a266736f7572636569636f696e4765636b6f6576616c756563312e35664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565653139332e376641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3638674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313103a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438306868756d696469747981a266736f757263656553485433316576616c75656439372e316b74656d706572617475726581a266736f757263656553485433316576616c756563392e3480" - // ; - //const TEST_BODY: &str = - // "820585828f1a002f48a01a0295f35658209e7d7c1153f1053520ec5ddd5783c9abbce102a7ddaa6ad7b2f4d22b54b470a6582018968b08995cb3e970329170730bde3b963e0f62e7b230a2a6ceffff35abc1655820c971fa5ada9193edbc4d3aee97b9d128161211cef34f4eb0111093ea7924dae18258402e1fc5ac16e1720919efd6abd504f0a78fdff5ef6eab781f94d60809610ee83fbf9698dde10d978a6f2e1f71b4901cf3af3f02663335cc555ad09862bb3ae54a58505ec125dec3df7627369533888cfbade8f3e0aae164a80b613e98a36bb4c0d64a80f8c579d2036b652034a2665f8398c09cf0a3b6e81e5746ba8e1b73b03c7e97b1e44ff14d780fc187f5cb4f2de8c807825840002a1137e56b03f6115df82cd12ee998e70beb1d98db856e465f583dbf71b564279bf9d898dd4e60847be8de698502fd97c2a1c60c5416f697b2aa04a6beccb05850b23b27c316423e63de75900742ca6e47856cd82e8bdb2928e6f17bdbec08dc8523da214b99ca708258a7861238df0844eb38a2767429a61adc001566d9e41df1fec23b825ba6f77487d0bf77092ca70a191094582022bf0fb72c4ac84f89037aa744e776fe43a0f9804abec3eb905fc5caac3c8ab55820824b8822d5a267150ce11b114ca1ea152b08978130fad8e644df03cb16ca92ba061901485840f53189cd53d1c48deba8628941a22205dcf0745a630487e39b21391ebb9f6e73d0021b135a23f02d997a1fc5720fb6e63aee40d550be938bb99d4d532a33490706005901c076cb302384de7d9f9e994900373231b4f63c6c0c5a393272084d277230e88a5f0626e52655f8db35e63b0284612eedc546d3eb894e552346c9c787ad45c46303fb00ef5c772d32707fd92ccc4b21a780a4c3478e63f1cfc9e8b6ec68925940791d1c7e3436cdf95720a037900634296eb718442144340e0b19d3a80b01f86a34be6ee1689a915972c6036836c6963a4c74a20f19c02eb3ca9ebf31f1d89ad74faefb8003e6fa60d297c200aea07f84345ae19f3372cc4f2754548f4687098b529992a239f928c61b99deeac37c7bd2b687d0ed5880905a66affa56ac1a09ceadb28d87c3170e7b98798a7e3b584dd48826d65740c3a327eb2dd32999ddefba9bfdfcbde1b6046798ebc08f6c60a49b44b1a9900c50d62dfe40acae9090d93057a090a334ace22c00fe0235a80f2c77cd0cd580e1b9263e453bea4a0322e7f1b5aff9aa3383152bde5a576c9e6aa729151f5cd893278d97f120279b5a48c7a55c4a04e79f52416161c3354cb6fe90590ca8aff4374bef6fbff81eb362a8912a75c3deb4f786705a19218d259807b7b3c3fba05d1a35b88c0dd13cf2dac7ec36301cda9349f4983394504208a06e1a7dbe88b45ee547569b5c73dc7ea78b5506648ba400818258208cc730dab8e22eed4abb99431ac7b275c96abdb64440301d2a4394a1ab64e59b000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000450a1d1f2021a0002ae89075820a9ec7307739b1ce1c5e8c87a676d58f79e12ab0fb60fdd4854a208219c169355a50081825820f1a0e91f2f5b773ab3a4061da4d1c0c607ec5a38e2af29529f04b8b3e7715d6d0101818258390031e27b536478554a0ecfaa940d03c3a7fb712121e9e1b65ecbb2d852eacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd51a02f320e1021a0002a725031a02960ec5048183028200581ceacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd5581c5f5ed4eb2ba354ab2ad7c8859f3dacf93564637a105e80c8d8a7dc3ca400818258207ca4e57603b00b2bd661dae728aa46baaa069ec548f7edc9a020883a747811660001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a02ebf5a0021a00029d5907582052ab5e2532f7d1c84a8f6264d770d045298a477c5bfff36a8cc7645faca6c674a7008382582068853450ded7c467f83e18b6a455e9c45c283c6d42089f798b3ecff98f5d42d20082582068853450ded7c467f83e18b6a455e9c45c283c6d42089f798b3ecff98f5d42d201825820c8d7a4e800d00f9fda815057c226187fba5c9d530583eb06486e3d9fd389e2ba000d800182825839007370aef4c65746337a9b1aff5bf71c510d589aef387ba9f2ce4936691a097fae4c554c571526dda43b031f9556cf5167613d63ac1541d1c31a000f424082583900fe565b49cd91b26dc586e9af1cbbc489fd8cd9b3b0e1aa24e7a2a9521a097fae4c554c571526dda43b031f9556cf5167613d63ac1541d1c31a001e4638021a0002e951031a02960f240e800758208eca0841a79436578f9d579f28de834d0bf38272fe45229bc3af81ec25c3454ca600818258208cdd88042ddb6c800714fb1469fb1a1a93152aae3c87a81f2a3016f2ee5c664a010d80018282581d6095ca37fc71b3b73f2d0e57258ac66857661f33a509436c10917aaf6b1a0022e4be82583900f3a7ac77147d69c04060dcdc48b51271b3641f0c044ec4acb260af29719b6905b4122f96283e50a0dad9a9e577553ad49a17bbec3cb715181a2dc9876d021a00028f6d031a02960f2e0e80a30081825820cbf75d20e64f3e6ad301aa14906dbd8b2152993990d139b978ec4f451a739d3a01018282583900736fa1025c0a1d1966f4eeaefa6669d70f9c04c4c650286530d0bb5dd723da7bf8787357a74b3fa486b13462578ecf6ab6774dd4f15043681a1d34ce8082581d607c4a71a51d0c7400a15a748fa2338f20c8386f1ed4ebc56c2ffec4b01a00933c2e021a0002ad29a700818258204e66af4f8a441493809c8b0b2c4bb692fa70267fe2796c857dc892029f09abd5010d800182825839001c541902877bc024314618217cff3426ae99155377aad979122ac60ceacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd5821a004c4b40a2581cee1d198fd1b4ef0f8aa0238d19c55c22562252e46abe195e79f68762a14e53696e67756c61726974794e455401581cf5bb6672a26bdd5a956da1f09405181aedf10e640e01f87da06a4809a146676b636f696e0182583900f831861a4cb622e02a71d4d38285aacd928c4829686ee8c311ae6f012902a312156562e9c98cc869b6c8e5356d7b97cc3ea7398839a423e5821a015f76c0a5581c21c3e7f6f954e606fe90017628b048a0067b561a4f6e2aa0e1aa6131a14756616375756d7304581c65b2b0dd9028c871ac1997399979cfc12a7f05738e1ec8d8a16ea52fa15041616461476f6c64656e5469636b657401581c789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1a14874727565636f696e01581cdca984a3ab2c7b9691de0cf0e09227e19c06b2899500ed8e9279ab32a14001581cee1d198fd1b4ef0f8aa0238d19c55c22562252e46abe195e79f68762a14e53696e67756c61726974794e455401021a0002eb8d031a02960f4b05a1581de02902a312156562e9c98cc869b6c8e5356d7b97cc3ea7398839a423e51985590e80a6008182582094b342f0321154684f60cd01db8ed3744e7d3351cacb61f871058c0021e57b0f000d80018182583900a34918d5acc448cf11512bc4a9e62c245a5374971bba698f87787882579b8fbb80215c823394921c8c4a1bdc1775224446f98b266a92ba711a009354c2021a0002a885031a029600b50e80a500828258208d134553eb77b0fe32c09dcecab66f59f57d87fe766b64ee05a5775443ee994800825820b6f47b1ad870ec0eb9948f2b6f86bc5893e868fa1bc109d7bfe0f1d07038f5b6000d80018282581d60945c010ec1c1f884ed778c28b3c644dcc2da1c3b1df4a90924cc51de1a3aae2ef983581d70396c6cf112a57e057331bd72a9de740a9431d9f10a4bd0fd932472e71a0096026e58209ad30ffde0d1931ed4f145fa0a0d320a067051bfab1b08cbdb79e9f26df55df3021a0002a4bd0e80a30081825820b60d4a2d2b6de3c800c8700e3ffce731c9ac62e7347986d4a2e29ba41be7545b010182825839005a018206e2e47778d44f42548047555389504d42437d7e85839c604209d5fa01ce1155980099c5c28838cc74c7c61ea8997c77a22d95e8aa1a000f4240825839005a018206e2e47778d44f42548047555389504d42437d7e85839c604209d5fa01ce1155980099c5c28838cc74c7c61ea8997c77a22d95e8aa1a0058b481021a00029049a400828258200572697b862ba97fb2cdbd6e39de31bb15f57cf086a03092e3b0ef58f63568910182582043549de56f2a03b3471bd525a5d4684969c02d5d5396a575429dbabfc51c5f4801018282581d605d91fd94e2f6de8646b5f0bf2920fd8345db49168fd18ccca80215471a00989680825839008fc9dd9236b232fb122ca3213a4a2a56beac5153e7803223d705fc62326c990a273d2279ee1390b79423e134e648e791938dcde0dddf732b1a38c5d22b021a000292dd031a02960ec58ba1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d5840df40fb1382cbb46728313ffdb5db2835dcce37ec6295ff0948619ccc33b7b6dc2c425b72a7f92ebfc2abd2a2e67e1f020040d10155d847d671fcd8aa13918208a1008282582057b20c65f5f4ca24a4c86de3379ce811f416b313019ff306d2cac31f86bd00e1584097d965e9eac9f986c4a1b65a9ecc83258565a415ca0fe5e376a87ada105e126ee7091e3cf6bb21436ad84d25b0671a55121ec593063d0b1f57a9a46e0a601d02825820cc42fcbb811f0415074548124dcdb27769cd912ab38201d38b22cb79e7d8299158408000f7179bd3018580f88cc66948a871046a8bbe125f3d449342cf65187665104a5a6e7029a48f3b733a74b2dd8af825244f9840ca71cee4c7144ec33bda9d0ea100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb11113806158404f2c44294027640887820ac5145169920eb23c365686cf7424bc725d301702d15768de1f88556fbcb328f93c1ab106bb8573958e3d7f5fd4799c3a9912f49f05a100828258200726b0f1e20bba8b62d6ac14c7d3baf73f5bb5ca7325f7ca64a9c7f6c6c1df3558400ba2ca792d7376400bd3bc11c0eec4f7d7bdd0e16777c1642307ba3487eee1dfbed839e9bb35439f0676d3f95d37990e087b5a6043c461d2637bf0827f46030c825820a2c791779639d2702328025ed4b14df881fe3d787d557a5c80c9065498358874584011fc26df5e04c3c533f726d41d5fa93a6cd0e621e81cdc426affd74d908ae86391b475a57b77a1385c96b9f8099bb2c4173dac4a576953f60bcdc77ca8af0804a100818258209ff16abb82eb7a412d745a0067e67115d01403fa27985aac74c2576b4a3d7f9d5840dba0bd58a1e738ad8d710e1d93a3011034dde9de05e9b2bf4c6eaff5ecb02f5b5c577686be5395caa4505f72d574fbfcb1061384b6b4b0ce66578e109f1d090fa10081825820a87e24f3f590c98c9bc1f34e11607db0e04446afb3b02f3201b8a6972e50512d5840e1dbb81e62b73dae6e9dd89f43f8160eb17d29201ce41b3fc57a06e641fd04ce44b257ba72d0092cc8af5bc84a2b0fc1d9e91c0273e04c9beb135b376e34e900a100828258203238eab147de641e6622ef8c246c226e744ebbf0c9fc9db298588284719a56865840db728fc9eba7c9da33938b480516458c43f17d5c9edf2beaa27d08430f5d3c1c125e4a1825f4bb568299c28229692efcc8b8bab870224c5f39f1930151f3b003825820750bf509b6b984928302eee7535f89f2753fb553a825148bdbcd9d9e6087fb3258409d9cd0f3be0539e726b543112bc21c27d9095a02b391458d2c94ef55b4a04d63b970bae85b0d1304db46fa3777320a6a15231387ec7091b720f8d4615ff75405a100818258200843a5a078c1e763805be18de9c749bb163c6cf3e8ed07d9adc37eadc5e7fd8a58407a82f27445d8045a02a64265fe2cdabb5c268814c002b827b077264d52c5c346c01cd43558a30eb718ca17be97e23d3db5fdd2deb34204f7b6dd13f047409505a10081825820a685a3def8a62b3c2e0886d00b989e1cb2a58a8e733d3a3b1dcc88646d093ee9584084815079efb0fbffa9d62256d720e538d6efb331cc7dd7575e75f5b41aae3dbb6b9150cb0f0b256caba4825e7285c142c01f9376bee17395bd58581daafb2c0aa100818258206e38402e45654fe6f90c992568563993df0f9d0bc6e3a216647b01bc68529894584044abf4e6de63104443c7a63643893ee3d9b98c3a8592e10d9cf7f16c3107243ef197df9ab575c893fc421906f2b500a0f6d798718e080206d8c2adf64b1c680ca1008182582037952999164b486ec64f2e389161e66c3c2061374df660f4c342d91678c035d35840659c17e6f9c2247f35ab0f24e4c726c5f9a1b43092556cd171ee0bd699d839b06e183aebf360b202fdc458f839a65b5f6099d5682bcee7034d8dc65837231201a300a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323936396641444145555281a266736f7572636569636f696e4765636b6f6576616c756563312e35664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565653139332e366641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3638674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313102a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438356868756d696469747981a266736f757263656553485433316576616c75656439362e396b74656d706572617475726581a266736f757263656553485433316576616c756563392e3403d90103a100a119534da261760161638358401001229d010a03312e301295010a076d6173746572301247304502205098c7f0a34ffcbc6f5eea8e6cf68b80370fb8200227d885405fff3cedc5b3da022100a7584089ffddf74b658b31124cbc5850a52a638a6519ec07f79e0bae0a443acfdb9f1a410a3f0a3d123b0a076d61737465723010014a2e0a09736563703235366b311258222103ed5ff07ccb9402423bb1459646e447d1bd4c75d0c560b0a4afc4909166d90cec80" - // ; - const TEST_BODY: &str = "820585828f1a002f49f11a02961d1258208625fe26bc3dfbcecf420842a842bec9e1305fac4f28c8e2f37e8ba6581b29f05820c0e8222276d2ef82720ba25604295e72bc4a316146dda5b58d106d40d81695c958204aa65daf374ddff0977ba493e27fb798b446443058c0614a139a14c1a15572158258401198dafd503de57628945f8edb8115973c96f69cf9ed87f32d34450baf939f4a30abf357d8f723e54e836e8e9cc8708dae74cdd312cb622e514f6ffc21175f2258502a7b9994f69338e399134b8f9a6ab04d38ba423b45c24307236dfe43d12e68004aee90b9debada1b75bc25ae30230759043687212df1bd9a0bf566f99ff6fae40cd0ea849fa9bd3dc8dc1808a834be068258400000a06943c019059b8f276a9195cbac0725e2cf4506c254a67bd9d4e6e6cb2f03674d914c0f12f45382c7df5ab0d48cc1a99bd9b7f38a9a257a4f532ea2bcca5850aa66308381b70cfe744a1ee868b130c559c98379ad026bd6a4d464519e0dcd6d637e788eae4e79e92a1eff593c53ad46bbd0ca7700de813657503195a7ea29d6393ec8b26b127f1541e1087e870df00f190b88582066f00f57f5e9f2b9fec650f977ac61100521394727e11724d6639383b18cfddf58207ce755b43a53031b2e18adc034bf16cdf86fd4b0e280bf5fbcfacc8c31c916d005190134584053e0400bb413146b38b388a820f6b82723d74424962671b9fbc64e29cbdcbce7d1b65e1c38ae94f54d574d1fc9e05fdb2954d8ec48fd9aeb9174329bad48f80906005901c0968c11bbaae36df33471b0a8593fce483b326e218a3ac7f3f941fff6c128b3344f6047e7dc4ace6bec5e8b403189e3c632df0243b37646959c86e53d71b9f9026efc27474ab1c9222090330392fab9545ace4203e8e5b5815fc546d9726a3551748199310f38c82733d2c26a6eca9c455faad8490ad1117b82067f18247e733c48eb81f4f84ea91e2f8570a1e14ab6585c3ea81715482aae52ef28b8327216daa3335f88278fc3c5055c2b292d2f77af1d25c82890fb7d0c1c3974bcf30caa772405051c6c051ff36d5d4c1fdd661932aafc94d338b476751fbd938fa55868f45a43c643f2965d708313bdecdafdf1f467ed6e01edc770128304a4a5b12729f52f03dc1c4442eceb010261c8b13453816fa9e74adda29046cb9d5d19e41f7171cf4d32773b0df915b3c1dce5beca60bc65429f61410ea3c1382c8ae3992ae3051eda2a0dabb09d9d7c1c342be2818dcfad3b5f80672a3824540d4bc80e6aabc194d42f50b20633f9cb8f244cf6bd8781f16d71e09e9753b3add529dfd6fa8efd5131dd020216d4e1202d520dd5e2fc1c36729531e752c16e597a701668db814fafb003602f94e80c05de55d43212a8ab0914cb011ca570ee53fc40cf4d87b9cb87a60081825820fdd98cfa926529606b9fe2157a191a6a6ce727b96c73ef5032e510b4691ca71e010d80018282581d60840fea336b42703516ed3c7b9b41eae0a2be502db73af3a4a3b254ba1a0098968082583900be06ef0f986cd131166fc463984c7cb98ccc061bcf80a4a18c3dca5bc34679a0b5f341ff784f79a3aa86c92e4cd1faac06b853d823bb0f2d1a3a647e26021a00028f6d031a029638e20e80a40081825820e3a56dad9c47d1cc39663a00a408053fdb18472d6e46c103060552ece0f9ec1f0001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a00ee60c9021a00029d59075820f2aba5f8dce02f91959bf66a32cfb4967119a6e83caba1675354b0f61f1e03e1a40081825820cc4da7788291fb5bda0fb83170f86b992c05fa37f10d4c7c917da76bf7d860ef000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b000000044e8bf9cb021a0002aee10758202e47ee579cfe227820acb501d3092b71083df25ebbe443e93ec921fd3de010efa30081825820075906a8cea2f77bed033482e1fb005529315616904bf073a2daf3d7d5c48b5b01018283581d70335a82969b5bb6147f6adcab3d933b55ddd43c92e47decbc7f5eba661a0016e3605820f0bfb1af4b8c8aebe45307269f1c14a4a26995eaa9c0dfb188714491d8e44883825839001ccda49705cc7fca4b045ebf4c5c86b87910e0bc2d43a21b85f58ce6dd281dff622d735a69da8b141c3911fab6672ae220b72e277a14b2a7821a01d8f548a4581c252394c48330c6d6ba5956411eacd8435544d4116e2066f5210ff4bfa1447465737401581c6f907e5a0d2210834a6cdbeefec7926795970554585a913953c8e674a1447465737401581c8a1712b0a91b1f59b2efab8770542a5d5b1cfd33f83af46f5376b4e8a15346616b6543617264616e6f426974733437323001581c8e58635cbf59622d4a7a79a9bec3e218db28044865356cef284d45cda14e4c6f72644279726f6e433130333301021a0002af91a50081825820ab1fbf8d3e6f95d6d4569242cc51591c3edd02664c4dfb34db261be3b047db23000d80018283581d707e53f44aee9de0f0bc82bdfa5bc7708b523d4ed9d2b5814022a5b5a51a009896805820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec8258390089a267137d6146caa5da09d35ea0d392ae8cc16ec7dbb3e5e386cb0facbf92455bc1e79b0fec250dac2434e423d366e4c1005c8f9bd4fe141a3affa22f021a000291510e80a40081825820d9ad3802cb03910a083fcd4cb8bb7b74946db6a8f94d2e9dae4ab5e67d6ea7060101828258390017ad91a87733b817b8fb98bbf26b23ef02f6b35593c53d402986d58e32ae37093a67c37d6c4c8240fa0e3cbfa390ca7ce2c99d4692b14b85821a0014851ea1581c6cc71ef32ef3ba487f075c1437b5a66404fa5e32c90d4771db88efaea14874657374666972651927108258390065645a7ef481423df8ea5421f7df989b2baff43f8fc65d93736b7a9187c52f925f00774ed681b53046e180a04fe04c569af137663e42c92e821a076aeb58a1581c6cc71ef32ef3ba487f075c1437b5a66404fa5e32c90d4771db88efaea14874657374666972651a00153f61021a0002a071031a029620a2a700818258207497675581872f9d6fc34eabd1a42487ea95538bd2993c349d9e82f147ef1b26000d80018182583900065c5205593b8796558d5693eaef45ca92f70dacc7ffcc005dc744e39bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c1a3b97ed67021a0002dc99031a0296203904828a03581cd15ffafd9926e1f8f5359d264f2116c3025db67fd0080ec22339296d58206b9b0891f314d2bff7c86ed00e677ce4c91cc65682ac9f23cba9297072f064771b0000001176592e001a1443fd00d81e820114581de09bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c81581c9bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c8284001917704447f4a4cdf684001917714447f4a4cdf682781c68747470733a2f2f74696e7975726c2e636f6d2f353872327772763258209a594651acc7c102fb98ee9336069552ffe0720d8a6c8f4a0d21c4ed43c1fbfd83028200581c9bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c581cd15ffafd9926e1f8f5359d264f2116c3025db67fd0080ec22339296d0e8087a1008182582084834e0f88170f561f39de65e3a063938fefa17c1e48d22037fb5ef73dc36fb05840c1436df33f721f26149226343d714ec1ea5683d75637a2fcf4dd968aa92ed77cc1a30479ebeb08aecd90cf6eb14af172a6fed9f18ef4cf4386dcaf96b4a8950fa100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb1111380615840c3249e7d4f92d68b26c3669e4323ab163867c3324dbf01f76e468d8ad3d1af509a77d7d27adbb5080cfe5f72e0fb048744505438e2df282c95777931d0d1c70ea1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d58409ccfab2aad1165c78f2feddc807814e418f78ee08d6881b4c5369f7dc26003b954ab22304dbeba3f3c73e68eeb917fc94bce42ab15932bfea99b678caf4dd90ca100818258207046c06dee5f2bf959575f97b753c6724cca4ed69c29c83dc00598ab3b20dac6584006d9fafbb13d77262d4f6e36eb7249a77cc3188485cfc843eb23d17a1dad751b4268a24f249792c6b92f8d5cf80a7553fca1c50a951ac66eb78e251a70512602a10081825820c2923fc4c9b2a917413a0634e15be376832ee9274f87f40235a976503f26d03458401324ae6e48d914f4b8bf05b1516d461fb973e8cac8f15ff21de8977d8889a29e59259cf9e8a2b64b085f139942c0948861fa756fda2cbd810e81f5c51856d00aa10081825820ba8104249b5968ff681edb118f536ca7ebee340b88755c02a3d392763549687a584093fd3a634ed0edc523982afdc9adca6b6ef2222a7034be38c3c48616008a8ef58c99f4966633d61746c77f124a1b64b40ebc19f23b4018c2008c60dae1bfec0aa1008382582045e178eafb75d7ea928f6581220442b07c62d099791133aa7692d1bc41a96d5058406741fdd0822a0da3f0e09d88113e82be0083a6028a2049c578711aa9c694448f27f33f9737c4569ed660f20231c6e3021cb4a97fa8556fadff563867ac2df806825820e97f03551fd1ada110c60240827c425133c15bec3352a58033e4c61bbd3f906e58404b9eebed98c1fd8284a39a80af2acc84a6685ebfbafa9b15e9f8d782f6d2535df483420c1cf2ad42c5e96dc5e1a1f20451d5b667cbe1bdb7b1e5d90326a3730c825820be317f81ebbe422117ffa84edf4ac779824683771c2c30774e02285551434a675840302e7a7e4ba12cf462896dae66a9c7491b882559424f0dc0e764b28ffc086ceaf1df52a369cb4d2c5ea59c55ea12104db90255f07e7b99ec32b8242b5e327d0aa201a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633437326868756d696469747981a266736f757263656553485433316576616c75656439382e316b74656d706572617475726581a266736f757263656553485433316576616c756563392e3502a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323932386641444145555281a266736f7572636569636f696e4765636b6f6576616c756564312e3438664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565663139302e35336641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3635674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313180"; const TEST_HEADER: &str = "828F1A006215E21A029D10A85820FF8D558A3D5A0E058BEB3D94D26A567F75CD7D09FF5485AA0D0EBC38B61378D458207A353CDFA0A5B5471BF05156097A4304DE6C9379E2937ACA6A00F954A2DC55CC582012DA72FCEAA4D03F6F409AF2AD2521C305082406B5AC24CBEE77CA3973B387BE825840988C010910CF4704EFF43B40F9B03868EF463546D942B8742BB4CFA78EB3E504BEAB8559D15F1D7F441BFED8265DACFCD96EE0D6744F08C4D4BFC07EF65A363D58508A66A6753E76E26285C30E18AC08EC683DE384A0EC710C94255A3392C1A500EB4A2737DE258640ADCB3B7CF98C431D2226DC5EFB8F61C941D5EA05469463396AF349FAB2AFF61E9FED64C5FE897651018258400000E31D3B969A44D385CFF79B9B0494675DF6A219438D551AD416BA2435216E3A712D3003EA97B638FEA979FA4405413694032760657D853882E8039071653F5850DCD355FC6F70D1D209EFC9120C9237A1F47EA3840473676766DA9867DF64058C7CB561466752D01E5439CBCA72EED20E042EFA9FE3167AD1A787D9D44A1219378F8BB1C62274C9246CF4BC99F4515304190A2F5820015D41B6EC5AC1DC88155B344E45B5A8D098C334CB997D3AC82A0571DAB5064558203BF4F4A527C0D227189F919893417AD461B8529E71BBD27E4ADE1EE20E8295F20519011558404F669665A14F8608608D848E3E8E61A9C17AFB55B4905C4ED3F3AC3152F0C8C9BA41ECE8607D240C33F5F2AE26FEFCF8422710E94261EA8152FBB7DC48BC0D0706005901C0B7F86863A0AA72E1693DC817A59F35104D5F26139CFAAB4F2EB7F39CA65B7BF31A0B52BA849DA4382369872E542585F153D888FA71799596E0CCF507074362066C4ED9F18E9F7D692487BC23679F561F5053A6AE0D79B3DA2C3C1DAF6FEAA8D8599417B409ABE17407EC339FEBFDBF4956C37925EE6448F44FE6AA0E715CC27E973CF28D21F1F5A40708BA7C229D282F152B95D6C7AEB9944E914FC68AFC1491B7DD883509A9D32F8B32FD078D1C0ACDEF06B4DF2908C07CC75405AE5B7C3829B92917E4B2A284F9ACEE94F2E17958AAC21EF0AC4E0D891081BCA96E0CE6907B5BEF9092340F5D6D9F249B02FC28024F7CF7560292B140FC656AD70BF915B4739092FF52CE23721E12340416AA9A22CC53801D98FB283873936609DFAA9A7F16028A2CE69FDF40F905E18DFE3148BB7B0B912B0FACD2F73B56E2EA7288C877356F36F0CFE2C0DD45A1C0C41F461A2AF154853F309BA97D1CF3AF539DDCB457DEE6032F2CE5E44638B56A60391DFBC50C3F05D86690B5B652FB45AC7ED62B06099B54257A6E0BDB91164172D4635BF2F3ABE85015414FAC2E7CBED797DF9211531422CA3F66B24FBE71A970649CCDD77DFF498AF535E38B7365A5DF0F9C12836C"; #[test] fn block_decode_works() { - let bytes = hex::decode(TEST_BODY).unwrap(); - let block = Block::try_from(&bytes[..]).unwrap(); - //println!("{:?}", hex::encode(block.header)); - println!("{:?}", block); - //assert_eq!(block.header, Header {}); + let test_blocks = vec![ + include_str!("test_data/test1.block"), + include_str!("test_data/test2.block"), + include_str!("test_data/test3.block"), + include_str!("test_data/test4.block"), + include_str!("test_data/test5.block"), + include_str!("test_data/test6.block"), + include_str!("test_data/test7.block"), + include_str!("test_data/test8.block"), + ]; + + for (idx, block_str) in test_blocks.iter().enumerate() { + println!("decoding test block {}", idx + 1); + let bytes = hex::decode(block_str).unwrap(); + Block::try_from(&bytes[..]).unwrap(); + } } #[test] diff --git a/pallas-alonzo/src/test_data/test1.block b/pallas-alonzo/src/test_data/test1.block new file mode 100644 index 0000000..bc63592 --- /dev/null +++ b/pallas-alonzo/src/test_data/test1.block @@ -0,0 +1 @@ +820585828f1a002f48941a0295f18a58206fe2f80eb8cf6ad02d3a3857391b05aef41e575486168d7c36ab693be24c76f25820e7c3155586042372b19c1fe0491b771bfb2eb04f24af76f3870cda983551f4e75820d8ae2a59f1ff6ec33d0df8161fd89d820533b9580a4e43f4e9f6a628582b10ae8258402b498e5bd3f73130e1b7e5ac199fac1a688d948d73d71ec7a951913a6543131c44dcdba5215341b1dc2581c096e99fcf5885f42a9cdcf476322b38cc837111b858508f08dc2bc1e3c6c8a3e6f7f5f1d7af8d2ad33c4d31022f4777641a946938ba0c3af0f78076cae00ab741f4d39dec2be431710acfe55d2b3f5868b24847506b77fb42d639e95bdd025f5f406abec9240f8258400022f7e10e560aad60a6f16b743ff04b4abcd4ba9b572e02c67bde6defd29290a9345b3c1b28ee1dfdadf631a3887bc21807ec5bcadeb6a495f3cde7cfc0b1085850e6db5933067747401ea665a7d8fdb5a0ae131bfa757aa07e2b3fa619e0d94245233806ebf7340826f076f6ff62fe4600e427643ed77e3f02be7c39370c7d46f266e4f5a23c2cee05735e2152b1a73c0e1906965820c48e87eaae5983daca6d2611e5b45a09c4a8300ed2e36f747058761b976c2303582060ffa1e3c1ab6d03a5447d2f40ab023dbce45b13f0e372d63a964d31c7ee60790619014858405915c6868aa7c19b007464392dd4878f710c033e83d1421e188a993dc13a66c3bd60454228eb8105a3d37509ef0302633e42d4b20f86003a83b25a87b8b1ae0c06005901c0eac3f1484e8d6278c81251ce80767faa39153ae2c509795065f6859d87e5ca60356f2e0528e26441091d5fe855b430659f8c113b8e090ac7b5dc2a3f55811b09ff956db28c653766bcd95ca7ed09a8e0c744b75c4cac7b48561ad922978a866bb9014ce731cf098a346d58fd9602b5c712c587cb4ad2d31fc3c869b1d68fa3eb53c94453e0fa42c15686ace90df691b14f1372eb7e86897c0f22d26ae043b105978b6652d4144c7a3c5ef9b61e7d46403acbbf158075e31e4d45969ec968b62a27c05f4c2c8448da438d9b2b0f98a6df9245326476310ac26b164ff0b40e3b7e1f05c38d227f5b9ab87d82c7b64af3351a636ccdb951b6445f7909e56507f301b267d9780335863b3ed7d3ba16ebca3e9b77bc3ddee15436279b3a33eca8dc66a87b2864a550b003dc43622aab8183e891780ab8cd56fcd4ae28775ad6b69a786e19fca6362905d65d92f3b59f8259c1e1f52a8fe125d29c3dda7fcd45c7c71eff039986ce812e9a1f66f6795f53857ac57d32901f6a1992e42e7c8d7a942d25f77f46beb8e4cf801c80372c958face6b1a9dfacc38182310d66ad4816a08b329451c088889a2cb62fedac1944addffaaa0a8dc5cb54b2974b70411226918b8285a40081825820bf1f12a83095ac6738ecce5e3e540ad2cff160c46af9137eb6dc0b971f0ac5de000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000450b745b6021a0002aeb5075820f607381cf971f3ab1119ad680f73bcc66c8d8d30136afbf82fe05f44f7924487a40081825820df4ebe9ac3ad31a55a06f3e51ca0dbaa947aaf25857ab3a12fe9315cabec11d30001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a02fe430f021a00029d590758200013eb4278b47fcc6298f02bd42b31c919cef864dd20a9929d5eee315e13a557a60081825820087138a5596168650835c8c00f488e167e869bd991ef0683d2dbf3696b0e6650010d80018282581d6095ca37fc71b3b73f2d0e57258ac66857661f33a509436c10917aaf6b1a0022e4be825839005790dbdd97b76eb273e290122d6edb7504ed392c7ea7b011bd25d936719b6905b4122f96283e50a0dad9a9e577553ad49a17bbec3cb715181a2deefb98021a00028f6d031a02960d5d0e80a80081825820cc9f28625de0b5b9bbe8f61c9332bfda2c987162f85d2e42e437666c27826573000d80018182583900be8bb38da7b499acdb1eac0c05dd2649c8de5d791ac87969903df470244805c91110d844e9f4a776a5f201c71313358c13caaa3ee7b488e6821a00bade29a1581c6d566ad1e649b6e86a2f4fa16a4cdf99616230b78742332cbabc5fa4a140183b021a0002c959031a0296183b08000e8009a1581c6d566ad1e649b6e86a2f4fa16a4cdf99616230b78742332cbabc5fa4a14020a30081825820d0965859ce9b3025ccbe64f24e3cb30f7400252eb3e235c3604986c2fdd755db010182825839000e87d178321157275dd6a10f9c40ead38a78ae4703a23a23be57f1cad723da7bf8787357a74b3fa486b13462578ecf6ab6774dd4f15043681aa0eebb0082581d607c4a71a51d0c7400a15a748fa2338f20c8386f1ed4ebc56c2ffec4b01a02f59afe021a0002ad2985a1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d5840abe07f7afebbcfd1816e2f70b66cbe2a0be6a46db86fa783949e4319e203e8faed12930489841f287dde09d00c5d1ed15bc4d47ba1e1deba2bf59350fcadec0fa100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb11113806158404cf3a0c85491d39ef8ef91dc5b34107da610376301b53ebb2a7ce7c2b8397f6871890f1bf875e8f964146dd7107ddb89b08c343e0d4561481ff5b9e9b7f3ec09a100818258200530deb7fd4edb6b32e312806c7231d3c507f53fc27d5894c14a454936b16a435840369d46b7c720cbd253327c45861c0be0c741babd4b82a29c42c531fbc87562e40496934689289162082eeefe583e3dcd89aeeda671457d30bc21e5f9ba2b8e07a200818258208b5a5251b8a3f1f1b76e38377b3cf857d38284cfa48a2eee46c93df89221e0275840cfc689b9ab1ebc2dcec3f27fba6448b610b4bbbe46ec430c7e9e86ab0b454ca9b3b08efb6e843783f860512b8f2aaa142073766a7fb43ab6ca7ac5ac426f680f018182018282051a02b5a9468200581cbe8bb38da7b499acdb1eac0c05dd2649c8de5d791ac87969903df470a10081825820a87e24f3f590c98c9bc1f34e11607db0e04446afb3b02f3201b8a6972e50512d584018f04cd87d600d8fbd03d1292e4e16cd3ee4f8fc3cc6e504216373e1a8bf8826e17e365931e988e025b2345a390e9e6bbd78f0b0abcb24e0d238df7592570b07a200a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323937326641444145555281a266736f7572636569636f696e4765636b6f6576616c756563312e35664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565663139332e39386641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3639674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313101a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438306868756d696469747981a266736f757263656553485433316576616c75656439362e396b74656d706572617475726581a266736f757263656553485433316576616c756563392e3480 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test2.block b/pallas-alonzo/src/test_data/test2.block new file mode 100644 index 0000000..32f5083 --- /dev/null +++ b/pallas-alonzo/src/test_data/test2.block @@ -0,0 +1 @@ +820585828f1a002f49f11a02961d1258208625fe26bc3dfbcecf420842a842bec9e1305fac4f28c8e2f37e8ba6581b29f05820c0e8222276d2ef82720ba25604295e72bc4a316146dda5b58d106d40d81695c958204aa65daf374ddff0977ba493e27fb798b446443058c0614a139a14c1a15572158258401198dafd503de57628945f8edb8115973c96f69cf9ed87f32d34450baf939f4a30abf357d8f723e54e836e8e9cc8708dae74cdd312cb622e514f6ffc21175f2258502a7b9994f69338e399134b8f9a6ab04d38ba423b45c24307236dfe43d12e68004aee90b9debada1b75bc25ae30230759043687212df1bd9a0bf566f99ff6fae40cd0ea849fa9bd3dc8dc1808a834be068258400000a06943c019059b8f276a9195cbac0725e2cf4506c254a67bd9d4e6e6cb2f03674d914c0f12f45382c7df5ab0d48cc1a99bd9b7f38a9a257a4f532ea2bcca5850aa66308381b70cfe744a1ee868b130c559c98379ad026bd6a4d464519e0dcd6d637e788eae4e79e92a1eff593c53ad46bbd0ca7700de813657503195a7ea29d6393ec8b26b127f1541e1087e870df00f190b88582066f00f57f5e9f2b9fec650f977ac61100521394727e11724d6639383b18cfddf58207ce755b43a53031b2e18adc034bf16cdf86fd4b0e280bf5fbcfacc8c31c916d005190134584053e0400bb413146b38b388a820f6b82723d74424962671b9fbc64e29cbdcbce7d1b65e1c38ae94f54d574d1fc9e05fdb2954d8ec48fd9aeb9174329bad48f80906005901c0968c11bbaae36df33471b0a8593fce483b326e218a3ac7f3f941fff6c128b3344f6047e7dc4ace6bec5e8b403189e3c632df0243b37646959c86e53d71b9f9026efc27474ab1c9222090330392fab9545ace4203e8e5b5815fc546d9726a3551748199310f38c82733d2c26a6eca9c455faad8490ad1117b82067f18247e733c48eb81f4f84ea91e2f8570a1e14ab6585c3ea81715482aae52ef28b8327216daa3335f88278fc3c5055c2b292d2f77af1d25c82890fb7d0c1c3974bcf30caa772405051c6c051ff36d5d4c1fdd661932aafc94d338b476751fbd938fa55868f45a43c643f2965d708313bdecdafdf1f467ed6e01edc770128304a4a5b12729f52f03dc1c4442eceb010261c8b13453816fa9e74adda29046cb9d5d19e41f7171cf4d32773b0df915b3c1dce5beca60bc65429f61410ea3c1382c8ae3992ae3051eda2a0dabb09d9d7c1c342be2818dcfad3b5f80672a3824540d4bc80e6aabc194d42f50b20633f9cb8f244cf6bd8781f16d71e09e9753b3add529dfd6fa8efd5131dd020216d4e1202d520dd5e2fc1c36729531e752c16e597a701668db814fafb003602f94e80c05de55d43212a8ab0914cb011ca570ee53fc40cf4d87b9cb87a60081825820fdd98cfa926529606b9fe2157a191a6a6ce727b96c73ef5032e510b4691ca71e010d80018282581d60840fea336b42703516ed3c7b9b41eae0a2be502db73af3a4a3b254ba1a0098968082583900be06ef0f986cd131166fc463984c7cb98ccc061bcf80a4a18c3dca5bc34679a0b5f341ff784f79a3aa86c92e4cd1faac06b853d823bb0f2d1a3a647e26021a00028f6d031a029638e20e80a40081825820e3a56dad9c47d1cc39663a00a408053fdb18472d6e46c103060552ece0f9ec1f0001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a00ee60c9021a00029d59075820f2aba5f8dce02f91959bf66a32cfb4967119a6e83caba1675354b0f61f1e03e1a40081825820cc4da7788291fb5bda0fb83170f86b992c05fa37f10d4c7c917da76bf7d860ef000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b000000044e8bf9cb021a0002aee10758202e47ee579cfe227820acb501d3092b71083df25ebbe443e93ec921fd3de010efa30081825820075906a8cea2f77bed033482e1fb005529315616904bf073a2daf3d7d5c48b5b01018283581d70335a82969b5bb6147f6adcab3d933b55ddd43c92e47decbc7f5eba661a0016e3605820f0bfb1af4b8c8aebe45307269f1c14a4a26995eaa9c0dfb188714491d8e44883825839001ccda49705cc7fca4b045ebf4c5c86b87910e0bc2d43a21b85f58ce6dd281dff622d735a69da8b141c3911fab6672ae220b72e277a14b2a7821a01d8f548a4581c252394c48330c6d6ba5956411eacd8435544d4116e2066f5210ff4bfa1447465737401581c6f907e5a0d2210834a6cdbeefec7926795970554585a913953c8e674a1447465737401581c8a1712b0a91b1f59b2efab8770542a5d5b1cfd33f83af46f5376b4e8a15346616b6543617264616e6f426974733437323001581c8e58635cbf59622d4a7a79a9bec3e218db28044865356cef284d45cda14e4c6f72644279726f6e433130333301021a0002af91a50081825820ab1fbf8d3e6f95d6d4569242cc51591c3edd02664c4dfb34db261be3b047db23000d80018283581d707e53f44aee9de0f0bc82bdfa5bc7708b523d4ed9d2b5814022a5b5a51a009896805820923918e403bf43c34b4ef6b48eb2ee04babed17320d8d1b9ff9ad086e86f44ec8258390089a267137d6146caa5da09d35ea0d392ae8cc16ec7dbb3e5e386cb0facbf92455bc1e79b0fec250dac2434e423d366e4c1005c8f9bd4fe141a3affa22f021a000291510e80a40081825820d9ad3802cb03910a083fcd4cb8bb7b74946db6a8f94d2e9dae4ab5e67d6ea7060101828258390017ad91a87733b817b8fb98bbf26b23ef02f6b35593c53d402986d58e32ae37093a67c37d6c4c8240fa0e3cbfa390ca7ce2c99d4692b14b85821a0014851ea1581c6cc71ef32ef3ba487f075c1437b5a66404fa5e32c90d4771db88efaea14874657374666972651927108258390065645a7ef481423df8ea5421f7df989b2baff43f8fc65d93736b7a9187c52f925f00774ed681b53046e180a04fe04c569af137663e42c92e821a076aeb58a1581c6cc71ef32ef3ba487f075c1437b5a66404fa5e32c90d4771db88efaea14874657374666972651a00153f61021a0002a071031a029620a2a700818258207497675581872f9d6fc34eabd1a42487ea95538bd2993c349d9e82f147ef1b26000d80018182583900065c5205593b8796558d5693eaef45ca92f70dacc7ffcc005dc744e39bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c1a3b97ed67021a0002dc99031a0296203904828a03581cd15ffafd9926e1f8f5359d264f2116c3025db67fd0080ec22339296d58206b9b0891f314d2bff7c86ed00e677ce4c91cc65682ac9f23cba9297072f064771b0000001176592e001a1443fd00d81e820114581de09bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c81581c9bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c8284001917704447f4a4cdf684001917714447f4a4cdf682781c68747470733a2f2f74696e7975726c2e636f6d2f353872327772763258209a594651acc7c102fb98ee9336069552ffe0720d8a6c8f4a0d21c4ed43c1fbfd83028200581c9bec88f3ab280470a2015aac2d90a8e28561928a60b92a6594ebb53c581cd15ffafd9926e1f8f5359d264f2116c3025db67fd0080ec22339296d0e8087a1008182582084834e0f88170f561f39de65e3a063938fefa17c1e48d22037fb5ef73dc36fb05840c1436df33f721f26149226343d714ec1ea5683d75637a2fcf4dd968aa92ed77cc1a30479ebeb08aecd90cf6eb14af172a6fed9f18ef4cf4386dcaf96b4a8950fa100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb1111380615840c3249e7d4f92d68b26c3669e4323ab163867c3324dbf01f76e468d8ad3d1af509a77d7d27adbb5080cfe5f72e0fb048744505438e2df282c95777931d0d1c70ea1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d58409ccfab2aad1165c78f2feddc807814e418f78ee08d6881b4c5369f7dc26003b954ab22304dbeba3f3c73e68eeb917fc94bce42ab15932bfea99b678caf4dd90ca100818258207046c06dee5f2bf959575f97b753c6724cca4ed69c29c83dc00598ab3b20dac6584006d9fafbb13d77262d4f6e36eb7249a77cc3188485cfc843eb23d17a1dad751b4268a24f249792c6b92f8d5cf80a7553fca1c50a951ac66eb78e251a70512602a10081825820c2923fc4c9b2a917413a0634e15be376832ee9274f87f40235a976503f26d03458401324ae6e48d914f4b8bf05b1516d461fb973e8cac8f15ff21de8977d8889a29e59259cf9e8a2b64b085f139942c0948861fa756fda2cbd810e81f5c51856d00aa10081825820ba8104249b5968ff681edb118f536ca7ebee340b88755c02a3d392763549687a584093fd3a634ed0edc523982afdc9adca6b6ef2222a7034be38c3c48616008a8ef58c99f4966633d61746c77f124a1b64b40ebc19f23b4018c2008c60dae1bfec0aa1008382582045e178eafb75d7ea928f6581220442b07c62d099791133aa7692d1bc41a96d5058406741fdd0822a0da3f0e09d88113e82be0083a6028a2049c578711aa9c694448f27f33f9737c4569ed660f20231c6e3021cb4a97fa8556fadff563867ac2df806825820e97f03551fd1ada110c60240827c425133c15bec3352a58033e4c61bbd3f906e58404b9eebed98c1fd8284a39a80af2acc84a6685ebfbafa9b15e9f8d782f6d2535df483420c1cf2ad42c5e96dc5e1a1f20451d5b667cbe1bdb7b1e5d90326a3730c825820be317f81ebbe422117ffa84edf4ac779824683771c2c30774e02285551434a675840302e7a7e4ba12cf462896dae66a9c7491b882559424f0dc0e764b28ffc086ceaf1df52a369cb4d2c5ea59c55ea12104db90255f07e7b99ec32b8242b5e327d0aa201a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633437326868756d696469747981a266736f757263656553485433316576616c75656439382e316b74656d706572617475726581a266736f757263656553485433316576616c756563392e3502a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323932386641444145555281a266736f7572636569636f696e4765636b6f6576616c756564312e3438664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565663139302e35336641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3635674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313180 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test3.block b/pallas-alonzo/src/test_data/test3.block new file mode 100644 index 0000000..36b471c --- /dev/null +++ b/pallas-alonzo/src/test_data/test3.block @@ -0,0 +1 @@ +820585828f1a002f48a01a0295f35658209e7d7c1153f1053520ec5ddd5783c9abbce102a7ddaa6ad7b2f4d22b54b470a6582018968b08995cb3e970329170730bde3b963e0f62e7b230a2a6ceffff35abc1655820c971fa5ada9193edbc4d3aee97b9d128161211cef34f4eb0111093ea7924dae18258402e1fc5ac16e1720919efd6abd504f0a78fdff5ef6eab781f94d60809610ee83fbf9698dde10d978a6f2e1f71b4901cf3af3f02663335cc555ad09862bb3ae54a58505ec125dec3df7627369533888cfbade8f3e0aae164a80b613e98a36bb4c0d64a80f8c579d2036b652034a2665f8398c09cf0a3b6e81e5746ba8e1b73b03c7e97b1e44ff14d780fc187f5cb4f2de8c807825840002a1137e56b03f6115df82cd12ee998e70beb1d98db856e465f583dbf71b564279bf9d898dd4e60847be8de698502fd97c2a1c60c5416f697b2aa04a6beccb05850b23b27c316423e63de75900742ca6e47856cd82e8bdb2928e6f17bdbec08dc8523da214b99ca708258a7861238df0844eb38a2767429a61adc001566d9e41df1fec23b825ba6f77487d0bf77092ca70a191094582022bf0fb72c4ac84f89037aa744e776fe43a0f9804abec3eb905fc5caac3c8ab55820824b8822d5a267150ce11b114ca1ea152b08978130fad8e644df03cb16ca92ba061901485840f53189cd53d1c48deba8628941a22205dcf0745a630487e39b21391ebb9f6e73d0021b135a23f02d997a1fc5720fb6e63aee40d550be938bb99d4d532a33490706005901c076cb302384de7d9f9e994900373231b4f63c6c0c5a393272084d277230e88a5f0626e52655f8db35e63b0284612eedc546d3eb894e552346c9c787ad45c46303fb00ef5c772d32707fd92ccc4b21a780a4c3478e63f1cfc9e8b6ec68925940791d1c7e3436cdf95720a037900634296eb718442144340e0b19d3a80b01f86a34be6ee1689a915972c6036836c6963a4c74a20f19c02eb3ca9ebf31f1d89ad74faefb8003e6fa60d297c200aea07f84345ae19f3372cc4f2754548f4687098b529992a239f928c61b99deeac37c7bd2b687d0ed5880905a66affa56ac1a09ceadb28d87c3170e7b98798a7e3b584dd48826d65740c3a327eb2dd32999ddefba9bfdfcbde1b6046798ebc08f6c60a49b44b1a9900c50d62dfe40acae9090d93057a090a334ace22c00fe0235a80f2c77cd0cd580e1b9263e453bea4a0322e7f1b5aff9aa3383152bde5a576c9e6aa729151f5cd893278d97f120279b5a48c7a55c4a04e79f52416161c3354cb6fe90590ca8aff4374bef6fbff81eb362a8912a75c3deb4f786705a19218d259807b7b3c3fba05d1a35b88c0dd13cf2dac7ec36301cda9349f4983394504208a06e1a7dbe88b45ee547569b5c73dc7ea78b5506648ba400818258208cc730dab8e22eed4abb99431ac7b275c96abdb64440301d2a4394a1ab64e59b000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000450a1d1f2021a0002ae89075820a9ec7307739b1ce1c5e8c87a676d58f79e12ab0fb60fdd4854a208219c169355a50081825820f1a0e91f2f5b773ab3a4061da4d1c0c607ec5a38e2af29529f04b8b3e7715d6d0101818258390031e27b536478554a0ecfaa940d03c3a7fb712121e9e1b65ecbb2d852eacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd51a02f320e1021a0002a725031a02960ec5048183028200581ceacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd5581c5f5ed4eb2ba354ab2ad7c8859f3dacf93564637a105e80c8d8a7dc3ca400818258207ca4e57603b00b2bd661dae728aa46baaa069ec548f7edc9a020883a747811660001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a02ebf5a0021a00029d5907582052ab5e2532f7d1c84a8f6264d770d045298a477c5bfff36a8cc7645faca6c674a7008382582068853450ded7c467f83e18b6a455e9c45c283c6d42089f798b3ecff98f5d42d20082582068853450ded7c467f83e18b6a455e9c45c283c6d42089f798b3ecff98f5d42d201825820c8d7a4e800d00f9fda815057c226187fba5c9d530583eb06486e3d9fd389e2ba000d800182825839007370aef4c65746337a9b1aff5bf71c510d589aef387ba9f2ce4936691a097fae4c554c571526dda43b031f9556cf5167613d63ac1541d1c31a000f424082583900fe565b49cd91b26dc586e9af1cbbc489fd8cd9b3b0e1aa24e7a2a9521a097fae4c554c571526dda43b031f9556cf5167613d63ac1541d1c31a001e4638021a0002e951031a02960f240e800758208eca0841a79436578f9d579f28de834d0bf38272fe45229bc3af81ec25c3454ca600818258208cdd88042ddb6c800714fb1469fb1a1a93152aae3c87a81f2a3016f2ee5c664a010d80018282581d6095ca37fc71b3b73f2d0e57258ac66857661f33a509436c10917aaf6b1a0022e4be82583900f3a7ac77147d69c04060dcdc48b51271b3641f0c044ec4acb260af29719b6905b4122f96283e50a0dad9a9e577553ad49a17bbec3cb715181a2dc9876d021a00028f6d031a02960f2e0e80a30081825820cbf75d20e64f3e6ad301aa14906dbd8b2152993990d139b978ec4f451a739d3a01018282583900736fa1025c0a1d1966f4eeaefa6669d70f9c04c4c650286530d0bb5dd723da7bf8787357a74b3fa486b13462578ecf6ab6774dd4f15043681a1d34ce8082581d607c4a71a51d0c7400a15a748fa2338f20c8386f1ed4ebc56c2ffec4b01a00933c2e021a0002ad29a700818258204e66af4f8a441493809c8b0b2c4bb692fa70267fe2796c857dc892029f09abd5010d800182825839001c541902877bc024314618217cff3426ae99155377aad979122ac60ceacda39105223742da1efae9dfa82004b15b50a44efa6fea0c2c2dd5821a004c4b40a2581cee1d198fd1b4ef0f8aa0238d19c55c22562252e46abe195e79f68762a14e53696e67756c61726974794e455401581cf5bb6672a26bdd5a956da1f09405181aedf10e640e01f87da06a4809a146676b636f696e0182583900f831861a4cb622e02a71d4d38285aacd928c4829686ee8c311ae6f012902a312156562e9c98cc869b6c8e5356d7b97cc3ea7398839a423e5821a015f76c0a5581c21c3e7f6f954e606fe90017628b048a0067b561a4f6e2aa0e1aa6131a14756616375756d7304581c65b2b0dd9028c871ac1997399979cfc12a7f05738e1ec8d8a16ea52fa15041616461476f6c64656e5469636b657401581c789ef8ae89617f34c07f7f6a12e4d65146f958c0bc15a97b4ff169f1a14874727565636f696e01581cdca984a3ab2c7b9691de0cf0e09227e19c06b2899500ed8e9279ab32a14001581cee1d198fd1b4ef0f8aa0238d19c55c22562252e46abe195e79f68762a14e53696e67756c61726974794e455401021a0002eb8d031a02960f4b05a1581de02902a312156562e9c98cc869b6c8e5356d7b97cc3ea7398839a423e51985590e80a6008182582094b342f0321154684f60cd01db8ed3744e7d3351cacb61f871058c0021e57b0f000d80018182583900a34918d5acc448cf11512bc4a9e62c245a5374971bba698f87787882579b8fbb80215c823394921c8c4a1bdc1775224446f98b266a92ba711a009354c2021a0002a885031a029600b50e80a500828258208d134553eb77b0fe32c09dcecab66f59f57d87fe766b64ee05a5775443ee994800825820b6f47b1ad870ec0eb9948f2b6f86bc5893e868fa1bc109d7bfe0f1d07038f5b6000d80018282581d60945c010ec1c1f884ed778c28b3c644dcc2da1c3b1df4a90924cc51de1a3aae2ef983581d70396c6cf112a57e057331bd72a9de740a9431d9f10a4bd0fd932472e71a0096026e58209ad30ffde0d1931ed4f145fa0a0d320a067051bfab1b08cbdb79e9f26df55df3021a0002a4bd0e80a30081825820b60d4a2d2b6de3c800c8700e3ffce731c9ac62e7347986d4a2e29ba41be7545b010182825839005a018206e2e47778d44f42548047555389504d42437d7e85839c604209d5fa01ce1155980099c5c28838cc74c7c61ea8997c77a22d95e8aa1a000f4240825839005a018206e2e47778d44f42548047555389504d42437d7e85839c604209d5fa01ce1155980099c5c28838cc74c7c61ea8997c77a22d95e8aa1a0058b481021a00029049a400828258200572697b862ba97fb2cdbd6e39de31bb15f57cf086a03092e3b0ef58f63568910182582043549de56f2a03b3471bd525a5d4684969c02d5d5396a575429dbabfc51c5f4801018282581d605d91fd94e2f6de8646b5f0bf2920fd8345db49168fd18ccca80215471a00989680825839008fc9dd9236b232fb122ca3213a4a2a56beac5153e7803223d705fc62326c990a273d2279ee1390b79423e134e648e791938dcde0dddf732b1a38c5d22b021a000292dd031a02960ec58ba1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d5840df40fb1382cbb46728313ffdb5db2835dcce37ec6295ff0948619ccc33b7b6dc2c425b72a7f92ebfc2abd2a2e67e1f020040d10155d847d671fcd8aa13918208a1008282582057b20c65f5f4ca24a4c86de3379ce811f416b313019ff306d2cac31f86bd00e1584097d965e9eac9f986c4a1b65a9ecc83258565a415ca0fe5e376a87ada105e126ee7091e3cf6bb21436ad84d25b0671a55121ec593063d0b1f57a9a46e0a601d02825820cc42fcbb811f0415074548124dcdb27769cd912ab38201d38b22cb79e7d8299158408000f7179bd3018580f88cc66948a871046a8bbe125f3d449342cf65187665104a5a6e7029a48f3b733a74b2dd8af825244f9840ca71cee4c7144ec33bda9d0ea100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb11113806158404f2c44294027640887820ac5145169920eb23c365686cf7424bc725d301702d15768de1f88556fbcb328f93c1ab106bb8573958e3d7f5fd4799c3a9912f49f05a100828258200726b0f1e20bba8b62d6ac14c7d3baf73f5bb5ca7325f7ca64a9c7f6c6c1df3558400ba2ca792d7376400bd3bc11c0eec4f7d7bdd0e16777c1642307ba3487eee1dfbed839e9bb35439f0676d3f95d37990e087b5a6043c461d2637bf0827f46030c825820a2c791779639d2702328025ed4b14df881fe3d787d557a5c80c9065498358874584011fc26df5e04c3c533f726d41d5fa93a6cd0e621e81cdc426affd74d908ae86391b475a57b77a1385c96b9f8099bb2c4173dac4a576953f60bcdc77ca8af0804a100818258209ff16abb82eb7a412d745a0067e67115d01403fa27985aac74c2576b4a3d7f9d5840dba0bd58a1e738ad8d710e1d93a3011034dde9de05e9b2bf4c6eaff5ecb02f5b5c577686be5395caa4505f72d574fbfcb1061384b6b4b0ce66578e109f1d090fa10081825820a87e24f3f590c98c9bc1f34e11607db0e04446afb3b02f3201b8a6972e50512d5840e1dbb81e62b73dae6e9dd89f43f8160eb17d29201ce41b3fc57a06e641fd04ce44b257ba72d0092cc8af5bc84a2b0fc1d9e91c0273e04c9beb135b376e34e900a100828258203238eab147de641e6622ef8c246c226e744ebbf0c9fc9db298588284719a56865840db728fc9eba7c9da33938b480516458c43f17d5c9edf2beaa27d08430f5d3c1c125e4a1825f4bb568299c28229692efcc8b8bab870224c5f39f1930151f3b003825820750bf509b6b984928302eee7535f89f2753fb553a825148bdbcd9d9e6087fb3258409d9cd0f3be0539e726b543112bc21c27d9095a02b391458d2c94ef55b4a04d63b970bae85b0d1304db46fa3777320a6a15231387ec7091b720f8d4615ff75405a100818258200843a5a078c1e763805be18de9c749bb163c6cf3e8ed07d9adc37eadc5e7fd8a58407a82f27445d8045a02a64265fe2cdabb5c268814c002b827b077264d52c5c346c01cd43558a30eb718ca17be97e23d3db5fdd2deb34204f7b6dd13f047409505a10081825820a685a3def8a62b3c2e0886d00b989e1cb2a58a8e733d3a3b1dcc88646d093ee9584084815079efb0fbffa9d62256d720e538d6efb331cc7dd7575e75f5b41aae3dbb6b9150cb0f0b256caba4825e7285c142c01f9376bee17395bd58581daafb2c0aa100818258206e38402e45654fe6f90c992568563993df0f9d0bc6e3a216647b01bc68529894584044abf4e6de63104443c7a63643893ee3d9b98c3a8592e10d9cf7f16c3107243ef197df9ab575c893fc421906f2b500a0f6d798718e080206d8c2adf64b1c680ca1008182582037952999164b486ec64f2e389161e66c3c2061374df660f4c342d91678c035d35840659c17e6f9c2247f35ab0f24e4c726c5f9a1b43092556cd171ee0bd699d839b06e183aebf360b202fdc458f839a65b5f6099d5682bcee7034d8dc65837231201a300a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323936396641444145555281a266736f7572636569636f696e4765636b6f6576616c756563312e35664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565653139332e366641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3638674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313102a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438356868756d696469747981a266736f757263656553485433316576616c75656439362e396b74656d706572617475726581a266736f757263656553485433316576616c756563392e3403d90103a100a119534da261760161638358401001229d010a03312e301295010a076d6173746572301247304502205098c7f0a34ffcbc6f5eea8e6cf68b80370fb8200227d885405fff3cedc5b3da022100a7584089ffddf74b658b31124cbc5850a52a638a6519ec07f79e0bae0a443acfdb9f1a410a3f0a3d123b0a076d61737465723010014a2e0a09736563703235366b311258222103ed5ff07ccb9402423bb1459646e447d1bd4c75d0c560b0a4afc4909166d90cec80 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test4.block b/pallas-alonzo/src/test_data/test4.block new file mode 100644 index 0000000..14de68e --- /dev/null +++ b/pallas-alonzo/src/test_data/test4.block @@ -0,0 +1 @@ +820585828f1a002f48651a0295ebd258209b7738d2f814cd6d5ded17c2d470c91cca0a3fdd25655543793998c2cdbd881858208f3455035ef9178d72699fa60dadb1e0a7e26f2a17499074155b3c4cfcbfef1c58205251058d5f98cdd68cd920e2e169c3eb849405ca438b70889928ab29de85ce5b82584028ed7802b66c4f003171d06ff4a23a71f635383f1a92e18d7317467274311f1a0df7234e07c608102f144171670cf140382b5303f48b80f1fa8b42fce686942b58501293eab0b20cfc34caed068c0011acea3c4d80e0021036bfededb502d79ff2ed885ef02108f7191ef169c3f5f8521e5f8dfa56c4b9b1d4029af63d43368ab8ddd59f99fa2260ae3b4bcb641be8a1900e825840000a6aa6b202e15ffd14a9058409bbd03443d8996323104133877e57622f290a2490544c50960a51758cc251fdc7de80a3298c607b8648d239487b1d29ee792d5850dd5f692fd4bc313282500acf5c765443930032655956710a28298e06883f702dee01ec51710b2ed1a061d422b64269427147eb22c40fb5b4b5ae407a8ddc812f0427eed2717c062975448e90c4876b01190b3658206541929d5ac907fe28a646eee3bc16fdf882292c179393447209f5e0df0c0d1c58203895e87ee01d33e288a4ff5cd00ae36b15aa9e8b29cc9c372d0a10837345b49809190134584091847ea1dc8397fcd79eb5378680ac884fd56efa7ef5f002676ab8d8c7ac16208c2792391099b12d17a24d22a4f9daecd865f678ea2cd305941a1ca94257210a06005901c0bbff78a1a0e725ffc15a241c77543e8126002066e5c8377346d725bf210c6883da08e0c4a0f6c56afb8db5408114f0905cb69b9200456eaea9ce25060470060484cc673a4294c20ec39d8384374f948279b2a61f421b98b09bcbaf7bdea18010a5b9c6a8881f7ac0263305f25f25e39dcb168b1729a3e8398ffe894475a7870d6fec76d1369bfd70349af2cf58849ca2f5f3d85ef39c33d9b1b91ab4bffef0e78f7672f301e02940f149465ee6e7d29cc5dc39e80aa666e8e1534798d0843c40233d79b5e7f203dd3f81274762933c1e80d8efe12e2bbdebccc0bf7d23e95445dd42c5077f29ff7efe8d62a7ddb88db4312f1c10c3beb25c2e8374ea67219af3ba4ed6a629a99dd0a94a6d73ebc3ec8f90826bfad87e191865a7a50ef75631536a979edf105aeaf87bdb13c0fc445020983433b250ad8ae7e2161651f664c77e8bf5364a37674a234875f005dea3c2723ec6c1d5133d01d814c47efec5fcd5136df4184439b904d8527d1c034fa62b3e86c7cfd83992b7a9ee203400cf0c8584bdcea505de9c913d92c660135749ca91254da93a1a5f7365afc061b21b3aa59283bac1a4d233142454fe3293ea1628c3e353d731e62ea57f93f11f264e5f5d5486a60081825820717c8f6669f2a23d9496cbafa9ad971d133da4bde9351320f31ead9e655af1ec01018382581d6073c79da74be41b27d2615aa6a37aae7b9ed198db98180734b787447c821a001e8480a1581ccfc88d2da7673f2f29a63167839bd100a79091826d7106b171010fb2a1524d495448554e4a4e465431757064617465640182581d604cb068cb16029a08b7c22826d26891e76ecfed27149a093d71ea10b01a3b1a568a8258390007b5bbfad7192d21b5ba5dab97550788f3624d84e53749d859923e79a4c3864ff1f301229f7327ed862c1742fda268acface349c5a71e77e1a001e8480021a0003330d031a0295fef407582005ee0d396af53845c6544c7d79b2af0202f30213ae3acf9a1956f2c2b838e29e09a1581ccfc88d2da7673f2f29a63167839bd100a79091826d7106b171010fb2a1524d495448554e4a4e4654317570646174656401a300828258209c1fd1890883594acf5aa650dcb3fb5575ae36dc716d65b7d35085226850a98201825820d86023cc0d6aaa5369ce5ed2f0b58cbab1a4a342dcaec3d0d3eb358770ccfc1c01018283581d70e1aa22984b9d5d1687d26f6a0f4ed33f106987107d7fe3acc345c0d2821a001e8480a1581c70a522742c69926a3e6da88afc76d3de6e1bda3ab9f1673bc6795b74a1434e4654015820a84c5151d5d712cb1e316a52ff79952adf66c15810db5a34a604ed047ce50c6e82583900f75dbc279ccbb34102e1db992d2a47c027da94d2fb88d561755e2ca7ff597e595e715fedd593998baa9af8574431cf129b089ab6dfcdf01c1a0197250b021a00029e35a4008182582039fd3ed2bbd79b2766c273e61aa9ace38e000eba137af488561da33e738fc2b5000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000450fa550b021a0002ae8907582058ba4cc38121377e3fd8fd562cad34713fce005dcbde64be58f08ea677b8c96da40081825820bb0368319dfb966ef87167ee46898457d858c51ada338796b13a57f255ee31460001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261a033f9abc021a00029d5907582067d342508ab82f0d87afebb26827fbc06ba2b58fe209a8d704008a9871a47baca300828258208a8bc249d91f6bae06b8825d5228d6a4ce9eaf550d2aced0c7d0eeb12b8dee1b018258204cc72591ad435591277f4b3f62fe7a6280eca05eee9e8be58e6040ad14d93ed801018283581d70e1aa22984b9d5d1687d26f6a0f4ed33f106987107d7fe3acc345c0d2821a001e8480a1581c70a522742c69926a3e6da88afc76d3de6e1bda3ab9f1673bc6795b74a143536561015820e44f754a48df3c04f5adcbbda56bca03b28af7270c5ee1878f783b3a42648f6882583900f75dbc279ccbb34102e1db992d2a47c027da94d2fb88d561755e2ca7ff597e595e715fedd593998baa9af8574431cf129b089ab6dfcdf01c1a001d014a021a00029e35a50081825820d282ef2c00a9975ac7c96ed24d906ade50951ad2fe6fba62e48aad7bebfda1e700018282583900863c2608950c5fc9b7fefa84e73abd6be60799818c0f4a39d7af7fb956d9af2dfb01a0ae7f34beeea07bd7999ca3a4b92e5e3b38541974a1821a057d341aa1581cbef1e9c947d3a407bbca55d21e019d528109223e5c0e43bf1fe777b2a24b4e6175676874794e465433014b4e6175676874794e46543501825839009cfa4dddd8b4fe587e9b73d535c9523cba7f84108f769b4e49223eb1bfda8211a59fca51637ed369096bd12322a9777be665124f41940a9f821a0016e360a1581cbef1e9c947d3a407bbca55d21e019d528109223e5c0e43bf1fe777b2a14b4e6175676874794e46543701021a0002c591031a0296127c080086a2008282582084a01a897c93f0274bc303673c254707f21a29e058308dc7ac5ce9d5fd69999758407b16314b62d263e17aa2f405fbd039e70f94afaa70cf2dd3af8107ce644753a88d5a73190d8e257f79610ed73825432327eb0308978cac488cad12366e0c3e0b825820cdeec72572a90f767a2103aba0a1777b11300fa2c63219324c7a9a2f56e3d2e25840d21876c97c6b2832a293960052d15df06efd068f7edc24f126ca19f35d3f3744e6c2f56571e2341733556f756d25b822a54f4016e5055c2bde8e01f10df2f60401818201818200581c1b20a61dd889f311a93e11fec20456389895fd8785d3b288bde84eb2a100818258206acd90e62a869f8dd75ce2626660583c73169fa11f0fd367f892847596a545a85840c25b1a4a9b10789f82c314b4f24008f6ded239beb883a29bf4abe608c48a1d9c83d3c3d448094640fefccc1ddd5b3f9c70c36aaaf35d396a6ed0ba7448ab7c08a1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d584058096f18bde0125edd4cfaea75660f3988ad05f7d00f6e513896db2f9093f89d72ae7efc7eff220694153c5c9345e40dd55c2003d30aeb1c3fa9f3d747352803a100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb111138061584027be9ea45e07d0bde54848617c75191f78a4ed0d17dafbb689513bffcb9b9439f7a5f1cd4d865cdc15415c18fadf8c4dee10b688f38ceffa24a22e8f56267e07a100818258206acd90e62a869f8dd75ce2626660583c73169fa11f0fd367f892847596a545a858402aa77032686d47e19bafeff34b028b25d9a326193497d23edc4044e5d3156aa70d04a391d8195db381e9cd2b60c67fb08f97aa73f1d27493bc9c9651b0c0b40ea100818258208b6fbde6ba7536626b336faf851d5014e09f1b97eceb22b5c4074d7fdba7784f58402a649935b8a50b02f4634ed5fc395dcc1de5521261b669ea815bc6c72dd677c391ee166586d7938b2b49b165d4b3436910e1c60c2a45fb59d219e04826927804a30082a11902d1a278386366633838643264613736373366326632396136333136373833396264313030613739303931383236643731303662313731303130666232a1724d495448554e4a4e46543175706461746564a56b6465736372697074696f6e782474686973206973206d79207365636f6e64206e6674207573696e6720706c617466726f6d6566696c657381a3696d656469615479706569696d6167652f706e67646e616d656c74686973206973204e465431637372637835697066733a2f2f516d55736f3368446e6434583134794d33353866563748346f715471686839737a3138733273483151684c56573565696d6167657835697066733a2f2f516d55736f3368446e6434583134794d33353866563748346f715471686839737a3138733273483151684c565735696d656469615479706569696d6167652f706e67646e616d656c74686973206973204e4654316776657273696f6e63312e308002a11907c1a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323936396641444145555281a266736f7572636569636f696e4765636b6f6576616c756563312e35664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565653139332e376641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3638674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313103a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438306868756d696469747981a266736f757263656553485433316576616c75656439372e316b74656d706572617475726581a266736f757263656553485433316576616c756563392e3480 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test5.block b/pallas-alonzo/src/test_data/test5.block new file mode 100644 index 0000000..585bbf6 --- /dev/null +++ b/pallas-alonzo/src/test_data/test5.block @@ -0,0 +1 @@ +820585828f1a002f48f71a0295fd1258202cb1668ba5ca1b06170c4b5f0bc448e3ccc96131a065b2cc8d1fea118e9243c058208a02cfb2a0d4b805231e8397311f06c4a02d504ce5ce718ddccdd7661e0291cb5820c84bbd7c0048a755c72b632875c2039a634bd6b0d6c9cbbbd809ea59b78ada7a825840bb948960265a6de682cccdb01acf11618d2cab95af9d4269470ba28cb6273b4e9d308698a16bae03831fd7f54227a046ff9f8ae40bdc928c2266cf45121a32e658501ca3d6cd69a42c6c0ed199cc20ade39b165b141c483bb95926711e686f114caa5a77615ce129076161057dc1a419dd914d20554cda72bc923c1ee1d9fa8d6c9be3c37e82bf1ef3281d79b5bc9c8fed02825840002f4d4558add45ad47dbcebf9a2be721cd602bb4c8fba49340fc4a4b7902976706fcf02414af1c629f4d0b0130ddc5861923bb75e56585847ad70007f65413f5850ee8fafd858b13084acaa99eedee0055616b12e6838636aa10a2fe1b5ebb490e74518e7e6387d2d0133e9cedef1c84fe6906858a96182ad0e2ee386b09eafefee468a57287537df5659844c59b0d9dd01190c1d582093ea5202df89c6477ce0e783fd1821d2be2003d4c96334bc59887dd2d7dfda805820d60a4586766afab2ecbec353b4590e7d475c2d73cf1efd42f55579614e378814061901485840fdf037d16082a4afc6ac99f85cf77015c51eb87e2db4bf3a479812f11cecbbc95a70d2d93fcc73263745e8cbbee63c6eef47870ad4fcb1fbd149ab232961620a06005901c037f26b554ddff28d0ac7e4f2c684a678461b18435dcf8d39b8ad4bbd5a05d1245273be62cbe334c68ec6c1f9c855745bc5a737cadb44ae2f2bea95e1ad40120d13c51af32b2aad704f3b1f1641c545355bb3a38a0ced1eee004dfeb5f68c4137090ed8d0d433d1500b3cde7047079caf546ef869e2884f00acf994c460eb0c351ab204e635e0626012e01911ee6aac3cc4219c2d1de3d43b1bd5d0095cc8c9033a22e94342a7d3c73b6a9818c2560f3cfb91b4b0c5e4b17faf09ceb1e21bf7fd94f5b011f835a9721aff32696af8347c88f41332946d9a2facc7f5bf51306f80e75b04cc5d6f55b1c9e3d133d6227e969a0db44bd59188440ecdadfd4372dd65bf9495561301045798d197615c6e85cc71a7a9a08b3c24c437d4f27a2b0fc9c6a46cba81271c14119833b074b1b0fdf27fa82e4e49a73ea6175dafef831bbc91f51cc15a9fe4ea3a82b40422725b0227cdf7946d16f88362d529a093fd0cb6189ac533dbb8d6c50e061833c2d9a14864550f0bf33cf60fde32e8be8c122d31502d49ba253533ea3a39d1a7663cc5ac78b538b441be8416b91a634b2de6c12ea65aece014d7bd3a6a5f07c9f4a978a1e01018c4bee1864104f8eeaf68f86958c181a6008182582015f8a528cfa225a00fc5462019683c07d4b6af74d9bbd2e49ea04c40cac8aa68010d8182582015f8a528cfa225a00fc5462019683c07d4b6af74d9bbd2e49ea04c40cac8aa6800018182581d6072193caa8e2eaca97c8461f837e7a4d7cd781b0ba6bf626a883cc1021a0093279b021a00056ee50e800b5820dfab6d6c2dfd35878952e5589e0ade5cd60b4ad31cb41b28c0bd83328a53550481a4008182582016d1fd9efba6670d311828a91c66f4d022dccf46f012bc42895e7eba0a3e10f75840f85aeebb90857b301dab3878f939feda0845e08cd547dba34245c16ee077d0ae9255e64713901bad1dc4bb584af99839cfd114bd8478e4096c707dead42908090381590ad6590ad30100003323232332233223332223232323322323332223332223333333322222222332233333222223333222233322233223322332233322233223322332233223322323232323232323232323232323232323232323232323232335500104804b11222222300733300430060033005002300800125335302b001105113504b353050335738921025064000514988c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c26603aa002a0042600c6ae8540084c050d5d09aba25001135573ca00226ea80084d4129262323232323232323232323232323232323232323232323333573466e1cd55cea80aa40004a0044a02e93099999999998172800a8012801a8022802a8032803a8042804a805099a81080b1aba15012133502001635742a0202666aa032eb94060d5d0a8070999aa80c3ae501735742a018266a03a0426ae8540284cd4070cd54078085d69aba15008133501675a6ae8540184cd4069d71aba150041335019335501b75c0346ae8540084c080d5d09aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea80084d41252623232323232323333573466e1cd55cea802a40004a0044a00e9309980fa800a8010980b9aba1500213005357426ae8940044d55cf280089baa0021350484988c8c8c8c8c8c8c8c8cccd5cd19b8735573aa00e90001280112804a4c2666044a002a004a006260106ae8540104ccd54029d728049aba15002133500775c6ae84d5d1280089aba25001135573ca00226ea80084d411d2623232323232323333573466e1cd55cea802a40004a0044a00e93099810a800a8010980a1aba150021335005012357426ae8940044d55cf280089baa002135046498488c8c8c8c8c8c8cccd5cd19b87500448000940089401126135024500113006357426aae79400c4cccd5cd19b87500148008940889401126135573aa00226ea80084d4119261335500175ceb444888c8c8c004dd58019a80090008918009aa82791191919191919191999aab9f0085505025300212001055350022200135001220023555505612223300321300a357440124266a0a6a00aa600624002266aa0a6a002a004260106aae7540084c018d55cf280089aba10011223232323232323333573466e1cd55cea802a40004a0044a00e93099a811a800a801099a8038031aba150021335007005357426ae8940044d55cf280089baa002135043498488c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266a04ca002a004266a01000c6ae8540084c020d5d09aba25001135573ca00226ea80084d4109261223232323232323333573466e1cd55cea802a40004a0044a00e93099a811a800a801099a8038031aba1500213007357426ae8940044d55cf280089baa002135041498488c8c8c8c8c8c8c8cccd5cd19b87500548010940b0940092613333573466e1d4011200225002250044984d40ad40044c018d5d09aab9e500313333573466e1d4005200025029250044984d55cea80089baa0021350404988c8c8c8cccd5cd19b875002480088090940092613333573466e1d400520002022250034984d55ce9baa00213503e498488c8c8c004dd60019a80090008918009aa824111999aab9f00125046233504530063574200460066ae8800811c800444888c8c8c8c8c8c8cccd5cd19b8735573aa00a90001280112803a4c266aa094a002a0042600e6ae8540084c014d5d09aba25001135573ca00226ea80084d40f526232323232323232323232323232323333573466e1d4029200625002250044984c0c940044c038d5d09aab9e500b13333573466e1d401d200425002250044984c0b540044c030d5d09aab9e500813333573466e1d4011200225002250044984c0a540044c02cd5d09aab9e500513333573466e1d4005200025003250064984d55cea80189813a80089bae357426aae7940044dd500109a81d24c4646464646464646464646464646464646464646464646464646666ae68cdc3a80aa401840884a0049309999ab9a3370ea028900510221280124c26666ae68cdc3a809a40104a0044a00c9309981f2800a80109bae35742a00426eb4d5d09aba25001135573ca02426666ae68cdc3a8072400c4a0044a00c9309981d2800a80109bae35742a00426eb8d5d09aba25001135573ca01a26666ae68cdc3a804a40084a0044a00c9309981ca800a801098069aba150021375c6ae84d5d1280089aab9e500813333573466e1d4011200225002250044984c0d540044c020d5d09aab9e500513333573466e1d4005200025003250064984d55cea80189817a800898021aba135573ca00226ea80084d40e52623232323232323232323232323333573466e1d4021200225002250084984ccc0e940054009400c4dd69aba150041375a6ae8540084dd69aba135744a00226ae8940044d55cf280289999ab9a3370ea0029000128019280324c26aae75400c4c0cd40044c010d5d09aab9e50011375400426a07093119191919191919191999ab9a3370ea0089001128011280224c26070a00226eb8d5d09aab9e500513333573466e1d4005200025003250064984d55cea8018981aa80089bae357426aae7940044dd500109a81ba4c46464646464646666ae68cdc39aab9d500548000940089401d26133028500150021300635742a00426eb4d5d09aba25001135573ca00226ea80084d40d92623232323333573466e1cd55cea801240004a0044a0089309bae357426aae7940044dd500109a81aa4c4424660020060044002444444444424666666666600201601401201000e00c00a00800600440024424660020060044002444246660020080060044002442466002006004400224244600400622440022400224424660020060042400224424660020060042400224424660020060042400224400424400240022424446006008224440042244400224002424444600800a424444600600a424444600400a424444600200a40024424660020060044002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024244600400644424466600200a0080064002424460040064244600200640024646464646666ae68cdc39aab9d5003480009400894015261300650011375c6ae84d55cf280089baa002135005498848c00400880048c8cccd5cd19b8735573a6ea80092000200a250024984d400926126112500411220021221223300100400312001120012001112212330010030021120011123230010012233003300200200111112335002212330012350032230020032350032230010030011232323001001223300330020020012212353004123530040033500300100132333222333222323232323232323322323232323232323232323232322223530110023300649011f62656e65666963696172792773207369676e6174757265206d697373696e670033350165017335502000733550200043500f300530080013355020501c30140032353008001222003235300600122222222220092253353019001101b133573800403446a600c0024466a601400446a0320024a03046a60040024400440024002400240024002400224a66a6a00400226a00a6a600666ae7124102506200004498884008480044800480044988d4c00800480048004480044d400800488ccd5cd19b8f002001009008122253353500400221533535005002213300500200110091533535004001210091009121223002003112200112001122002122001200111223002001010481d8799f581c72193caa8e2eaca97c8461f837e7a4d7cd781b0ba6bf626a883cc102ff0581840000d87980821a000b90541a10e34dc7a080 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test6.block b/pallas-alonzo/src/test_data/test6.block new file mode 100644 index 0000000..04cfa9f --- /dev/null +++ b/pallas-alonzo/src/test_data/test6.block @@ -0,0 +1 @@ +820585828f1a002f4b161a029640c75820061bb861f7fa6c92e0309a021c6332973ebde18bee08c235e206b348480c402b5820399ae3190d6eb519fd4199e0fb208bdafb2e16e4df556ef336b9d7d768cf1bfc58207d774f65047663eabc55657150db50b0c5531a278bbcebfffb988f06dcccf8fc825840347e72c8b2d962bd5f6fac06bda8510fa753109bdfb11ca4d0bcbea1941987c74ecd7f6f9350296aaa1ed153e14be221c08f0a16dc5d590e0c7f2278b341ac1c5850e6f9d7c82f1da92bc1fbcf991576fb987371af69f9822bc987d145a9057bcad56f934717d4fa68e415338690eabba51e38a51f0138a199c1ef4af30348c459bd0f70fe2a7531a9abb61efa6939f19508825840000536a5ab5810586405624a6c50e96f44349c4fa902d1ee66a6035533186bdff25d665440bee237608e54c6c952d81d82975fde6fec92dff4e02c78a428dba958505664f8316211e62565280485de27f5e374008d08ac33cb642b32f309592f733318d7505f20bb22b8aa19e88150ab0fa3d453371733c764fb55f504b25dfec871f399577d6d0716411776cb70c4888801194311582071d7afe718009075a9a502b73b01b104e64202d0bead7635c4a9c823569edbc35820131bcff7dd27d47bdd7d5aba636fc5e94cdf3ae3b79b2030a3cb7099cb2d8170071901305840caf18c2a28da03f2591a72d1e7242013dc1998df3e550021d91b63ea00a713e367ec8fa02c2f27371736cd308eba84d18c547d0efe67f67017edaf1ca054e40b06005901c02619b9a855461df7924fcb11e1d9d4f5eed8cdbcac5f74586565a250dd7c332e6ddc817034f8e529eba5dd4f5b9619998636f59ed35a5cc9e37411faa4c42b0895a0cfefa98badeb2eb69de481f6f2d0541cb235a0120e33e502bd4f23eae0b9ed93f9aa7405bba01f756cb81e877124724edd109a3775491cc54ead59a0c48c75adea402e0c2f299ea6e6680b58a5318054c2a05345b2f08eca8d603262a565c3cf42350bd6c128c76e9720cd62ec30ec75aea891b6722b855fc093722ac2693e7563e10e8074d703ca8384c391cf2873d467a1317bddd09a8ede41d35edee8b6335254f7a4e2224c2809255481566a52f64219e71f695705620ec71e88947bf5be7bb13f50df24b36ba767650c92c3fb74c37aa0ef8b2ad3b7cb077902b28dc529c1669950ef2c9ae025602d0c64de3e3964992d4a702e0da0cc53cf25965d6382f3264dd4a4c304613091f079ad37b500cbdfb0c514b06d339f352d11f16d6b98169211023702cf5c5bc2fbb288101fca68472f04a67816628f880d4d85a2d31ade35e0ef85152944d45b0e7c8011f7671247774294f85e2977599b21290194b81fd4d8c8e5ce079c53904f7b80e97e4fec4d6cd8f629fb72333d866aec0183a400818258207b025cd83c9a7561bdfeab49b90f6068ec70de0ad0895f20abbbdbe4fe0443930001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261b0000000b88c10c1d021a00029d59075820950231a819a3a43fbf3ae03b7ca03d36fb6c217905fb2ecfaeea221ff9d6e14ea4008182582042377b644c051986509a81abfffd56ee9c146c54eea136171e001d32a148d900000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b000000044d0195fc021a0002aee107582060f434495acb5000c504c576fdb582879c61b566a3a7718c3f24469a47a8b2a1a800828258209c6d992735fd68ebf4e689ca75160007ffbdb584d4d908a1ab763d4d764eed13008258209c6d992735fd68ebf4e689ca75160007ffbdb584d4d908a1ab763d4d764eed13010d818258209c6d992735fd68ebf4e689ca75160007ffbdb584d4d908a1ab763d4d764eed1300018282581d600a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e071a3a2ac7ff82581d600a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e071a002dc6c0021a000fed35031a0297c1e0081903e80e800b58202ff00459b8028b3ee15ab1a462462633be2fcf6cf5ecb22f1e30521ce93b6a9b83a100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb11113806158407cf449e4b70269fd805b6a2617fc60534e1fbe5fb683989019367ac12335e17dfdba1ee62060b62e7d885ddf3822bb47ac27d395dc117635240f8cb73490f309a1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d5840abccd49ff100bad01de6ba3b92eba78c779335cfa31b1c28cb67eb57dcfd1afb3afbfada9641ade680f2121734d1f6f12f48c829f8dc16fb5a55129431659008a40081825820669ed15b1bc5e97ec45af8951e9cbcbd33a3b5878943704d054a1a3ec46be2825840485e06ca1d9eb93385b6d1fcfbcf1fbe2e77152be2faf25ee182b098d8449b2f80fc6a277087dc6652f63f441c4dd8d4d40399e7a1c762e6a2e347eea0b2890a0381593e0f593e0c010000332332233223232333222323322323233223333333333333322222222222222323333333333332222222222223233223332223333222233223332223333333222222232323333222233223322332232333222323332223233333333222222223233322232333322223232332232333222323232332233223233333222223322332233223322332233223322222232325335302f333006300800530070043333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd41708c8c8cccd5cd19b8735573aa004900011980f981b1aba15002302b357426ae8940088d427404d4c27804cd5ce2481035054310009f0149926135573ca00226ea8004d5d0a80519a82e0139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733505c03f35742a00c66a0b866aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350213232323333573466e1cd55cea80124000466a05266a07ceb4d5d0a80118219aba135744a00446a142026a61440266ae71240103505431000a30149926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502733503e75a6ae854008c10cd5d09aba250022350a1013530a201335738920103505431000a30149926135573ca00226ea8004d5d09aba2500223509d0135309e013357389201035054310009f0149926135573ca00226ea8004d5d0a80219a82e3ae35742a00666a0b866aa0a0eb88004d5d0a801181a9aba135744a00446a132026a61340266ae71241035054310009b0149926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180f181b9aba135573ca00646666ae68cdc3a801240084603a60826ae84d55cf280211999ab9a3370ea00690011180e98161aba135573ca00a46666ae68cdc3a80224000460406eb8d5d09aab9e50062350940135309501335738920103505431000960149926499264984d55cea80089baa001357426ae8940088d423404d4c23804cd5ce249035054310008f0149926108e0113508c0135308d013357389201035054350008e014984d55cf280089baa001232323333573466e1cd55cea8012400046608264646464646666ae68cdc39aab9d5004480008cccc124ccd54088cd541142240423405d69aba15004333550220860175a6ae85400cccd5408821405d69aba15002375a6ae84d5d1280111a847009a98478099ab9c49103505431000900149926135744a00226ae8940044d55cf280089baa00135742a00460946ae84d5d1280111a844009a98448099ab9c4901035054310008a0149926135573ca00226ea8004cd540eccd540edd6bad3504723232323232323333573466e1d40052004204b23333573466e1d4009200223304e30850135742a0086eb4d5d09aba2500423333573466e1d400d20002333304e30890135742a0106112026ae85401cc23404d5d0a8031bad357426ae8940188d423804d4c23c04cd5ce24810350543100090014992649926135573aa00a26aae7940104d5d1280089aba25001135573ca00226ea80048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c00401480048c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111a83d9a983e19ab9c491035054310007d49926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba25002235077353078335738921035054310007949926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d541cc88c8cccd55cf80112824119a82399aa81798031aab9d5002300535573ca00460086ae8800c1cc4d5d080089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0e26a60e466ae712410350543100073499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0d66a60d866ae71241035054310006d49926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d419cd4c1a0cd5ce24810350543100069499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8351a983599ab9c4901035054310006c4992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d4188d4c18ccd5ce2490350543100064499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d419cd4c1a0cd5ce2481035054310006949926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4160d4c164cd5ce249035054310005a499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423505235305333573892010350543100054499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa018600c6ae854008c014d5d09aba2500223504f353050335738921035054310005149926135573ca00226ea80048848cc00400c0088004888848cccc00401401000c0088004448848cc00400c008448004884888cc00c01401088884888cccc00801c01801401048880048004c8004d5410c88c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b875001480288cc060c09cd5d0a80198081aba135744a00646666ae68cdc3a80124010466602c608c6ae854018cd4c0d4480040a0d5d0a80298089aba135744a00a46666ae68cdc3a801a400c466602a66a026464646666ae68cdc39aab9d5002480008cd408cc8c8c8c8c8c8c8cccd5cd19b875001480108c0b4c0d4d5d09aab9e500723333573466e1d40092002233030305535742a00866a040464646666ae68cdc39aab9d5002480008cc0e4dd69aba15002375a6ae84d5d1280111a8309a983119ab9c4901035054310006349926135573ca00226ea8004d5d09aba2500423333573466e1d400d200023333030305935742a01060b26ae85401cc174d5d0a80319a98220900081b9aba135744a00c46a0bc6a60be66ae7124103505431000604992649926135573aa00a26aae7940104d5d1280089aba25001135573ca00226ea8004d5d0a801180b1aba135744a00446a0a86a60aa66ae71241035054310005649926135573ca00226ea8004d5d0a8049bad35742a01060246ae84d5d1280411999ab9a3370ea0089002119980c98151aba1500c301335742a01660266ae84d5d1280591999ab9a3370ea00a900111999980c18269aba150113232323333573466e1d40052002230223051357426aae79400c8cccd5cd19b875002480008c090c148d5d09aab9e50042350573530583357389210350543100059499264984d55cea80089baa00135742a02060a26ae85403ccd4c0e0480040acd5d0a807180a1aba135744a01c46666ae68cdc3a80324000403846a0a66a60a866ae71240103505431000554992649926499264984d55cea80609aab9e500b135744a00226aae7940244d5d1280089aab9e5007135744a00226aae7940144d5d1280089aba25001135744a00226aae7940044dd50008919118011bac001320013550432233335573e0024a02e466a02c60086ae84008c00cd5d100102111091111119803004003891111100291109111111998020048040039110911111199801804804003911110911111199998010058050048040039110911111199800804804003900090911801001909118008019000891091980080180109000910911198018028021111091119998010038030028021091118008021000889100109109119800802001890009109198008018011000990009aa816111919191919191919191999ab9a3370ea002900a100b11999ab9a3370ea0049009100a11999ab9a3370ea006900811980a19a980d890008071aba15005335301b1200100e357426ae8940148cccd5cd19b875004480388cc048cd4c0704800403cd5d0a80399a980e090008079aba135744a00e46666ae68cdc3a802a401846602466a603a240020206ae854024cd4c07448004040d5d09aba2500923333573466e1d4019200a233015335301e1200101135742a01666a603c240020226ae84d5d1280591999ab9a3370ea00e900411980b99a980f890008091aba1500d335301f12001012357426ae8940348cccd5cd19b875008480188c078c0c8d5d09aab9e501123333573466e1d402520042301d3014357426aae7940488cccd5cd19b87500a480088cc074c054d5d0a808980a9aba135744a02246666ae68cdc3a805a4000466044602c6ae85404cc058d5d09aba2501323503d35303e3357389201035054310003f499264992649926499264992649926135573aa01026aae79401c4d55cf280309aab9e5005135573ca00826aae79400c4d55cf280109aab9e500113754002442444444444446601601a0184244444444444601401824444444444401242444444444446010018442444444444446600e01a01824444444444400c442444444444446600a01a018442444444444446600801a018442444444444446600601a018442444444444446600401a018442444444444446600201a0184002640026aa03e44244646464646464646464646666ae68cdc3a800a402c4666a034601a6ae854010cd4c03c48004034d5d0a80199a9807890008069aba135744a00646666ae68cdc3a8012402846a02460426ae84d55cf280611999ab9a3370ea00690091280b11999ab9a3370ea00890081280b11999ab9a3370ea00a900711a80f98129aba135573ca01e46666ae68cdc3a80324018466a0346464646666ae68cdc39aab9d5002480008cd40a0dd69aba15002375a6ae84d5d1280111a8191a981999ab9c491035054310003449926135573ca00226ea8004d5d0a80519a980a090008091aba135744a01446666ae68cdc3a803a4030466a03c66a602a240020266ae854030cd4c0544800404cd5d09aba2500c23333573466e1d4021200a233501e33530161200101435742a01c66a602c240020286ae84d5d1280711999ab9a3370ea0129004119a80d19a980b8900080a9aba15010335301712001015357426ae8940408cccd5cd19b87500a480188cd4098cd4c06048004058d5d0a80919a980c0900080b1aba135744a02446666ae68cdc3a805a400846a04066a60322400202e6ae84d55cf280a91999ab9a3370ea018900111a8121bad357426aae7940588cccd5cd19b87500d480008cd40a0c0c0d5d0a80b181a1aba135744a02c46a06a6a606c66ae712401035054310003749926499264992649926499264992649926135573aa01226ae8940044d55cf280389aab9e5006135573ca00a26aae7940104d55cf280189aab9e5002135573ca00226ea800448848888888888888cc03403c03848848888888888888cc03003c0384848888888888888c02c038488848888888888888ccc02804003c0384848888888888888c02403848848888888888888cc02003c03848848888888888888cc01c03c0384848888888888888c01803848848888888888888cc01403c03844888888888888801044888888888888800c48848888888888888cc00803c0384848888888888888c0040384800448848cc00400c008480048c8cccd5cd19b8735573aa002900011bae357426aae7940088d4030d4c034cd5ce249035054310000e4992613754002464646666ae68cdc39aab9d5002480008cc018dd71aba150023007357426ae8940088d4030d4c034cd5ce249035054310000e49926135573ca00226ea80048848cc00400c00880048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa00121223002003212230010032001232323333573466e1cd55cea801240004660126eb8d5d0a8011bae357426ae8940088d4014d4c018cd5ce2481035054310000749926135573ca00226ea80044984800480048848cc00400c0088004448c8c00400488cc00cc008008004cc8c8cc88ccc888c8c8ccc888c8cc88c8c8cc88c8cc88cccccccccccccc88888888888888c8cccccccccccc888888888888c8cccc8888cc88ccc888ccccccc8888888c8c8c8ccc888c8c8c8c8c8cc88cc88c8c8c8c8c8c8c8c8c8c8c8cc88cccccc888888ccc888ccc888cccc8888c8cc88c8cc88c8c8c8cccc8888c8c8c8c8c8c8ccc888c8c8c8c8cccccc888888cccc8888ccc888ccc888cccc8888c8c8c8c8c8c8cc88cc88c8c8cc88c8ccc888ccc888c8cccc8888c8cc88c8cccc8888c8cc88c8c8c8cc88c8c8c8c8cc88cc88ccccccccccccc8888888888888c8c8cccccccc88888888cc88cc88cc88cc88c8ccccc88888cc88ccc888ccc888cc88ccccc88888ccc888cc88cc88cc88cc88cc888888d4c1c000c88d4d5431c0401088d4d543240400888cd4c054ccc88c88d4c08401088d4d54344040088c88cd4c0a14cd4c36c04ccd5cd19b880010030dd010dc011302a302c33550d5010030011533530db01333573466e20005401c37404370044c0a8cc0b5401ccd543540400c0044cc0a4cd54354054008004d4c348040208888cccc35c0401000c00940188c084c090004894ccd4c24c04ccccccc21004378040080040200194280094280084c08809c4c0880988888854cd4c388040144cccc09801000c00800454cccccd4c3a004034884c0a40ac4d4c3640403c88894cd4c39804cccd54c2e40448005423c04883a4040103a0044c0ac0b44cccc0a802001c0180148884c0a80b08884c0a80b0888884c0b00b88884c0a80b054cd4c36404ccd5cd19b8900150050db010da0115005100113530cb0100122220013301e00400300600520d401222233322235355014002222533530dc013335530af01120013505d505c235303000522330390020030031533530dc013335530af01120013505d505c23530300052235303a0022222222222353502800d22533530eb013335530be0112001350bc0150c1012353049001223308b0100200400c10ed011335738921024c30000ec010021533530dc013335530af01120013505d505c23530300052235303a0022222222222353502600d22533530eb013335530be0112001350bc0150c101235304b0012225335350b30100121533530f00133306e0dc0100300615335350b40133074301a00700921330ee0100100210f10110f10110f0015335350af01533335304000d2150b1012150b1012150b101213335530bf01120015071235304a00122533530ef013308c010020041350b501003150b40100d213530490012235304d0012223335530bd0112001223530520022223530570082235305900522533530fa0133330900100400300200113350bc02009008100850b40201113263530243357389201024c660002549843b4044cd5ce2481024c31000ec0100110de01150c901150c901150c901235307b001223374a900019aba03530d00100222223374a900019aba0374c61960200866ae80dd318660080199aba0374c619a0200466ae80dd40009bb1498cd5d0186e808009bb1498ccd54c2a40448004cd42ac0488d4d554064ccd554068d4d5404c008888ccd54c29c0448005427408d4d5405801088800c00cd4d5404c008888ccd54c29c0448005427408d4d54058010888008008d4d5404c008888ccd54c29c0448005427408d4d54058010888004004888ccd5405c00c008004ccd540494264094264094264088d4d543400400488cd4c254080088cc88ccd54060d42d404488cc008cc14801000c005427c09427c080040088ccc888d4d554078ccd55407cccd54c2a40448005427c08d42d804488cc008c158010004d42d804488cc008ccc15001401000c004ccd54c2a40448005427c09428009428008ccd54c2a40448005427c09428009428008888ccd5407000c008004d4c1f004888008dd4800801199aa98548089000999119a8568099aa85100801000a84d8106900a82111a98608080091119a9873808011284f01119a84e8119aa86a80800801284f0100180589000900088911091998008020018010890008910919800801801090008910919800801801090008889110919980080200180108890009091180100191110911999800803002802001900089111002091110019091111801002891110009000910919800801801100090911801001910911980080200190009109119801002001909118008019000910919800801801100090911118020029091111801802909111180100290911118008029000990009aa87600911199999999999a980b00091a98028019111111111299a985a00a99a9a83c199aa98438089000a81c9299a985a80999ab9a3371e01800216e0216c0226a0f60022a0f40064216e02216a02216c02266ae712401024c34000b5012235300600422222222225335350795335350793335530880112001503a2353550af0100122533530b801333573466e3c00803c2e8042e4044d41f800c541f400884d41f0d4d542bc0400488004541e8854cd4c2d804ccd5cd19baf00100c0b8010b70110b801150561505523530050032222222222533530b40133355308701120013508501508a012333573466ebc0300042dc042d804cd54c21804480048d4d542b8040048800400842d8044cd5ce249024c32000b50122232322533530af01333573466e1cd4c0280208888888888c03001c0042c4042c00442c4044cd5ce2481024c39000b001320013550f30122335350f0010014800088d4d542a804008894cd4c2cc04ccd5cd19b8f00200a0b5010b4011300700113006003320013550f20122335350ef010014800088d4d542a404008894cd4c2c804ccd5cd19b8f0020070b4010b3011001130060032223530070052222222222533530b60133355308901120013508701508c01235301600122253353507e00121533530bb013330390a701003010153353507f35301601422222222223304901b00221533530bc01333573466e3c0040082f8042f4044d4c07401488cccc150008004c164055420c0442f40442f00442f00442ec0402442e0044cd5ce249024c62000b70122533530ab0133302905600133355307712001501750ee01353006004222222222233355308101120012235301600222235301b0032233530560022533530bd01333573466e3c0500042fc042f8044cd43fc0401401c401c801d43e00402442b4044cd5ce2481024c61000ac012533530aa0133302805500135300500322222222223335530870112001501f235301400122200200910ac011335738921024c36000ab012533530aa0133355307d120013507b50800123300500400100110ac011335738921024c64000ab012533530aa0133302805500135300500322222222223335530870112001501f23530120012235301600122200200a10ac0113357389201024c35000ab012353005003222222222253353507833355308701120015039235301200122533530b7013305400200e13507d0031507c00a213530120012235301600122253353507e00121505c10bc01150552235300600422222222225335350793335530880112001503a235301300122533530b8013305500200f13507e0031507d00a210b80113357389201024c38000b60123530050032222222222353502e00b22353503200222353503200822353503600222533530bc0133333332222222533353055333504c0070060031533530c3010021533530c3010051333504900700100410c4011333504900700100410c4011333504900700100433333333504c0a80122533530be01333573466e1c008004300042fc04414c54cd4c2f804ccd5cd19b890020010c0010bf011051105222333573466e20008004300042fc0419c88ccd5cd19b890020010bf010c00122333573466e200080042fc0430004894cd4c2f804ccd5cd19b890020010c0010bf011001100222533530be01333573466e24008004300042fc044008400401801401c00800400c42f8044cd5ce249024c33000bd01222222222212333333333300100b00a0090080070060050040030022001221233001003002200122212333001004003002200122123300100300220012122222223007008221222222233006009008212222222300500812222222004122222220032212222222330020090082212222222330010090082001133506a500150d801122335530681200123535509001001223355093010023355306b12001235355093010012233550960100233353550690012330434800000488cc1100080048cc10c00520000013301500200121222222222222300c00d2212222222222223300b00e00d21222222222222300a00d22221222222222222333300901000f00e00d222122222222222233300800f00e00d2212222222222223300700e00d21222222222222300600d21222222222222300500d21222222222222300400d21222222222222300300d2212222222222223300200e00d21222222222222300100d20011221233001003002120011221233001003002120012223335530581200135006500523535507f0012233355305b120013500950082353550820100122333535505800123300a4800000488cc02c0080048cc02800520000013300400200122335530551200123535507d00122335508001002333535505300123355305912001235355081010012233550840100235505a001001223335550530850100200123355305912001235355081010012233550840100235505800100133355504e08001002001133500322533530820100210011083010820112335055223335350040032200200200135350020012200112212330010030021200122533535042333553051120015003235355078001225335308101333573466ebc00401420c04208044d411c00c5411800484d4114d4d541e0004880085410c4cd4140894cd4d41040088400c400541004888d4d401000888d4d401800c894ccd4c04cccd402801c01000854cd4c2040400c4004420c04420804420c0448848cc00400c008480044888c8c8c8c94ccd4d4020018854ccd4d4024018854ccd4d402802084c010584c00c5854ccd4d402801c84c010584c00c584054404c54ccd4d402401c84c010584c00c5854ccd4d402401884c010584c00c58405054ccd4d402001484048404c404454ccd4d4020014854ccd4d402401c84c014584c0105854ccd4d402401884c014584c010584050404854ccd4d402001884c014584c0105854ccd4d402001484c014584c01058404c94ccd4d4020014854ccd4d402401c854ccd4d402801c84ccd403c0280080044c044584c044584c04058404c54ccd4d4020018854ccd4d402401884ccd40380240080044c040584c040584c03c584048404494ccd4d401c010854ccd4d4020018854ccd4d402401884ccd40380240080044c040584c040584c03c58404854ccd4d401c014854ccd4d402001484ccd40340200080044c03c584c03c584c038584044404094ccd4d401800c854ccd4d401c014854ccd4d402001484ccd40340200080044c03c584c03c584c03858404454ccd4d4018010854ccd4d401c01084ccd403001c0080044c038584c038584c034584040403c94ccd4d4014008854ccd4d4018010854ccd4d401c01084ccd403001c0080044c038584c038584c03458404054ccd4d401400c854ccd4d401800c84ccd402c0180080044c034584c034584c03058403c4038484888c00c01044888008448880044800448d4d40080048888888801c48888888848cccccccc00402402001c01801401000c0084800498488800c4888008488800480048888c8cd4c0240148cd4c02801094cd4c1c4ccd5cd19b8f00200107307215003107220722335300a0042072253353071333573466e3c0080041cc1c85400c41c854cd4d40c800c854cd4d40cc00884cd4c01c0088cd4c0200088cd4c0300088cd4c0340088cc1c400800481d48cd4c03400881d48cc1c40080048881d4888cd4c02801081d48894cd4c1d8ccd5cd19b87006003078077153353076333573466e1c0140081e01dc4cc18801000441dc41dc41c054cd4d40c8004841c041c08488c00800c888488ccc00401401000c80048488c00800c8488c00400c8004894cd4c194ccd5cd19b8f35300300222002353003001220020670661333573466e1cd4c00c00888004d4c00c0048800419c19841988848cc00400c00880044cd5ce249024c630006113357389201024c3700060221233001003002200122123300100300220012233700004002640026aa13e0244444444a66a60846666660440c400c00a008a14802a14802444442a66a6a14e0201026666603aa66a60cc01820d0200a666aa606424002a150026a01c00800e66a04c00c006004002442a666666a60dc00644204420404442046444204644444204a4442a66a6036666602a02000e00a0064442666666602a0e002600400200e666aa607424002a16002666aa607424002a16002a66a60420062a16202444426a09624466004666606400c00a0080060026a02c01801e66a05c01c01620462034246666aa605824002a00444a66666a607e004266a13a0203400220024444266a14202666603800800600400200a44444266a144026666603800a00800600400200c444266a14002666032006004002008002a13802266a058444600660040024002640026aa1380244444a666a600e004442a66a6a13c02006201c4426a6a0de00444a666a60e6004442a66a60c6660bc0100042a66a60c6666aa606c240026a068a07246a61500200244a66a60cc666ae68cdc40050010338340998088050008833800899980a80c1a982d0059111199982f8021999aa818031006005801801000801899998068060058050028999980680600580500291110999980780700680600390999980600580500480211110a99a9a8500080288081109a9a838801112999a983a801110999980780700680600291111919099a985280807119a9853008039299a9835999ab9a3371e0040020da0d82a0062666602a0280260240164666602a028026024016466a614c0200e4666602a0280260240164a66a60d6666ae68cdc78010008368360a8018999980a80a009809005899a985200806119a9852808029299a9835199ab9a3371e0040020d80d62a0062666602802602402201446666028026024022014466a614a0200a466660280260240220144a66a60d4666ae68cdc78010008360358a8018999980a0098090088050a99a98339982e8050010a99a9833999ab9a3370e0126660b202001e0020d20d02666032a66a60ce666ae68cdc4804a40000d00d22038266660360060080040126a60bc01e444466660c6666606402001c01a00800600400200a2666602202001e01c00e2666602202001e01c00e42666601c01a0180160082a66a6a1380200220184426a6a0da00444a666a60e2004442666601601401201c00a44442666601a01801602000e42a66a60c06660a6012010002266602402a0100042666601401201001a00844666ae68cdc480100082c82c1109111980180280211110911199980100380300280209110009000911091199801002802001891000900089100111110911999800803002802001900089110018911001111110911199998008040038030028021000891111002911109111119998020048040038031111091111199980180480400380311111091111199998010050048040038031110911111998008040038031000891199aa980709000a84200800801190009aa842809111191112999a9810a999999a98268019109999812299a982499981e0040038010818881901480380089a981f0029111299a9a8079807002109a9aa822800911a9aa82380111199981581c181799981d801182f001000999982400180400380302d881391109999812819015004299a982519981e80480400188010800911919109999813980128048161a9821805111119998240020019999aa80c826804a803a806800800990009aa8480091299a9a84680800881a1109a9aa82380111299a9828199ab9a3371e0040120a40a2266606a012002a00e2600c006266607601000e0024446446464646442a66a60a2666ae68cdc4a802a40000a60a4266660586666070014012010a00a06201e00226666058a66a60a2666ae68cdc42802280282982909999981b80500480428022802881c9a9aa8252801110011a9824007911119998269a9aa82728031100080180100080089a9842008031119aa825981819981e00500499a8498099aa82580119a8498099aa825800a802284a00a84a0099a982f0049199980c80099844008018012802a802128020999980b00380299b815004500135304500c222200415335304d333573466e25400d400413c1385400c540044ccc0f802c0280044d4c1040208888ccc10c01c01401088854cd4c128ccd5cd19b88353550430092200100204c04b102615335304a333573466e24008d4d5410c0248800813012c4cccc0940c80a8020004409c40a44ccccc0a801cd4024008d402400401400c88884cccccc0301340280080054cd4c12d4ccccd4c0bc010413054ccccd4c0bc0cc4130413488884140888884144888413c888854ccccd4c0cc0dc414041408888c8c84cd4c244040288cd4c2480401c94cd4c15cccd5cd19b8f002001059058150031058205823353092010072058253353057333573466e3c0080041641605400c41604cd4c1840208cd4c1880148cd4c248040088cd4c24c0400894cd4c160ccd5cd19b8f00200105a059150051059205923353093010022059253353058333573466e3c008004168164540144164815c8cd4c188014815c8cd4c248040088cd4c24c0400894cd4c160ccd5cd19b8f00200105a059150051059205923353093010022059253353058333573466e3c00800416816454014416454cd4c14ccc1240180084cc0fc0140044150888884154888414c8888854ccccd4c0d00e0414441448888415488888c8c84cd4c24c040308cd4c2500402094cd4c164ccd5cd19b8f00200105b05a15003105a205a2335309401008205a253353059333573466e3c00800416c1685400c41684cd4c18c0288cd4c1900188cd4c250040088cd4c2540400894cd4c168ccd5cd19b8f00200105c05b15005105b205b2335309501002205b25335305a333573466e3c00800417016c54014416c81648cd4c19001881648cd4c250040088cd4c2540400894cd4c168ccd5cd19b8f00200105c05b15005105b205b2335309501002205b25335305a333573466e3c00800417016c54014416c54cd4c154cc12c02000c54cd4c154ccd5cd19b87007002057056133041006001105610562221054222153333353032036104f104f22221053222221054222153353051333573466e3c01800c14c14854cd4c144ccd5cd19b8700500205305213303d004001105210521006133508d010040065335302900310052133508e01001006135303a00122220021322330020015083013200135508401222533535082010021001221330050013350850100200332001355083012253353508001001150042213535503a002223535503c0022235307a0012253353047333573466e24015200004804913500d33550413355041004335089013355041002335089013355041001005508a01508a010071300a00712122300200311220011200122225335303d333573466e24009200003f03e1001133330050040033370066606400800600200400244644a66a6078666ae68cdc4800a400007c07a2460060022666aa00a446a6aa06e004446a6aa0720064466a60fc008466a60fe0064a66a6088666ae68cdc780100082302289981d00280188229022919a983f80190229299a9822199ab9a3371e00400208c08a26607400a006208a66aa06c008006002640026aa1000244a66a6a0fa0022a0fe4426a6aa06e004446a6aa072004446466a60fe006466a6100020184a66a608a666ae68cdc78010008238230a801899a8438099aa81f8038031805804119a8438099aa81f8038031805804119a984000806119a8438099aa81f80380318058041299a9822999ab9a3371e00400208e08c2a006266a10e0266aa07e00e00c60160102a66a608466070002012200a266a1080266aa078008006601000a2244446666aa00a008440020026a0282446600466aa06e00a00800222444466aa60182400246a6aa0680024466aa06e004666a6aa014002400244660100040024002666aaa00a008004002222444666aa600824002a0f466aa60142400246a6aa0640024466aa06a0046aa016002666aa600824002446a6aa06600444a66a6078666aa601e240026a01aa02446a6aa06c002446601400400a00c2006266a0fc008006a0f600266aa60142400246a6aa064002446466aa06c006600200a640026aa1020244a66a6a0fc00226aa0160064426a6aa07000444a66a608266018004010266aa02000e0022600c006004640026aa0f44422444a66a6a0f400220044426600a004666aa600e2400200a00800222424446006008224424446600400a008224244460020082240022466a00a44666a6a012006440040040026a6a00e00244002640026aa0e8442244a66a6a0e60022a0ea44266a0ec600800466aa600c24002008002640026aa0e64422444a66a6a0e600226a6a00c00644002442666a6a01000a440046008004666aa600e2400200a008002244246600200600424002266a00444a66a6058004205c20020562442466002006004240022466a002a0d4a0d62444006244400444442444666600200e00c00a0084002244004424460020064002444442446666600400e00c00a008006244002400224444400a2444440084444244444666600601201000e00c444442444446666600401401201000e00c44424444466600201000e00c400244424666002008006004400244666ae68cdc380100080c00b899ab9c491024c64000143200135505822533535055001150052213535500f0022233574066ec0d4d5404400888cdd2a400066ae80c154008cd5d018270009bb1498dd40009803001990009aa82b91299a9a82a0008a8021109a9aa8070011119aba033760609e0046ea0004c01800cc8004d54158894cd4d414c0045400c884d4d5403400888cd5d019bb0304d0023750002600c00626ec92635002220013500122002355550531222330032225333333333335302900122153353014333007005004002133300700500400110152321300135300b00422220033200135505922533535056001101622135355010002225335301933014002007101b13006003101321533530133330060040030011014101522153353014333007005004002101613330070050040011014221333573466e1cccc018014010008ccc018014010004058054884ccd5cd19b88333006005004002333006005004001015016221333573466e24ccc018014010008ccc018014010004054058884ccd5cd19b89333006005004002333006005004001016015221333573466e20ccc018014010008ccc0180140100040580548894ccccccccccccd4d40d8004884cdc01998030028020011998030028020009109a98058021111199806803002802119098009a98058021111001990009aa82c9119a9a82b000a4000446a6aa02000444a66a60326602800400e20022600c0064442a66a602a66601000c00a006266600e00c00a004266600e00c00a002420024644646464642a66a6032666ae68cdc3a80324000036034290000a99a980c999ab9a3370ea008900000d80d0a40002a66a6032666ae68cdc42801a80080d80d0a8010a99a980c999ab9a33712a006a002034036266e014008cdc1180ba803180ba8020a99a980c999ab9a3370e66e15400920044800006c068540084cdc0280119b823017500630175004130175003133708a008a004266e08c054cdc2a801a800a4008266600e00c00a002266600a00800600244266e08ccc018014010008ccc01801401000484cdc0a400066600a0080060024644642a66a602c666ae68cdc419b8230153370aa002a0069002180aa80180c00b899b845001500313370066e114005400ccdc1180a2800980a2801899b82333007006005001353504700322002135350450012200113535500b0032200113535500b003220022213370266600c00a00800466600c00a008002464260026a60160084444004640026aa0b24466a6a0ac0029000111a9aa80800111299a980c999ab9a3371e00400e03603420022600c006446446004002640026aa0a64466a6a0a00029000111a9aa805001111a9aa8060011119a9828801119a98290059299a980b999ab9a3371e0040020320302a66a602e6601a006016200a2601400e2601400e4601400e466a60a40164601400e4a66a602e666ae68cdc780100080c80c0a99a980b9980680180588028980500389805003911a9820801111a982180191299a9808199ab9a3371e00800402402226601a0060022022444424666600200a008006004400222442466002006004224002446a6080004446a608400644a66a6016666ae68cdc780200100680609980380180088061119a9821001119a98218011198028010009004919a9821801100491980280100091199ab9a3371e00400200e00c4a66a6006666ae68cdc4800a400000800a29001099a9801999ab9a3370e00290000028022400090009299a9801199ab9a3371000290000018020800899b81480000044880084880048004d400888004d400488008d55541084888cc00c94cccccd4c014004884cdd2a401466ae80c05c008cd5d018028009bb14984cdd2a40006ec52622213374a900219aba03018003335740600c00466ae80c018004dd8a4c444266e952008335740607200666ae80cd4c09448004060008cd5d018030009bb1498888884cdd2a400466ae80c0fc014cd5d019a9808802119ba548000cd5d018200009bb14988cdd2a400466ae80c100004dd8a4c66ae80c0e000ccd5d019a98138900080d00119aba03008001376293111099ba548018cd5d01ba730050033357406ea0008cd5d018030009bb149894cd4d41000044dd8a4c44266ae80d4d404400888cdd2a400066ae80ccd4c05400888cdd2a400466ae80c0f4008cd5d01ba73045001376293111119ba548000cd5d0182100219aba03042003335740607600466ae80cd4c0a848004074004dd8a4c466e95200433574060340026ec526335740600e0026ec5263004001221222222330060080071222222005222122222233300400900800722212222223330030090080072222212222223333300200b00a00900800722212222223330010090080072001212230020032122300100320011221233001003002120012212223300300500422221222333300200700600500421222300100420013200135503022533333333333530030012213374a900019aba0300400233574060080026ec526213374a900319aba03025001376293099ba548050dd8a4c4266e95200433574060060026ec5262213374a900119aba0300400233574060080026ec52613374a90091bb1498884cdd2a402066ae80cd4c04448004010008cd5d019a9808890008020009bb1498884cdd2a401066ae80cd4c04448004010008cd5d019a9808890008020009bb1498884cdd2a401466ae80cd4c04448004010008cd5d019a9808890008020009bb1498884cdd2a401c66ae80cd4c04448004010008cd5d019a9808890008020009bb1498884cdd2a401866ae80cd4c04448004010008cd5d019a9808890008020009bb149888488888888888cc02c0340308488888888888c0280304888888888880248488888888888c02003088488888888888cc01c03403048888888888801888488888888888cc01403403088488888888888cc01003403088488888888888cc00c03403088488888888888cc00803403088488888888888cc0040340308004c8004d5408c884894ccccccccccccd4d4014004884cdd2a400c66ae80cd4c01848004010008cd5d019a9803090008020009bb1498884cdd2a400066ae80c078008cd5d0180b8009bb149884cdd2a401c66ae80c068004dd8a4c444266e952016335740600a00666ae80cd4c01c48004014008cd5d019a9803890008028009bb149884cdd2a400466ae80dd40009bb1498884cdd2a403066ae80cd4c01848004010008cd5d019a9803090008020009bb1498884cdd2a401466ae80cd4c01848004010008cd5d019a9803090008020009bb149884cdd2a400866ae80cd4c0144800400c004dd8a4c44266e95200c3357406a6a02a0044466e952000335740604800466ae80c090004dd8a4c66ae80cd4c01848004010004dd8a4c266e952012376293099ba548040dd8a4c44266e95200833574066a600c2400200800466ae80cd4c01848004010004dd8a4c4266e95201433574060320026ec526122122222222222223300d00f00e122122222222222223300c00f00e1212222222222222300b00e12221222222222222233300a01000f00e1212222222222222300900e122122222222222223300800f00e122122222222222223300700f00e1212222222222222300600e122122222222222223300500f00e112222222222222004112222222222222003122122222222222223300200f00e1212222222222222300100e120011221233001003002120012353002001223374a900019aba0375200466ae80dd48009bb14988848cc00400c00880048cdd2a400066ae80dd48009bb14988d4c00800488cdd2a400066ae80dd480119aba030060013762931109198008018011000919a9801000919ba548000cd5d01ba9001376293119ba548008cd5d01ba90013762931091180100190911800801900091ba80013200135500622533535003001137629311099aba0353008002223374a900019aba0375000466ae80dd40009bb1498c0100044488008488488cc00401000c480048848cc00400c0088004448c8c00400488cc00cc00800800444448cc8c8c8c00400488cc00cc0080080048848d4c01048d4c01000cd400c004004848cc0048d400c88c00800c8d400c88c00400c004cc88cc0092211c5f4a4f9f85724ac61b321d7494ecc044922425e29d009b0a89db4f0c00488100221233001003002200110481d8799fd8799fa1d8799fd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f4040ffff1a002dc6c0a0a00affd87980ff0581840001d8799fd8799f1903e81a0297c1e0ff80ff821a001dec5a1a2963c696a200a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633437336868756d696469747981a266736f757263656553485433316576616c75656439372e396b74656d706572617475726581a266736f757263656553485433316576616c756563392e3501a11907b0a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323934326641444145555281a266736f7572636569636f696e4765636b6f6576616c756564312e3439664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565663139322e37376641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3637674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313180 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test7.block b/pallas-alonzo/src/test_data/test7.block new file mode 100644 index 0000000..34eb53d --- /dev/null +++ b/pallas-alonzo/src/test_data/test7.block @@ -0,0 +1 @@ +820585828f1a002f4a4c1a029629ad58205ad2f2deceaccd8146b93759d0fa67991651ca839144e64003be26286d1d378e58209b30232b87e5568f4dd9848a0ea9d91fef54ba11bcd39121cef5e7e6e750f1575820fae4b8f31c676f58a039005d59ea1d2179a83ed2e1f0707b46c2f6c4401d7206825840cf0f48ee58294f1e576a94158d2874d1502116e0cc6a645968c0338e453d774fae0759e2f20d77d413e00c9aa9aaeac090dcbc71a02eb5a15dcb8390bec5e67a585033f146522cf11b4df9382b37b1ea4630bf270317cab1d7c957273426777ae0e4e7d6d700cfec44380a1958dbbee09055b84fcf4b40d506c0ec4c620c005737a250297b877431405eb77c36beee74fa058258400068ee9ea93d139ecca4a7a4ecd9e18c0e233c08149e75080bbbe7b5aac6e3280236d703a9afd93513e972dbaa063c05356512e74c81612d5c9e0436038567fb58500b1bf104008ff1ed4cbb8aeaba933e0a06a0f117dedd8a6f13f6bf62cb00c2225461a88c4e92d9d4b5ab109d58416a76e23d28f36c7d3878e7b16fffa61fb66dea0fbabbc42677f557c3f38384f0d4071904285820d392fb9117513610ab841a17327bc28572cc1fbf47eeaf494917e664d3d014b15820b4590f50ac87d2b4349ba2166b0127c0c78243907e908e6fedb40aedd4b93d7c061901485840b8f3a384c3c4fc4ba055fe96fd152955c04657f84bb5486699222dd2f165f47ce28d8c16cee5df37a6157eb03feadf8318726708af24aa7a4e8115e8cce3790e06005901c0c889981b5e3e242be0d9bc74d7e3cdbb9f1ffd59a11fe2256ee6f66b3c7bf575a847fcdf6899fa14e94bf80da25544c33a21b4fe75166dcef427c97c5386b00b97abfc1a062248aab0ac49054ff3c7de07978850417da22248c31d1c500c92de762ded2c4bf896ff46b16a1cf4f67a4c9e805b25f1286a411e4f29ab1142d988d75a68cc52261d255e7a639917df4dcf04b0b6266e99470f184aa9284e2339138b0bfcf460d558db50c0cd213347db35a13d47dadcffad568e944a70a0a9f2ea34e6cf313d355acf01838f5a0e39afd5ac832a376d03bcb8fbd9f51b75dcfda1a70194842f9793606ba2fefc63fd35fc7032c64887be82b257645b200e0cce00cff671e5444910b85a119970affd8a6121fd07dfdf7482255092025233aba620973f083ffb6b3e1310a8f96573bc117d38827deeea18dd62b44e660fea3dd94cae33bed669d40bd4af7d6cf0e64043a09f3a300932814749610f8e5c66438a7aa6ae5bf662dc81b1fa2b586b2048b0ed8d714c667f5ffd8579919942c64032bb0221b5fcb7625aca20ec2b1c0d189a37db5c03e613234739506d595980a06543e4746a7e82f6ab2e816f13d6d02aa26ab1bba65585fa700dc42b08609075f79f81a600838258204cf7df47e1aa8303380aa4dde4b83545c48e6094fea6735a9885e9e784e6d80d01825820ca60ad59ae9df6b3188d9c6b8545723a973695e58dc5aab6c5edf3b6611a10b501825820cea4b3f0dd6d815cc028c0f6e790bf719f49c334108ca1014e4794fc59344093010d818258202bf219d87408a81b110567b01c8d3cc3fc7e17d4d3585a21587e6a4b454426f3000184825839008cc30a5608abf06060864e214441d9be2362692bc25fda12ee549fbdab0359580d253ffdfd5b7e57692fba68db312d184a23231c24f27c9b1a0098968082583900d34fecdda880807048625cbf1f09af024ab4694c9e45888d2a0de6045c76aa2fefc4b0c3886d2a2adef634ba9040ab91c64d16a224f5737d821a00155cc0a1581cd9a1156d008866951090923bb1d39587aaebb342c50e5fb848f5d84fa1445245563218c883581d7067f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656821a032d3579a1581cd9a1156d008866951090923bb1d39587aaebb342c50e5fb848f5d84fa247504f4f4c4e465401445245563219021c5820aef3b61d6806116a70ada02870f7717249252b70f117d7d2bf1d5e7d4487de25825839008cc30a5608abf06060864e214441d9be2362692bc25fda12ee549fbdab0359580d253ffdfd5b7e57692fba68db312d184a23231c24f27c9b821a00d59f80a1581cd9a1156d008866951090923bb1d39587aaebb342c50e5fb848f5d84fa14953776170546f6b656e1a00989748021a000322e70e800b58200d6e2523d69edd04bdf699a0d369fbc6d39076df73e4d15b2e2f1e20d290355581a4008182582054f1a5800650ab29f920cc05e5cf73bb64a0359c6952e78a8386a6ac4e320e8258403d1a117682859510ae27ee98bb89d24eac0a9dac605c2008a65e85df75de6c5682d0ba3944bd17a1ecfe1f8cf38160d1831a5e7889141e1b2871dfb6843af10703814e4d0100003322222005120012001104839f583f616464725f746573743177706e6c78763278763961397563766e767a71616b7765707a6c396c7478376a7a676d353361763265396e637634737973656d6d3840ff9f5840616464725f7465737431717a7876787a6a6b707a346c716372717365387a7a337a706d786c7a78636e66393070396c6b736a616532666c306474716476347372582c6639386c376c366b6d373261356a6c776e676d76636a36787a32797633336366386a306a64736574666c656bff9f5840616464725f7465737431717266356c6d7861347a716771757a6776667774373863663475707934647266666a3079747a79643967783776707a757736347a6c6d582c37796b727063736d663239743030766439366a7071326879777866357432796638347764377364776c727474ff05838400001864821906a41a0007453484000101821906a41a000745348400021864821906a41a00074534a080 \ No newline at end of file diff --git a/pallas-alonzo/src/test_data/test8.block b/pallas-alonzo/src/test_data/test8.block new file mode 100644 index 0000000..fbcc060 --- /dev/null +++ b/pallas-alonzo/src/test_data/test8.block @@ -0,0 +1 @@ +820585828f1a002f4d0e1a0296858f5820d30abbd390db20acda7e05e70044061b1ba7e9cefd789af35260429ca6e391645820781e538858ec87f656af2dbfffb98fe3badd0a309fca113d775482612b78942d5820cfb54fe3a3b579561ff9664ab36c88b3086f2d8990992a4d6a8f806fc5e2a49e82584062d44549307620bc8a9e375597329295916aa2ef166a5dff38cf661d6826154b3469e8c8ab2c66f74c668b5f189847e7b8105ffcd89d174dadec4362d395c31f5850df9936d73fdd02cabfc62dbaddfeaa1a95e5c83d395c415bbcf07cf4f04a7368942b682264355cdd7d9cc9b15f198f4c01ba8fd01d3f547eb780821cb1361d4ac3499ddd3f1d02220e2c626ba2b68f0f8258400002989ecd9e680e6f6308b86b3fed378610ccbf0174e802eb4224ef7589cc2cf0391e9a1a68e136731cb743913fa021f8174f652d9b9600508f3946b65363a558502f55169f9831afd749f5da3fe5b02080f8cd6078b608a4d927f608bdd3cb6dbb9fe285b3e1d3c7d565aea6683601077e91951e686cbb1bc2321407e127e42d604eaf8f503729f038fcb03f8c5e02630e19448f5820e4894d26c6ada8db76daaed07bf86346b5966b12c2d8e335ea724ce390b58c9e58208afaa44c9c8a288adbfb71d8fa90f3970d633cf043ef98e942544ad69fd8af490219013b58409c91f73b007a068787cab5ee7b086eaae3e2d659f7accb86bd13c066af055e0e7f0fa5a8d739995bc510a0cbf090b50f7698fe53a6c565cdbd3d784050a9600f06005901c019235c693d7bc3d7cb1298353b8d64c6877f7f79d8a03528f60bf8809ae8c5e82cd6ed7c41407df24a3513ac663f0fcc4693137d6ebe1934607056f0fcca150a5cf80071c3ddec1862da3b38b2688a341de5501ac2d238bc77577c4befccd2213e866b4a7fac486a79c31fdf925d75eaadc96dd26cf9c7b2abbf50623176e251b35c5cf2fbd795cd9a598c1f4681a6fdeb08632cd107cc58138ad0a29542f1f20127e7b78eaf867d7af8ad3a0b0d84c352793da16154ad8604f02b299136a9976e8a0a6c91c778b9d09da3521ff132c1db713c051ee806502aee88dde0ec81741b40e78c3c2e763f4e4193402706554f32c1599ddd471bde6d37db7cb9afe73626fb75959442d2d63889fe8e8e1ad83192407cdf1b627128b2150f39ea32fa25ecf812592102971a031fb89af5faad1ebb6120bf9e99d9006bc21c427d2cb10a35a8d370e3902325cab4cceff6b4e7a2b8adfef6a629a2b584643ad7e0673fa73af769930f1ab9d62ca6963abcddff6e4370dca8584b10b51ba3fb836c1da6014710501a2483b9745a3498e7db265a808172dd165a1d5a320c12a2451800572df48e0ef3f29b86f35590b219ef3b5bb3aa64770595435816bf2f2c39457f5eab86a6008282582027c06cb7afec7f4b01d09f1ec925c409016f9f43d88fd62b23bf8b31ba9d112601825820dfb3f1aef30c7c47ff958e5e0cc27744398df82aa6d84fedd12bfe6e63413c1e010d800182825839000032593e2389bda4c884087ca763220d024b182ebc7fb8ec07adeb7fc4407a82b028484cf8622d4f64def9660d0e8f052bdf7a8d39535c02821a0017ad4aa2581c919e8a1922aaa764b1d66407c6f62244e77081215f385b60a6209149a1494861707079436f696e01581cee1ce9d7560f48a4ba3867037dbec2d8fed776d94dd6b00a35309073a1400182583282d818582883581cece34802bbdcc1ecf50ca6a21d82514705dc3e06fd94949735d43fb5a102451a4170cb17001a4cba3d78821b00000002525e08aca2581c919e8a1922aaa764b1d66407c6f62244e77081215f385b60a6209149a1494861707079436f696e19098b581cee1ce9d7560f48a4ba3867037dbec2d8fed776d94dd6b00a35309073a14019098b021a0002ecc1031a0296a1890e80a40081825820cf924e3495576deb2deebe7a6aeb6a422202aef8d27854ce4f9d29e4f6390a2f01018282581d6006c3c7ecc3f97e1b5d0d05bb1e8b44ac2a73e7cf767346ccb587b12c1a000f462882583900854d6ebfd81988398cbef8b7c41e2b9fe60fbb8323015c0631b9cb56a29f25c3b2958ad9d7b5a4901c8843a37de2377bd45cf01e6bfc378a1a3b770406021a00029cd5031a029690f5a6008182582031048c5722d1e9a1f38cf7ea927d620337eaf0c7540516ee4aef9f0495a3b93f010d80018282583900bffeacdf5e3d749556967c302494a478df09c7c151e4ca71ab1e8844127091560ab705ca71391484675cb53b454898cf37934c7783093d2a821a00186a00a2581c919e8a1922aaa764b1d66407c6f62244e77081215f385b60a6209149a1494861707079436f696e01581cee1ce9d7560f48a4ba3867037dbec2d8fed776d94dd6b00a35309073a140018258390083fc54d8f84b99f2fcf9d5f04bd2f99790e3d72a242d5122aa9696f1eb54ea5e1faa92afe966f769d1f6b4d11d68450ca5d1f00e93aec38e821a0142b0bba2581c919e8a1922aaa764b1d66407c6f62244e77081215f385b60a6209149a1494861707079436f696e02581cee1ce9d7560f48a4ba3867037dbec2d8fed776d94dd6b00a35309073a14002021a0002b4e5031a0296a1900e80a40081825820ca036f7580e13c47bc461abbbffa0f6b836d7925d2a784198090ac1c0359c7e90001818258390076b0d16f5d09ac02dd1786981066f6fedf7ac165a08b3b6f0fb33f039bf76872ce2fc9debc7c431ce4700ea060a5aefdec0a173d8ed6b4261b0000000b85bba631021a00029d5907582094e2c6ffae545868a3346508891e33a2a0b3c920f3f0b47997d44bc5df4a8999a400818258203fbf3afab2bb5657885f44c761ac56064408d2dae770bf90c910745a26ebca4f000181825839009493315cd92eb5d8c4304e67b7e16ae36d61d34502694657811a2c8e32c728d3861e164cab28cb8f006448139c8f1740ffb8e7aa9e5232dc1b0000000449c9e929021a0002aeb507582056bcd13ce4d6be915b1f29e84571b91d04db1239622011728954c36bf2702eb7a80082825820b5abf9127ecd036c46750571d8941bb8540c11e447162913f90996916ac1a35800825820b5abf9127ecd036c46750571d8941bb8540c11e447162913f90996916ac1a358010d81825820b5abf9127ecd036c46750571d8941bb8540c11e447162913f90996916ac1a35800018282581d600a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e071a35a70eed82581d600a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e071a00e4e1c0021a001007ea031a02aea540081903e80e81581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e070b58206e8e6afa2d23bcec955df34e9814032caf264ae4d930c924d67435fc09ef4a2186a102828458200a2afaf76ee673cc4d05ad6c5a0ec0e2f0bc0a00ebafa4065060d153fa83c4a158404360e2f615fd780abe293efa83fac0870475e41aad0f98669ee6207634c227ba20592deb53c688e3aaf0644ce6a33fc9e422811731920b27032b1edd3e935e085820da128e48735a88d641b07fa26077d22da8c0f2027b71946d2cb50d6685cbf2c748a102451a4170cb178458201a5bf25e0ff61c460f99c36e2557371f56e7e5924cfeeb35cbbe4aaaf09fd67458400aa2db98da457fd593140b724b63bc565a8fb8e92a9c6b7caddecd5b8c1882cea045a4124164152effd92975dfb003338eddb01ecbea377a91978a392bcbab015820d9aa9fad526ff5f25ff294779f255eb264b7f189a1b6e87e8cc17b0ad2b3d60f48a102451a4170cb17a100818258206e769365e57049f073423b638498a389a5b74e52659edce1950afa17c93ea1b05840bd5d681effbdf159ab86b057be849fd871e8e8ded2d08798bca39e1b24cbf87e3a693c306a51ee6da63b12f005f6c3a4368ef5ae8ba57a5cdf7a2577b036e50ea1008182582040ed1b93d3e7c4c92493c12a7c292c4a1cebf2c04a8daffab0d6444e03aa51c75840d7b9161504f5eb24156841e404f65c3727a5ddd9d304d6a7947959f4093f0abc1e7c372d3830ca206cc8a9b9b3857afe23d721e197806eef5c9f6488be604f08a100818258209dd11e64a93710854fedf85f1b4b23192079b812b67ac3ee0b97bdb1111380615840ea2ee2969a59a32e6455b293155d85e88344f1c0c8c94b8048ace3575ef18f75479b8c8f24c93eabe007546904bc2abb1e0d4a1660414d3440218c8c95f6bd0ea1008182582073fea80d424276ad0978d4fe5310e8bc2d485f5f6bb3bf87612989f112ad5a7d58402510cdd5d9e8b9e49a077a7aa2fd23e02672380f171741f77266631a89cdd5fbeb1577256f687005270151361a90db9b88c3bd30a4267439393b998530a5b400a40081825820669ed15b1bc5e97ec45af8951e9cbcbd33a3b5878943704d054a1a3ec46be2825840556299199c386e3e9be637f8669f5d024e979d295cb46f1be5fb83b40ac813b01587876b70d242ddb8416f325794e50f1ac85e5930d29e7242e4e361a65d6c0c038159396259395f010000332332233223232333222323322323233333333333332222222222222323333333333332222222222223233223332223333222233223332223333333222222232323333222233223322332232333222323332223233333333222222223233322232333322223232332232333222323232332233223233333222223322332233223322332233223322222232325335302f333006300800530070043333573466e1cd55cea8012400046601664646464646464646464646666ae68cdc39aab9d500a480008cccccccccc064cd41708c8c8cccd5cd19b8735573aa004900011980f981b1aba15002302b357426ae8940088d426804d4c26c04cd5ce2481035054310009c0149926135573ca00226ea8004d5d0a80519a82e0139aba150093335502d75ca0586ae854020ccd540b5d728161aba1500733505c03f35742a00c66a0b866aa0a0090eb4d5d0a8029919191999ab9a3370e6aae754009200023350213232323333573466e1cd55cea80124000466a05266a07ceb4d5d0a80118219aba135744a00446a13c026a613e0266ae71240103505431000a00149926135573ca00226ea8004d5d0a8011919191999ab9a3370e6aae7540092000233502733503e75a6ae854008c10cd5d09aba2500223509e0135309f01335738920103505431000a00149926135573ca00226ea8004d5d09aba2500223509a0135309b013357389201035054310009c0149926135573ca00226ea8004d5d0a80219a82e3ae35742a00666a0b866aa0a0eb88004d5d0a801181a9aba135744a00446a12c026a612e0266ae7124103505431000980149926135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135573ca00226ea8004d5d0a8011919191999ab9a3370ea00290031180f181b9aba135573ca00646666ae68cdc3a801240084603a60826ae84d55cf280211999ab9a3370ea00690011180e98161aba135573ca00a46666ae68cdc3a80224000460406eb8d5d09aab9e50062350910135309201335738920103505431000930149926499264984d55cea80089baa001357426ae8940088d422804d4c22c04cd5ce249035054310008c0149926108b011350890135308a013357389201035054350008b014984d55cf280089baa001232323333573466e1cd55cea8012400046608264646464646666ae68cdc39aab9d5004480008cccc124ccd54088cd541142180422805d69aba15004333550220830175a6ae85400cccd5408820805d69aba15002375a6ae84d5d1280111a845809a98460099ab9c491035054310008d0149926135744a00226ae8940044d55cf280089baa00135742a00460946ae84d5d1280111a842809a98430099ab9c490103505431000870149926135573ca00226ea8004d411c8c8c8c8c8c8c8cccd5cd19b87500148010812c8cccd5cd19b875002480088cc138c20804d5d0a8021bad357426ae8940108cccd5cd19b875003480008cccc138c21804d5d0a8041843009aba15007308a0135742a00c6eb4d5d09aba2500623508b0135308c01335738921035054310008d014992649926135573aa00a26aae7940104d5d1280089aba25001135573ca00226ea80048848cc00400c0088004888888888848cccccccccc00402c02802402001c01801401000c00880048848cc00400c008800448848cc00400c0084800448848cc00400c0084800448848cc00400c00848004848888c010014848888c00c014848888c008014848888c00401480048c8c8c8cccd5cd19b8735573aa006900011998039919191999ab9a3370e6aae754009200023300d302e35742a00466a0200546ae84d5d1280111a83c1a983c99ab9c491035054310007a49926135573ca00226ea8004d5d0a801999aa805bae500a35742a00466a018eb8d5d09aba25002235074353075335738921035054310007649926135744a00226aae7940044dd50009110919980080200180110009109198008018011000899aa800bae75a224464460046eac004c8004d541c088c8cccd55cf80112824119a82399aa81798031aab9d5002300535573ca00460086ae8800c1c04d5d080089119191999ab9a3370ea002900011a80418029aba135573ca00646666ae68cdc3a801240044a01046a0dc6a60de66ae712410350543100070499264984d55cea80089baa001121223002003112200112001232323333573466e1cd55cea8012400046600c600e6ae854008dd69aba135744a00446a0d06a60d266ae71241035054310006a49926135573ca00226ea80048848cc00400c00880048c8cccd5cd19b8735573aa002900011bae357426aae7940088d4190d4c194cd5ce24810350543100066499261375400224464646666ae68cdc3a800a40084a00e46666ae68cdc3a8012400446a014600c6ae84d55cf280211999ab9a3370ea00690001280511a8339a983419ab9c490103505431000694992649926135573aa00226ea8004484888c00c0104488800844888004480048c8cccd5cd19b8750014800880188cccd5cd19b8750024800080188d417cd4c180cd5ce2490350543100061499264984d55ce9baa0011220021220012001232323232323333573466e1d4005200c200b23333573466e1d4009200a200d23333573466e1d400d200823300b375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c46601a6eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc048c050d5d0a8049bae357426ae8940248cccd5cd19b875006480088c050c054d5d09aab9e500b23333573466e1d401d2000230133016357426aae7940308d4190d4c194cd5ce2481035054310006649926499264992649926135573aa00826aae79400c4d55cf280109aab9e500113754002424444444600e01044244444446600c012010424444444600a010244444440082444444400644244444446600401201044244444446600201201040024646464646666ae68cdc3a800a400446660106eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d400920002300a300b357426aae7940188d4154d4c158cd5ce2490350543100057499264984d55cea80189aba25001135573ca00226ea80048488c00800c888488ccc00401401000c80048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423504f35305033573892010350543100051499264984d55cea80089baa001212230020032122300100320011122232323333573466e1cd55cea80124000466aa018600c6ae854008c014d5d09aba2500223504c35304d335738921035054310004e49926135573ca00226ea80048848cc00400c0088004888848cccc00401401000c0088004448848cc00400c008448004884888cc00c01401088884888cccc00801c01801401048880048004c8004d5410088c8c8c8c8c8c8c8c8c8c8c8c8c8cccd5cd19b875001480288cc060c09cd5d0a80198081aba135744a00646666ae68cdc3a80124010466602c60866ae854018cd4c0d4480040a0d5d0a80298089aba135744a00a46666ae68cdc3a801a400c466602a66a026464646666ae68cdc39aab9d5002480008cd408cc8c8c8c8c8c8c8cccd5cd19b875001480108c0b4c0d4d5d09aab9e500723333573466e1d40092002233030305235742a00866a040464646666ae68cdc39aab9d5002480008cc0e4dd69aba15002375a6ae84d5d1280111a82f1a982f99ab9c4901035054310006049926135573ca00226ea8004d5d09aba2500423333573466e1d400d200023333030305635742a01060ac6ae85401cc168d5d0a80319a98220900081b9aba135744a00c46a0b66a60b866ae71241035054310005d4992649926135573aa00a26aae7940104d5d1280089aba25001135573ca00226ea8004d5d0a801180b1aba135744a00446a0a26a60a466ae71241035054310005349926135573ca00226ea8004d5d0a8049bad35742a01060246ae84d5d1280411999ab9a3370ea0089002119980c98151aba1500c301335742a01660266ae84d5d1280591999ab9a3370ea00a900111999980c18251aba150113232323333573466e1d4005200223022304e357426aae79400c8cccd5cd19b875002480008c090c13cd5d09aab9e50042350543530553357389210350543100056499264984d55cea80089baa00135742a020609c6ae85403ccd4c0e0480040acd5d0a807180a1aba135744a01c46666ae68cdc3a80324000403846a0a06a60a266ae71240103505431000524992649926499264984d55cea80609aab9e500b135744a00226aae7940244d5d1280089aab9e5007135744a00226aae7940144d5d1280089aba25001135744a00226aae7940044dd50008919118011bac001320013550402233335573e0024a02e466a02c60086ae84008c00cd5d100101f91091111119803004003891111100291109111111998020048040039110911111199801804804003911110911111199998010058050048040039110911111199800804804003900090911801001909118008019000891091980080180109000910911198018028021111091119998010038030028021091118008021000889100109109119800802001890009109198008018011000990009aa814911919191919191919191999ab9a3370ea002900a100b11999ab9a3370ea0049009100a11999ab9a3370ea006900811980a19a980d890008071aba15005335301b1200100e357426ae8940148cccd5cd19b875004480388cc048cd4c0704800403cd5d0a80399a980e090008079aba135744a00e46666ae68cdc3a802a401846602466a603a240020206ae854024cd4c07448004040d5d09aba2500923333573466e1d4019200a233015335301e1200101135742a01666a603c240020226ae84d5d1280591999ab9a3370ea00e900411980b99a980f890008091aba1500d335301f12001012357426ae8940348cccd5cd19b875008480188c078c0bcd5d09aab9e501123333573466e1d402520042301d3014357426aae7940488cccd5cd19b87500a480088cc074c054d5d0a808980a9aba135744a02246666ae68cdc3a805a4000466044602c6ae85404cc058d5d09aba2501323503a35303b3357389201035054310003c499264992649926499264992649926135573aa01026aae79401c4d55cf280309aab9e5005135573ca00826aae79400c4d55cf280109aab9e500113754002442444444444446601601a0184244444444444601401824444444444401242444444444446010018442444444444446600e01a01824444444444400c442444444444446600a01a018442444444444446600801a018442444444444446600601a018442444444444446600401a018442444444444446600201a0184002640026aa038442446464646464646464646666ae68cdc3a800a402c4666a03060186ae854010cd4c03848004030d5d0a80199a9807090008061aba135744a00646666ae68cdc3a8012402846a022603a6ae84d55cf280591999ab9a3370ea00690091280a91999ab9a3370ea00890081280a91999ab9a3370ea00a900711a80e98109aba135573ca01c46666ae68cdc3a80324018466a03666a6026240020226ae854028cd4c04c48004044d5d09aba2500a23333573466e1d401d200a233501b33530141200101235742a01866a6028240020246ae84d5d1280611999ab9a3370ea0109004119a80c19a980a890008099aba1500e335301512001013357426ae8940388cccd5cd19b875009480188cd408ccd4c05848004050d5d0a80819a980b0900080a1aba135744a02046666ae68cdc3a8052400846a03a66a602e2400202a6ae84d55cf280991999ab9a3370ea016900111a8109bad357426aae7940508cccd5cd19b87500c480008cd4094c0acd5d0a80a18179aba135744a02846a0606a606266ae7124103505431000324992649926499264992649926499264984d55cea80409aba25001135573ca00c26aae7940144d55cf280209aab9e5003135573ca00426aae7940044dd50008910911111111111198060070068910911111111111198058070068909111111111111805006891109111111111111998048078070068909111111111111804006891091111111111119803807006891091111111111119803007006890911111111111180280688911111111111002089111111111110018910911111111111198010070068909111111111111800806890009191999ab9a3370e6aae75400520002375c6ae84d55cf280111a8061a980699ab9c491035054310000e4992613754002464646666ae68cdc39aab9d5002480008cc018dd71aba150023007357426ae8940088d4030d4c034cd5ce249035054310000e49926135573ca00226ea80048848cc00400c00880048c8c8cccd5cd19b875001480088c018dd71aba135573ca00646666ae68cdc3a80124000460106eb8d5d09aab9e500423500a35300b3357389201035054310000c499264984d55cea80089baa00121223002003212230010032001232323333573466e1cd55cea801240004660126eb8d5d0a8011bae357426ae8940088d4014d4c018cd5ce2481035054310000749926135573ca00226ea80044984800480048848cc00400c0088004448c8c00400488cc00cc008008004cc8c8cc88ccc888c8ccc888c8cc88c8c8cc88c8ccccccccccccc8888888888888c8cccccccccccc888888888888c8cccc8888cc88ccc888ccccccc8888888c8c8c8ccc888c8c8c8c8c8cc88cc88c8c8c8c8c8cccccc888888cc88ccc888ccc888cccc8888c8cc88c8cc88c8c8c8cccc8888c8c8c8c8c8c8ccc888c8c8c8c8c8cccccc888888cccc8888ccc888ccc888cccc8888c8c8c8c8c8c8c8cc88c8c8c8c8c8c8c8cc88c8cc88ccc888ccc888c8cc88c8c8c8c8cc88c8c8cccccccc88888888cc88ccccc88888cc88cc88cc88c8cccc8888cc88cc88cc88cc88cc88c8ccc888ccc888cc88ccccc88888ccc888c8c8c8c8c88888d4c14001088d4c1540148c88d4c0800188c8c88cd4c04cccc88c88d4c07c01088d4d542f0040088c88cd4c0994cd4c31804ccd5cd19b880010030c8010c70113028302a33550c0010030011533530c601333573466e20005401c3200431c044c0a0cc0ad401ccd543000400c0044cc09ccd54300054008004d4c2f4040208888cccc3080401000c00940188c07cc088004894ccd4c20c04ccccccc1d032404008004020019421c09421c084c0800944c0800908888854cd4c334040144cccc09001000c00800454cccccd4c34c04034884c09c0a44d4c3100403c88894cd4c34404cccd54c2a8044800541fc883500401034c044c0a40ac4cccc0a002001c0180148884c0a00a88884c0a00a8888884c0a80b08884c0a00a854cd4c31004ccd5cd19b8900150050c6010c50115005100113530b60100122220013301c33550b7013068353550b6015002220023068353550b60150022200100b00700525333353017001135068353066335738921024531000674984d41a0d4c198cd5ce2490245320006749884cd4c08800488d41acd4c1a4cd5ce24810245340006a4988d41a8d4c1a0cd5ce249024533000694984d41a0d4c198cd5ce2490245350006749888c8894cd4c308054cd4c308054cd4c308054cd4c30804d4c2e4040308888ccd54c27c0448004d4161415c8d4d543000400488ccd5cd19b89001480003280432c040104310044d41b0d4c1a8cd5ce249024d310006b4984ccc14422405402cd4c0e8d4c0e14cd4d423004d4c0a403c88d4c0b40088888888888cc10c02802c840044d41b0d4c1a8cd5ce24810253300006b49888004888008430c044310044cd5ce249024d32000c3011533530c20133355309b011200135054505325333530740012213530fb0100222300d00122221300d00310c5010101533530c20133355309b01120013505450532353550bc010012233530fe010022533530c6013330550760023335530980112001501850850235302f00d22222222223335530a201120012235304a00222235304f0032233530700022533530d801333573466e3c04c00436804364044cd42580801401c401c801d423c080244320044cd5ce2481024c61000c7012533530c60133355309f01120013509d0150a20133322223530420012225335350970100121533530ce0133305d095010030061533530ce015335350980100721330cc0100100210cf0113530480042235304a00a22333306700400300200110cf0110cf0110ce01330413060012509101332235303100122222222223305d00c002375200201a0046a605e01a4444444444012219002266ae71241024c62000c701500315333333530c801001221333502a06201133505233064004003333017018333017018500d33355309d011200150152533353076001221508602222213530fb01002223350890233550c5010023350890233550c501001003508a02508a0215084020123306548004ccd54c274044800540555406540144310048884ccd40ac18c048cd414ccc194014010ccc060064ccc0600654038ccd54c2780448005405894ccd4c1dc004885421c0888884d4c3f00400888cd422808cd5431804008cd422808cd543180400400d422c09422c08542140804ccc199200133355309e011200150165501a50062221333502b06301233505333065005004333018019333018019500e33355309e011200150162533353077001221508702222213530fc010022233508a0233550c60100233508a0233550c601001003508b02508b0215085020133306648004ccd54c27804480054059540694018888884ccd40b4194050cd4154cc19c01c018ccc06806cccc06806d4040ccd54c2800448005406094ccd4c1e400488542240888884d4c3f80400888cd423008cd5432004008cd423008cd543200400400d4234094234085421c08054cc1a120013335530a0011200150185501c50082221333502b06301233505333065005004333018019333018019500e33355309e011200150162533353077001221508702222213530fc010022233508a0233550c60100233508a0233550c601001003508b02508b0215085020133306648004ccd54c27804480054059540694018430c04430c04430c044ccd54c2600448004cc88cd427004cd54244040080054200082ec0540448d4c2a804004888cd4c340040089420c088cd420808cd542f804004009420c080044d4d4098d4c090008888888888801088d4d40b0008894ccd4d40c00088c854cd4c3040400c4d4d40b8014894ccd4d40d0008854cd4c310040084c010584cd542f8040140044c00c584c00c584c004588d4d40b8014894ccd4d40d000884cd542f804cdc0002983500319b81001306a0021306a161306a1613066161306616233530f4010012533530bc0135302500322222222225335350900133355309f011200150522533530c701333573466e3c03000432404320044d424c04004542480400c8432404431c0442f8044cd5ce2481024c34000bd012533530bc0133304b06c3350fa0133550b6010073350fa0133550b6010014800943ec0543ec04d4c09400c8888888888ccd54c27c0448005405c8d4c0f400488d4c10400488800802842f8044cd5ce249024c35000bd01132333553091011200150092353550b20100122353550b401002223530ef01001223350fd0133550b9010023350fd0133550b90100100550fe0150fe010013530ae010012222004133508a01500150ee01130010022223355308801120012353550aa010012233550ad010023355308b01120012353550ad010012233550b00100233353550890100123300a4800000488cc02c0080048cc02800520000013304000200122337000040022246a6aa14a0200244002424460040064444244666600200c00a00800640022444400824444006424444600400a24444002400244246600200600440024244600400644244660020080064002442446600400800642446002006400224446a6008004446a601000444444444446a6a06c01a44a66a615602666aa610802240026a10402a10e0246a6048002444a66a6a0f200242a66a61600266607e0ee00600c2a66a6a0f466076602c00e012426615c02002004216202216202216002a66a6a0ea6604001801a426a6044002446a604c002444666aa61060224002446a60560044446a6060010446a606400a44a66a617402666609e008006004002266a1f0020120102010a1e00202226a0aa6a60a666ae71241024c660005449842b4044cd5ce2481024c31000ac012212330010030022001222222222212333333333300100b00a009008007006005004003002200112212330010030021200112212330010030021200112212330010030021200112122230030041122200211222001120012253333530090012150592150592150592133355306712001501a23530050012253353091015335309101333573466e3cd4c04800888008d4c0480108800824c04248044ccd5cd19b873530120022200135301200422001093010920110920113505d0031505c00322123300100300220012221233300100400300220012212330010030022001212222300400521222230030052122223002005212222300100520012212330010030022001212222222300700822122222223300600900821222222230050081222222200412222222003221222222233002009008221222222233001009008200122533535041333553050120015003235355071001225335307a333573466ebc0040141f01ec4d411800c5411400484d4110d4d541c400488008541084cd413c894cd4d41000088400c400540fc48848cc00400c00848004888ccd54c13448004d401940148d4d541b800488ccd54c14048004d402540208d4d541c400488ccd4d541340048cc0292000001223300b00200123300a00148000004cc01000800488cd54c128480048d4d541b000488cd541bc008ccd4d541200048cd54c138480048d4d541c000488cd541cc008d5413c00400488ccd5541201d00080048cd54c138480048d4d541c000488cd541cc008d54134004004ccd55410c1bc0080044cd400c894cd4c1c4008400441c81c448cd412888ccd4d401000c88008008004d4d40080048800448848cc00400c008480048888c8cd4c0240148cd4c02801094cd4c1c8ccd5cd19b8f00200107407315003107320732335300a0042073253353072333573466e3c0080041d01cc5400c41cc54cd4d40e400c854cd4d40e800884cd4c01c0088cd4c0200088cd4c0300088cd4c0340088cc1c800800481d88cd4c03400881d88cc1c80080048881d8888cd4c02801081d88894cd4c1dcccd5cd19b87006003079078153353077333573466e1c0140081e41e04cc0f801000441e041e041c454cd4d40e4004841c441c48488c00800c888488ccc00401401000c80048488c00800c8488c00400c80048848cc00400c00880048d4c00800488cdd2a400066ae80d4c1700088888cdd2a400066ae80dd3180580219aba0374c601800666ae80dd3180680119aba037500026ec52633574060d20026ec526221233001003002200122335530391200123535505b00122335505e0023355303c1200123535505e00122335506100233704010002002002640026aa1400244a66a6a13a020022a00a4426a6aa0b60044466ae80cdd81a9aa82e8011119ba548000cd5d0184f0080119aba03097010013762931ba800130060033200135509f012253353509c01001150042213535505a0022233574066ec0c26004008dd40009803001990009aa84f0091299a9a84d808008a8019109a9aa82c8011119aba033760612c020046ea0004c01800c4dd924c466a60b600290002400446a0086a600466ae712401024d72000034984800480044988cdc199b81001483c2032323cd7120d00f3200135509601222222225335304333333302205d006005004509b01509b0122222153353509e0100813333301d5335306100c1063100533355303312001509f013500e00400733502600600300200122153333335306900322102210202221023222102322222102522215335301b33330150100070050032221333333301506b01300200100733355303b1200150a70133355303b1200150a70153353021003150a801222213504c1223300233330320060050040030013501600c00f33502e00e00b1023101a12333355302d120015002225333335304200213350940101a00110012222133509801333301c004003002001005222221335099013333301c005004003002001006222133509701333019003002001004001509301133502d22230033002001200132001355093012222253335300700222153353509501003100e221353506a0022253335306e0022215335305e3305900800215335305e3335530371200135035503a235309f010012253353061333573466e2002800818818c4cc04402800441880044ccc054060d4c15402c8888cccc168010cccd540c417403002c00c00800400c4cccc03403002c0280144cccc03403002c02801488884cccc03c03803403001c84cccc03002c028024010888854cd4d425c040144040884d4d41b0008894ccd4c1c0008884cccc03c0380340300148888c8c84cd4c274040388cd4c2780401c94cd4c198ccd5cd19b8f002001068067150031333301501401301200b2333301501401301200b2335309e010072333301501401301200b253353066333573466e3c0080041a019c5400c4cccc05405004c04802c4cd4c270040308cd4c2740401494cd4c194ccd5cd19b8f002001067066150031333301401301201100a2333301401301201100a2335309d010052333301401301201100a253353065333573466e3c00800419c1985400c4cccc05004c04804402854cd4c188cc16002800854cd4c188ccd5cd19b8700933305401000f001064063133301953353062333573466e240252000063064101c1333301b00300400200935305900f2222333305e333303301000e00d0040030020010051333301101000f00e0071333301101000f00e00721333300e00d00c00b004153353509301001100c22135350680022253335306c002221333300b00a00900e00522221333300d00c00b010007215335305b33304e00900800113330120150080021333300a00900800d00422333573466e2400800415014c884888cc00c01401088884888cccc00801c01801401048880048004888488ccc00801401000c48800480044880088888488cccc00401801401000c8004488800c4888008888884888ccccc00402001c01801401080044888880148888488888cccc01002402001c0188888488888cccc00c02402001c01888888488888ccccc00802802402001c018888488888ccc00402001c0188004488ccd54c03c4800541ec004008c8004d541f08888c88894ccd4c0894cccccd4c12000c884cccc0954cd4c110ccc0dc02001c00840d040d40a801c0044d4c0e401488894cd4d4040c03c01084d4d5410000488d4d5410800888cccc0b00ecc0c0ccc0d8008c164008004cccc10c00c02001c01815840a08884cccc0980d40ac0214cd4c114ccc0e002402000c4008400488c8c884cccc0a0c00940240b4d4c0f80288888cccc10c01000ccccd54068120025401d4034004004c8004d5421c04894cd4d42100400440dc884d4d54108008894cd4c12cccd5cd19b8f00200904d04c1333038009001500713006003133303600800700122232232323232215335304c333573466e254015200004e04d1333302d333303b00a009008500503200f0011333302d5335304c333573466e21401140141381344ccccc0e80280240214011401440f0d4d54115400888008d4c10c03c8888cccc120d4d5412540188800400c0080040044d4c1f001888cd54118c0c4ccc0dc028024cd422804cd54118008cd422804cd541180054011422c05422c04cd4c1640248cccc068004cc2000400c00940154010940104cccc05c01c014cdc0a80228009a982000611110020a99a9824199ab9a33712a006a0020940922a0062a002266607201601400226a6078010444466607c00e00a0084442a66a608a666ae68cdc41a9aa81f0049100080102382308138a99a9822999ab9a337120046a6aa07c0124400408e08c2666604c06a0560100022050205426666605600e6a0140046a01400200a00644442666666018090014004002a66a608ca66666a6064008208e2a66666a606406c208e209044442096444442098444209444442a66666a606c0742096209644446464266a611202014466a61140200e4a66a60a4666ae68cdc780100082a0298a80188299029919a98450080390299299a9829199ab9a3371e0040020a80a62a00620a6266a60b8010466a60ba00a466a611402004466a6116020044a66a60a6666ae68cdc780100082a82a0a802882a102a119a984580801102a1299a9829999ab9a3371e0040020aa0a82a00a20a840a4466a60ba00a40a4466a611402004466a6116020044a66a60a6666ae68cdc780100082a82a0a802882a102a119a984580801102a1299a9829999ab9a3371e0040020aa0a82a00a20a82a66a609c6608800c00426602a00a002209e4444420a0444209c444442a66666a606e07620982098444420a0444446464266a611602018466a6118020104a66a60a8666ae68cdc780100082b02a8a801882a902a919a984600804102a9299a982a199ab9a3371e0040020ac0aa2a00620aa266a60bc014466a60be00c466a611802004466a611a020044a66a60aa666ae68cdc780100082b82b0a802882b102b119a984680801102b1299a982a999ab9a3371e0040020ae0ac2a00a20ac40a8466a60be00c40a8466a611802004466a611a020044a66a60aa666ae68cdc780100082b82b0a802882b102b119a984680801102b1299a982a999ab9a3371e0040020ae0ac2a00a20ac2a66a60a06608c0100062a66a60a0666ae68cdc380380102902889980b8030008828882891108279110a99999a981a81c88250825111108271111108279110a99a9826199ab9a3371e00c00609c09a2a66a6098666ae68cdc3802801027026899809802000882688268803099a84200802003299a981500188029099a8428080080309a981a800911100111199ab9a3370e00400207a078264466004002a0f2640026aa0f4444a66a6a0f000420024426600a00266a0f6004006640026aa0f244a66a6a0ec0022a0084426a6aa068004446a6aa06c004446a60e200244a66a6082666ae68cdc4802a400008408626a01a66aa07666aa07600866a0fe66aa07600466a0fe66aa07600200aa10002a1000200e2601400e2424460040062244002240024444a66a606e666ae68cdc48012400007207020022666600a00800666e00ccc0b001000c00400800488c894cd4c0d8ccd5cd19b89001480000e00dc48c00c0044ccd5401488d4d540c400888d4d540cc00c88cd4c1d40108cd4c1d800c94cd4c0f8ccd5cd19b8f00200104003f133034005003103f203f23353076003203f25335303e333573466e3c0080041000fc4cc0d001400c40fccd540c001000c004c8004d541d8894cd4d41cc004541d4884d4d540c400888d4d540cc00888c8cd4c1d800c8cd4c1dc03094cd4c0fcccd5cd19b8f00200104104015003133507d3355039007006300b008233507d3355039007006300b0082335307700c233507d3355039007006300b00825335303f333573466e3c0080041041005400c4cd41f4cd540e401c018c02c02054cd4c0f0cc0c800402440144cd41e8cd540d801000cc020014448888cccd5401401088004004d4050488cc008cd540c4014010004448888cd54c030480048d4d540b800488cd540c4008ccd4d54028004800488cc0200080048004ccd554014010008004444888ccd54c0104800541c0cd54c028480048d4d540b000488cd540bc008d5402c004ccd54c0104800488d4d540b4008894cd4c0d8ccd54c03c48004d403540488d4d540c000488cc028008014018400c4cd41d001000d41c4004cd54c028480048d4d540b000488c8cd540c000cc004014c8004d541dc894cd4d41d00044d5402c00c884d4d540c8008894cd4c0eccc0300080204cd5404001c0044c01800c008c8004d541c088448894cd4d41c00044008884cc014008ccd54c01c480040140100044484888c00c01044884888cc0080140104484888c00401044800448cd401488ccd4d402400c88008008004d4d401c00488004c8004d541a88844894cd4d41a4004541ac884cd41b0c010008cd54c01848004010004c8004d541a488448894cd4d41a40044d4d401800c88004884ccd4d402001488008c010008ccd54c01c4800401401000448848cc00400c008480044cd4008894cd4c09800840a0400409448848cc00400c0084800448cd400541814184488800c488800888884888cccc00401c01801401080044880088488c00400c800488888488ccccc00801c01801401000c488004800488848ccc00401000c00880044888880144888880108888488888cccc00c02402001c01888888488888ccccc00802802402001c018888488888ccc00402001c0188004d400888004d400488008d555413c4888cc00c8894ccccccccccd4c0a40048854cd4c050ccc01c0140100084ccc01c01401000440548c84c004d4c02c010888800cc8004d54154894cd4d41480044058884d4d54040008894cd4c064cc05000801c406c4c01800c404c854cd4c04cccc01801000c004405040548854cd4c050ccc01c01401000840584ccc01c0140100044050884ccd5cd19b87333006005004002333006005004001016015221333573466e20ccc018014010008ccc018014010004054058884ccd5cd19b89333006005004002333006005004001015016221333573466e24ccc018014010008ccc018014010004058054884ccd5cd19b8833300600500400233300600500400101601522253333333333335350360012213370066600c00a00800466600c00a0080024426a6016008444466601a00c00a008464260026a60160084444006640026aa0aa4466a6a0a40029000111a9aa80800111299a980c9980a0010038800898030019110a99a980a99980400300280189998038030028010999803803002800908009191191919190a99a980c999ab9a3370ea00c900000d80d0a40002a66a6032666ae68cdc3a80224000036034290000a99a980c999ab9a33710a006a0020360342a0042a66a6032666ae68cdc4a801a80080d00d899b80500233704602ea00c602ea0082a66a6032666ae68cdc399b85500248011200001b01a15002133700a00466e08c05d4018c05d40104c05d400c4cdc228022801099b8230153370aa006a00290020999803803002800899980280200180091099b823330060050040023330060050040012133702900019980280200180089a9aa8058019100089a9aa8058019100111099b813330060050040023330060050040012321300135300b00422220023200135505522335350520014800088d4d54040008894cd4c064ccd5cd19b8f00200701b01a1001130060032232230020013200135504f223353504c0014800088d4d5402800888d4d5403000888cd4c1380088cd4c13c02c94cd4c05cccd5cd19b8f0020010190181533530173300d00300b10051300a0071300a0072300a0072335304f00b2300a007253353017333573466e3c00800406406054cd4c05ccc03400c02c40144c02801c4c02801c88d4c0f800888d4c10000c894cd4c040ccd5cd19b8f00400201201113300d003001101122221233330010050040030022001112212330010030021120012235303d0022235303f003225335300b333573466e3c0100080340304cc01c00c004403088cd4c0fc0088cd4c1000088cc01400800480248cd4c10000880248cc01400800488ccd5cd19b8f002001007006253353003333573466e2400520000040051480084cd4c00cccd5cd19b870014800001401120004800494cd4c008ccd5cd19b880014800000c01040044cdc0a400000224400424400240026a004440026a002440046aaaa07c2444660064a666666a600a00244266e95200a335740602e00466ae80c014004dd8a4c266e952000376293111099ba548010cd5d0180c00199aba03006002335740600c0026ec52622213374a900419aba0303600333574066a604a2400203000466ae80c018004dd8a4c44444266e952002335740607800a66ae80cd4c0440108cdd2a400066ae80c0f4004dd8a4c466e952002335740607a0026ec526335740606a00666ae80cd4c09c48004068008cd5d018040009bb14988884cdd2a400c66ae80dd3980280199aba0375000466ae80c018004dd8a4c4a66a6a07800226ec5262213357406a6a0220044466e952000335740666a602a0044466e952002335740607400466ae80dd398208009bb14988888cdd2a400066ae80c0fc010cd5d0181f80199aba0303800233574066a60542400203a0026ec52623374a900219aba0301a00137629319aba03007001376293180200091091111119803004003891111100291109111111998020048040039110911111199801804804003911110911111199998010058050048040039110911111199800804804003900090911801001909118008019000891091980080180109000910911198018028021111091119998010038030028021091118008021000990009aa81611299999999999a980180091099ba548000cd5d0180200119aba030040013762931099ba548018cd5d018110009bb14984cdd2a40286ec526213374a900219aba0300300137629311099ba548008cd5d0180200119aba03004001376293099ba548048dd8a4c44266e95201033574066a60222400200800466ae80cd4c04448004010004dd8a4c44266e95200833574066a60222400200800466ae80cd4c04448004010004dd8a4c44266e95200a33574066a60222400200800466ae80cd4c04448004010004dd8a4c44266e95200e33574066a60222400200800466ae80cd4c04448004010004dd8a4c44266e95200c33574066a60222400200800466ae80cd4c04448004010004dd8a4c442444444444446601601a0184244444444444601401824444444444401242444444444446010018442444444444446600e01a01824444444444400c442444444444446600a01a018442444444444446600801a018442444444444446600601a018442444444444446600401a018442444444444446600201a0184002640026aa03e44244a666666666666a6a00a00244266e95200633574066a600c2400200800466ae80cd4c01848004010004dd8a4c44266e952000335740603600466ae80c050004dd8a4c4266e95200e335740602e0026ec52622213374a900b19aba0300500333574066a600e2400200a00466ae80cd4c01c48004014004dd8a4c4266e9520023357406ea0004dd8a4c44266e95200c33574066a600c2400200800466ae80cd4c01848004010004dd8a4c44266e95200a33574066a600c2400200800466ae80cd4c01848004010004dd8a4c4266e95200433574066a600a240020060026ec52613374a90091bb14984cdd2a40206ec5262213374a900419aba033530061200100400233574066a600c240020080026ec526213374a900a19aba0301600137629309109111111111111980600700689109111111111111980580700689091111111111118050068911091111111111119980480780700689091111111111118040068910911111111111198038070068910911111111111198030070068909111111111111802806889111111111110020891111111111100189109111111111111980100700689091111111111118008068900091a98010009119ba548000cd5d01ba90023357406ea4004dd8a4c4424660020060044002466e9520003357406ea4004dd8a4c46a60040024466e9520003357406ea4008cd5d018030009bb14988848cc00400c00880048cd4c0080048cdd2a400066ae80dd48009bb14988cdd2a400466ae80dd48009bb14988488c00800c8488c00400c8004c8004d54018894cd4d400c0044dd8a4c44266ae80d4c02000888cdd2a400066ae80dd400119aba037500026ec52630040011122002122122330010040031200122123300100300220011123230010012233003300200200111112332323230010012233003300200200122123530041235300400335003001001212330012350032230020032350032230010030013322330024891c5f4a4f9f85724ac61b321d7494ecc044922425e29d009b0a89db4f0c00488100221233001003002200110481d8799fd8799fa1d8799fd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f4040ffff1a002dc6c0a0a01a0280de80ffd87c9f9fd8799fd8799fd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f4040ffd87a9f1a00b71b00ffffd87980ffff1a02aea540d87980ffff05818400019fd8799fd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f581c0a11b0c7e25dc5d9c63171bdf39d9741b901dc903e12b4e162348e07ffd8799f4040ff1a00b71b00ffff821a0026c9241a35051c18a203a11907c1a363636f3281a266736f75726365664d485a3031396576616c7565633438396868756d696469747981a266736f757263656553485433316576616c75656439382e326b74656d706572617475726581a266736f757263656553485433316576616c756563392e3504a11907b0a56641444142544381a266736f7572636569636f696e4765636b6f6576616c75656a302e30303030323836356641444145555281a266736f7572636569636f696e4765636b6f6576616c756564312e3437664144414a505981a266736f7572636569636f696e4765636b6f6576616c7565653138392e356641444155534481a266736f7572636569636f696e4765636b6f6576616c756564312e3634674254434449464681a266736f75726365667472657a6f726576616c75657132323637343134383233333435332e313180 \ No newline at end of file