Merge branch 'non_recursive_evm' of github.com:jangko/nimbus into jangko-non_recursive_evm

This commit is contained in:
Ștefan Talpalaru 2019-03-20 14:43:50 +01:00
commit f62601e844
No known key found for this signature in database
GPG Key ID: CBF7934204F1B6F9
21 changed files with 1761 additions and 639 deletions

View File

@ -73,251 +73,251 @@ OK: 2/3 Fail: 0/3 Skip: 1/3
+ call_OOG_additionalGasCosts1.json OK + call_OOG_additionalGasCosts1.json OK
+ call_OOG_additionalGasCosts2.json OK + call_OOG_additionalGasCosts2.json OK
+ callcall_00.json OK + callcall_00.json OK
callcall_00_OOGE.json Skip + callcall_00_OOGE.json OK
callcall_00_OOGE_valueTransfer.json Skip + callcall_00_OOGE_valueTransfer.json OK
callcall_00_SuicideEnd.json Skip + callcall_00_SuicideEnd.json OK
callcallcall_000.json Skip + callcallcall_000.json OK
callcallcall_000_OOGE.json Skip + callcallcall_000_OOGE.json OK
callcallcall_000_OOGMAfter.json Skip + callcallcall_000_OOGMAfter.json OK
callcallcall_000_OOGMBefore.json Skip + callcallcall_000_OOGMBefore.json OK
callcallcall_000_SuicideEnd.json Skip + callcallcall_000_SuicideEnd.json OK
callcallcall_000_SuicideMiddle.json Skip + callcallcall_000_SuicideMiddle.json OK
callcallcall_ABCB_RECURSIVE.json Skip + callcallcall_ABCB_RECURSIVE.json OK
callcallcallcode_001.json Skip + callcallcallcode_001.json OK
callcallcallcode_001_OOGE.json Skip
callcallcallcode_001_OOGMAfter.json Skip
callcallcallcode_001_OOGMBefore.json Skip
callcallcallcode_001_SuicideEnd.json Skip
callcallcallcode_001_SuicideMiddle.json Skip
callcallcallcode_ABCB_RECURSIVE.json Skip
callcallcode_01.json Skip
callcallcode_01_OOGE.json Skip
callcallcode_01_SuicideEnd.json Skip
callcallcodecall_010.json Skip
callcallcodecall_010_OOGE.json Skip
callcallcodecall_010_OOGMAfter.json Skip
callcallcodecall_010_OOGMBefore.json Skip
callcallcodecall_010_SuicideEnd.json Skip
callcallcodecall_010_SuicideMiddle.json Skip
callcallcodecall_ABCB_RECURSIVE.json Skip
callcallcodecallcode_011.json Skip
callcallcodecallcode_011_OOGE.json Skip
callcallcodecallcode_011_OOGMAfter.json Skip
callcallcodecallcode_011_OOGMBefore.json Skip
callcallcodecallcode_011_SuicideEnd.json Skip
callcallcodecallcode_011_SuicideMiddle.json Skip
callcallcodecallcode_ABCB_RECURSIVE.json Skip
callcodeDynamicCode.json Skip
callcodeDynamicCode2SelfCall.json Skip
callcodeEmptycontract.json Skip
callcodeInInitcodeToEmptyContract.json Skip
callcodeInInitcodeToExisContractWithVTransferNEMoney.json Skip
callcodeInInitcodeToExistingContract.json Skip
callcodeInInitcodeToExistingContractWithValueTransfer.json Skip
+ callcode_checkPC.json OK
callcodecall_10.json Skip
callcodecall_10_OOGE.json Skip
callcodecall_10_SuicideEnd.json Skip
callcodecallcall_100.json Skip
callcodecallcall_100_OOGE.json Skip
callcodecallcall_100_OOGMAfter.json Skip
callcodecallcall_100_OOGMBefore.json Skip
callcodecallcall_100_SuicideEnd.json Skip
callcodecallcall_100_SuicideMiddle.json Skip
callcodecallcall_ABCB_RECURSIVE.json Skip
callcodecallcallcode_101.json Skip
callcodecallcallcode_101_OOGE.json Skip
callcodecallcallcode_101_OOGMAfter.json Skip
callcodecallcallcode_101_OOGMBefore.json Skip
callcodecallcallcode_101_SuicideEnd.json Skip
callcodecallcallcode_101_SuicideMiddle.json Skip
callcodecallcallcode_ABCB_RECURSIVE.json Skip
callcodecallcode_11.json Skip
+ callcodecallcode_11_OOGE.json OK
callcodecallcode_11_SuicideEnd.json Skip
callcodecallcodecall_110.json Skip
callcodecallcodecall_110_OOGE.json Skip
callcodecallcodecall_110_OOGMAfter.json Skip
callcodecallcodecall_110_OOGMBefore.json Skip
callcodecallcodecall_110_SuicideEnd.json Skip
callcodecallcodecall_110_SuicideMiddle.json Skip
callcodecallcodecall_ABCB_RECURSIVE.json Skip
callcodecallcodecallcode_111.json Skip
callcodecallcodecallcode_111_OOGE.json Skip
callcodecallcodecallcode_111_OOGMAfter.json Skip
callcodecallcodecallcode_111_OOGMBefore.json Skip
callcodecallcodecallcode_111_SuicideEnd.json Skip
callcodecallcodecallcode_111_SuicideMiddle.json Skip
callcodecallcodecallcode_ABCB_RECURSIVE.json Skip
```
OK: 5/79 Fail: 0/79 Skip: 74/79
## stCallCreateCallCodeTest
```diff
Call1024BalanceTooLow.json Skip
Call1024OOG.json Skip
Call1024PreCalls.json Skip
CallLoseGasOOG.json Skip
CallRecursiveBombPreCall.json Skip
Callcode1024BalanceTooLow.json Skip
Callcode1024OOG.json Skip
CallcodeLoseGasOOG.json Skip
callOutput1.json Skip
callOutput2.json Skip
callOutput3.json Skip
callOutput3Fail.json Skip
callOutput3partial.json Skip
callOutput3partialFail.json Skip
callWithHighValue.json Skip
callWithHighValueAndGasOOG.json Skip
callWithHighValueAndOOGatTxLevel.json Skip
callWithHighValueOOGinCall.json Skip
callcodeOutput1.json Skip
callcodeOutput2.json Skip
callcodeOutput3.json Skip
callcodeOutput3Fail.json Skip
callcodeOutput3partial.json Skip
callcodeOutput3partialFail.json Skip
callcodeWithHighValue.json Skip
callcodeWithHighValueAndGasOOG.json Skip
createFailBalanceTooLow.json Skip
createInitFailBadJumpDestination.json Skip
createInitFailStackSizeLargerThan1024.json Skip
createInitFailStackUnderflow.json Skip
createInitFailUndefinedInstruction.json Skip
createInitFail_OOGduringInit.json Skip
createInitOOGforCREATE.json Skip
createJS_ExampleContract.json Skip
createJS_NoCollision.json Skip
createNameRegistratorPerTxs.json Skip
createNameRegistratorPerTxsNotEnoughGas.json Skip
createNameRegistratorPreStore1NotEnoughGas.json Skip
createNameRegistratorendowmentTooHigh.json Skip
```
OK: 0/39 Fail: 0/39 Skip: 39/39
## stCallDelegateCodesCallCodeHomestead
```diff
callcallcallcode_001.json Skip
+ callcallcallcode_001_OOGE.json OK
+ callcallcallcode_001_OOGMAfter.json OK
callcallcallcode_001_OOGMBefore.json Skip
callcallcallcode_001_SuicideEnd.json Skip
callcallcallcode_001_SuicideMiddle.json Skip
+ callcallcallcode_ABCB_RECURSIVE.json OK
callcallcode_01.json Skip
callcallcode_01_OOGE.json Skip
callcallcode_01_SuicideEnd.json Skip
callcallcodecall_010.json Skip
callcallcodecall_010_OOGE.json Skip
+ callcallcodecall_010_OOGMAfter.json OK
callcallcodecall_010_OOGMBefore.json Skip
callcallcodecall_010_SuicideEnd.json Skip
callcallcodecall_010_SuicideMiddle.json Skip
+ callcallcodecall_ABCB_RECURSIVE.json OK
callcallcodecallcode_011.json Skip
callcallcodecallcode_011_OOGE.json Skip
callcallcodecallcode_011_OOGMAfter.json Skip
callcallcodecallcode_011_OOGMBefore.json Skip
callcallcodecallcode_011_SuicideEnd.json Skip
callcallcodecallcode_011_SuicideMiddle.json Skip
+ callcallcodecallcode_ABCB_RECURSIVE.json OK
callcodecall_10.json Skip
callcodecall_10_OOGE.json Skip
callcodecall_10_SuicideEnd.json Skip
callcodecallcall_100.json Skip
callcodecallcall_100_OOGE.json Skip
+ callcodecallcall_100_OOGMAfter.json OK
callcodecallcall_100_OOGMBefore.json Skip
callcodecallcall_100_SuicideEnd.json Skip
callcodecallcall_100_SuicideMiddle.json Skip
+ callcodecallcall_ABCB_RECURSIVE.json OK
callcodecallcallcode_101.json Skip
callcodecallcallcode_101_OOGE.json Skip
+ callcodecallcallcode_101_OOGMAfter.json OK
callcodecallcallcode_101_OOGMBefore.json Skip
callcodecallcallcode_101_SuicideEnd.json Skip
callcodecallcallcode_101_SuicideMiddle.json Skip
+ callcodecallcallcode_ABCB_RECURSIVE.json OK
callcodecallcode_11.json Skip
callcodecallcode_11_OOGE.json Skip
callcodecallcode_11_SuicideEnd.json Skip
callcodecallcodecall_110.json Skip
callcodecallcodecall_110_OOGE.json Skip
+ callcodecallcodecall_110_OOGMAfter.json OK
callcodecallcodecall_110_OOGMBefore.json Skip
callcodecallcodecall_110_SuicideEnd.json Skip
callcodecallcodecall_110_SuicideMiddle.json Skip
+ callcodecallcodecall_ABCB_RECURSIVE.json OK
callcodecallcodecallcode_111.json Skip
callcodecallcodecallcode_111_OOGE.json Skip
+ callcodecallcodecallcode_111_OOGMAfter.json OK
callcodecallcodecallcode_111_OOGMBefore.json Skip
callcodecallcodecallcode_111_SuicideEnd.json Skip
callcodecallcodecallcode_111_SuicideMiddle.json Skip
+ callcodecallcodecallcode_ABCB_RECURSIVE.json OK
```
OK: 14/58 Fail: 0/58 Skip: 44/58
## stCallDelegateCodesHomestead
```diff
callcallcallcode_001.json Skip
+ callcallcallcode_001_OOGE.json OK + callcallcallcode_001_OOGE.json OK
+ callcallcallcode_001_OOGMAfter.json OK + callcallcallcode_001_OOGMAfter.json OK
+ callcallcallcode_001_OOGMBefore.json OK + callcallcallcode_001_OOGMBefore.json OK
+ callcallcallcode_001_SuicideEnd.json OK + callcallcallcode_001_SuicideEnd.json OK
+ callcallcallcode_001_SuicideMiddle.json OK + callcallcallcode_001_SuicideMiddle.json OK
+ callcallcallcode_ABCB_RECURSIVE.json OK callcallcallcode_ABCB_RECURSIVE.json Skip
callcallcode_01.json Skip + callcallcode_01.json OK
+ callcallcode_01_OOGE.json OK + callcallcode_01_OOGE.json OK
+ callcallcode_01_SuicideEnd.json OK + callcallcode_01_SuicideEnd.json OK
callcallcodecall_010.json Skip + callcallcodecall_010.json OK
+ callcallcodecall_010_OOGE.json OK + callcallcodecall_010_OOGE.json OK
+ callcallcodecall_010_OOGMAfter.json OK + callcallcodecall_010_OOGMAfter.json OK
+ callcallcodecall_010_OOGMBefore.json OK + callcallcodecall_010_OOGMBefore.json OK
+ callcallcodecall_010_SuicideEnd.json OK + callcallcodecall_010_SuicideEnd.json OK
+ callcallcodecall_010_SuicideMiddle.json OK + callcallcodecall_010_SuicideMiddle.json OK
+ callcallcodecall_ABCB_RECURSIVE.json OK callcallcodecall_ABCB_RECURSIVE.json Skip
callcallcodecallcode_011.json Skip + callcallcodecallcode_011.json OK
+ callcallcodecallcode_011_OOGE.json OK + callcallcodecallcode_011_OOGE.json OK
+ callcallcodecallcode_011_OOGMAfter.json OK + callcallcodecallcode_011_OOGMAfter.json OK
+ callcallcodecallcode_011_OOGMBefore.json OK + callcallcodecallcode_011_OOGMBefore.json OK
+ callcallcodecallcode_011_SuicideEnd.json OK + callcallcodecallcode_011_SuicideEnd.json OK
+ callcallcodecallcode_011_SuicideMiddle.json OK + callcallcodecallcode_011_SuicideMiddle.json OK
+ callcallcodecallcode_ABCB_RECURSIVE.json OK callcallcodecallcode_ABCB_RECURSIVE.json Skip
+ callcodeDynamicCode.json OK
+ callcodeDynamicCode2SelfCall.json OK
+ callcodeEmptycontract.json OK
+ callcodeInInitcodeToEmptyContract.json OK
+ callcodeInInitcodeToExisContractWithVTransferNEMoney.json OK
+ callcodeInInitcodeToExistingContract.json OK
+ callcodeInInitcodeToExistingContractWithValueTransfer.json OK
+ callcode_checkPC.json OK
+ callcodecall_10.json OK + callcodecall_10.json OK
+ callcodecall_10_OOGE.json OK + callcodecall_10_OOGE.json OK
+ callcodecall_10_SuicideEnd.json OK + callcodecall_10_SuicideEnd.json OK
callcodecallcall_100.json Skip + callcodecallcall_100.json OK
+ callcodecallcall_100_OOGE.json OK + callcodecallcall_100_OOGE.json OK
+ callcodecallcall_100_OOGMAfter.json OK + callcodecallcall_100_OOGMAfter.json OK
+ callcodecallcall_100_OOGMBefore.json OK + callcodecallcall_100_OOGMBefore.json OK
+ callcodecallcall_100_SuicideEnd.json OK + callcodecallcall_100_SuicideEnd.json OK
+ callcodecallcall_100_SuicideMiddle.json OK + callcodecallcall_100_SuicideMiddle.json OK
+ callcodecallcall_ABCB_RECURSIVE.json OK callcodecallcall_ABCB_RECURSIVE.json Skip
callcodecallcallcode_101.json Skip + callcodecallcallcode_101.json OK
+ callcodecallcallcode_101_OOGE.json OK + callcodecallcallcode_101_OOGE.json OK
+ callcodecallcallcode_101_OOGMAfter.json OK + callcodecallcallcode_101_OOGMAfter.json OK
+ callcodecallcallcode_101_OOGMBefore.json OK + callcodecallcallcode_101_OOGMBefore.json OK
+ callcodecallcallcode_101_SuicideEnd.json OK + callcodecallcallcode_101_SuicideEnd.json OK
+ callcodecallcallcode_101_SuicideMiddle.json OK + callcodecallcallcode_101_SuicideMiddle.json OK
+ callcodecallcallcode_ABCB_RECURSIVE.json OK callcodecallcallcode_ABCB_RECURSIVE.json Skip
callcodecallcode_11.json Skip + callcodecallcode_11.json OK
+ callcodecallcode_11_OOGE.json OK + callcodecallcode_11_OOGE.json OK
+ callcodecallcode_11_SuicideEnd.json OK + callcodecallcode_11_SuicideEnd.json OK
callcodecallcodecall_110.json Skip + callcodecallcodecall_110.json OK
+ callcodecallcodecall_110_OOGE.json OK + callcodecallcodecall_110_OOGE.json OK
+ callcodecallcodecall_110_OOGMAfter.json OK + callcodecallcodecall_110_OOGMAfter.json OK
+ callcodecallcodecall_110_OOGMBefore.json OK + callcodecallcodecall_110_OOGMBefore.json OK
+ callcodecallcodecall_110_SuicideEnd.json OK + callcodecallcodecall_110_SuicideEnd.json OK
+ callcodecallcodecall_110_SuicideMiddle.json OK + callcodecallcodecall_110_SuicideMiddle.json OK
+ callcodecallcodecall_ABCB_RECURSIVE.json OK callcodecallcodecall_ABCB_RECURSIVE.json Skip
callcodecallcodecallcode_111.json Skip + callcodecallcodecallcode_111.json OK
+ callcodecallcodecallcode_111_OOGE.json OK + callcodecallcodecallcode_111_OOGE.json OK
+ callcodecallcodecallcode_111_OOGMAfter.json OK + callcodecallcodecallcode_111_OOGMAfter.json OK
+ callcodecallcodecallcode_111_OOGMBefore.json OK + callcodecallcodecallcode_111_OOGMBefore.json OK
+ callcodecallcodecallcode_111_SuicideEnd.json OK + callcodecallcodecallcode_111_SuicideEnd.json OK
+ callcodecallcodecallcode_111_SuicideMiddle.json OK + callcodecallcodecallcode_111_SuicideMiddle.json OK
+ callcodecallcodecallcode_ABCB_RECURSIVE.json OK callcodecallcodecallcode_ABCB_RECURSIVE.json Skip
``` ```
OK: 49/58 Fail: 0/58 Skip: 9/58 OK: 72/79 Fail: 0/79 Skip: 7/79
## stCallCreateCallCodeTest
```diff
Call1024BalanceTooLow.json Skip
Call1024OOG.json Skip
Call1024PreCalls.json Skip
+ CallLoseGasOOG.json OK
CallRecursiveBombPreCall.json Skip
+ Callcode1024BalanceTooLow.json OK
Callcode1024OOG.json Skip
+ CallcodeLoseGasOOG.json OK
+ callOutput1.json OK
+ callOutput2.json OK
+ callOutput3.json OK
+ callOutput3Fail.json OK
+ callOutput3partial.json OK
+ callOutput3partialFail.json OK
+ callWithHighValue.json OK
+ callWithHighValueAndGasOOG.json OK
+ callWithHighValueAndOOGatTxLevel.json OK
+ callWithHighValueOOGinCall.json OK
+ callcodeOutput1.json OK
+ callcodeOutput2.json OK
+ callcodeOutput3.json OK
+ callcodeOutput3Fail.json OK
+ callcodeOutput3partial.json OK
+ callcodeOutput3partialFail.json OK
+ callcodeWithHighValue.json OK
+ callcodeWithHighValueAndGasOOG.json OK
+ createFailBalanceTooLow.json OK
+ createInitFailBadJumpDestination.json OK
+ createInitFailStackSizeLargerThan1024.json OK
+ createInitFailStackUnderflow.json OK
+ createInitFailUndefinedInstruction.json OK
+ createInitFail_OOGduringInit.json OK
+ createInitOOGforCREATE.json OK
+ createJS_ExampleContract.json OK
+ createJS_NoCollision.json OK
+ createNameRegistratorPerTxs.json OK
+ createNameRegistratorPerTxsNotEnoughGas.json OK
+ createNameRegistratorPreStore1NotEnoughGas.json OK
+ createNameRegistratorendowmentTooHigh.json OK
```
OK: 34/39 Fail: 0/39 Skip: 5/39
## stCallDelegateCodesCallCodeHomestead
```diff
+ callcallcallcode_001.json OK
+ callcallcallcode_001_OOGE.json OK
+ callcallcallcode_001_OOGMAfter.json OK
+ callcallcallcode_001_OOGMBefore.json OK
+ callcallcallcode_001_SuicideEnd.json OK
+ callcallcallcode_001_SuicideMiddle.json OK
callcallcallcode_ABCB_RECURSIVE.json Skip
+ callcallcode_01.json OK
+ callcallcode_01_OOGE.json OK
+ callcallcode_01_SuicideEnd.json OK
+ callcallcodecall_010.json OK
+ callcallcodecall_010_OOGE.json OK
+ callcallcodecall_010_OOGMAfter.json OK
+ callcallcodecall_010_OOGMBefore.json OK
+ callcallcodecall_010_SuicideEnd.json OK
+ callcallcodecall_010_SuicideMiddle.json OK
callcallcodecall_ABCB_RECURSIVE.json Skip
+ callcallcodecallcode_011.json OK
+ callcallcodecallcode_011_OOGE.json OK
+ callcallcodecallcode_011_OOGMAfter.json OK
+ callcallcodecallcode_011_OOGMBefore.json OK
+ callcallcodecallcode_011_SuicideEnd.json OK
+ callcallcodecallcode_011_SuicideMiddle.json OK
callcallcodecallcode_ABCB_RECURSIVE.json Skip
+ callcodecall_10.json OK
+ callcodecall_10_OOGE.json OK
+ callcodecall_10_SuicideEnd.json OK
+ callcodecallcall_100.json OK
+ callcodecallcall_100_OOGE.json OK
+ callcodecallcall_100_OOGMAfter.json OK
+ callcodecallcall_100_OOGMBefore.json OK
+ callcodecallcall_100_SuicideEnd.json OK
+ callcodecallcall_100_SuicideMiddle.json OK
callcodecallcall_ABCB_RECURSIVE.json Skip
+ callcodecallcallcode_101.json OK
+ callcodecallcallcode_101_OOGE.json OK
+ callcodecallcallcode_101_OOGMAfter.json OK
+ callcodecallcallcode_101_OOGMBefore.json OK
+ callcodecallcallcode_101_SuicideEnd.json OK
+ callcodecallcallcode_101_SuicideMiddle.json OK
callcodecallcallcode_ABCB_RECURSIVE.json Skip
+ callcodecallcode_11.json OK
+ callcodecallcode_11_OOGE.json OK
+ callcodecallcode_11_SuicideEnd.json OK
+ callcodecallcodecall_110.json OK
+ callcodecallcodecall_110_OOGE.json OK
+ callcodecallcodecall_110_OOGMAfter.json OK
+ callcodecallcodecall_110_OOGMBefore.json OK
+ callcodecallcodecall_110_SuicideEnd.json OK
+ callcodecallcodecall_110_SuicideMiddle.json OK
callcodecallcodecall_ABCB_RECURSIVE.json Skip
+ callcodecallcodecallcode_111.json OK
+ callcodecallcodecallcode_111_OOGE.json OK
+ callcodecallcodecallcode_111_OOGMAfter.json OK
+ callcodecallcodecallcode_111_OOGMBefore.json OK
+ callcodecallcodecallcode_111_SuicideEnd.json OK
+ callcodecallcodecallcode_111_SuicideMiddle.json OK
callcodecallcodecallcode_ABCB_RECURSIVE.json Skip
```
OK: 51/58 Fail: 0/58 Skip: 7/58
## stCallDelegateCodesHomestead
```diff
+ callcallcallcode_001.json OK
+ callcallcallcode_001_OOGE.json OK
+ callcallcallcode_001_OOGMAfter.json OK
+ callcallcallcode_001_OOGMBefore.json OK
+ callcallcallcode_001_SuicideEnd.json OK
+ callcallcallcode_001_SuicideMiddle.json OK
callcallcallcode_ABCB_RECURSIVE.json Skip
+ callcallcode_01.json OK
+ callcallcode_01_OOGE.json OK
+ callcallcode_01_SuicideEnd.json OK
+ callcallcodecall_010.json OK
+ callcallcodecall_010_OOGE.json OK
+ callcallcodecall_010_OOGMAfter.json OK
+ callcallcodecall_010_OOGMBefore.json OK
+ callcallcodecall_010_SuicideEnd.json OK
+ callcallcodecall_010_SuicideMiddle.json OK
callcallcodecall_ABCB_RECURSIVE.json Skip
+ callcallcodecallcode_011.json OK
+ callcallcodecallcode_011_OOGE.json OK
+ callcallcodecallcode_011_OOGMAfter.json OK
+ callcallcodecallcode_011_OOGMBefore.json OK
+ callcallcodecallcode_011_SuicideEnd.json OK
+ callcallcodecallcode_011_SuicideMiddle.json OK
callcallcodecallcode_ABCB_RECURSIVE.json Skip
+ callcodecall_10.json OK
+ callcodecall_10_OOGE.json OK
+ callcodecall_10_SuicideEnd.json OK
+ callcodecallcall_100.json OK
+ callcodecallcall_100_OOGE.json OK
+ callcodecallcall_100_OOGMAfter.json OK
+ callcodecallcall_100_OOGMBefore.json OK
+ callcodecallcall_100_SuicideEnd.json OK
+ callcodecallcall_100_SuicideMiddle.json OK
callcodecallcall_ABCB_RECURSIVE.json Skip
+ callcodecallcallcode_101.json OK
+ callcodecallcallcode_101_OOGE.json OK
+ callcodecallcallcode_101_OOGMAfter.json OK
+ callcodecallcallcode_101_OOGMBefore.json OK
+ callcodecallcallcode_101_SuicideEnd.json OK
+ callcodecallcallcode_101_SuicideMiddle.json OK
callcodecallcallcode_ABCB_RECURSIVE.json Skip
+ callcodecallcode_11.json OK
+ callcodecallcode_11_OOGE.json OK
+ callcodecallcode_11_SuicideEnd.json OK
+ callcodecallcodecall_110.json OK
+ callcodecallcodecall_110_OOGE.json OK
+ callcodecallcodecall_110_OOGMAfter.json OK
+ callcodecallcodecall_110_OOGMBefore.json OK
+ callcodecallcodecall_110_SuicideEnd.json OK
+ callcodecallcodecall_110_SuicideMiddle.json OK
callcodecallcodecall_ABCB_RECURSIVE.json Skip
+ callcodecallcodecallcode_111.json OK
+ callcodecallcodecallcode_111_OOGE.json OK
+ callcodecallcodecallcode_111_OOGMAfter.json OK
+ callcodecallcodecallcode_111_OOGMBefore.json OK
+ callcodecallcodecallcode_111_SuicideEnd.json OK
+ callcodecallcodecallcode_111_SuicideMiddle.json OK
callcodecallcodecallcode_ABCB_RECURSIVE.json Skip
```
OK: 51/58 Fail: 0/58 Skip: 7/58
## stChangedEIP150 ## stChangedEIP150
```diff ```diff
Call1024BalanceTooLow.json Skip Call1024BalanceTooLow.json Skip
@ -335,7 +335,7 @@ OK: 49/58 Fail: 0/58 Skip: 9/58
+ callcallcodecall_010_OOGMAfter_3.json OK + callcallcodecall_010_OOGMAfter_3.json OK
+ callcallcodecallcode_011_OOGMAfter_1.json OK + callcallcodecallcode_011_OOGMAfter_1.json OK
+ callcallcodecallcode_011_OOGMAfter_2.json OK + callcallcodecallcode_011_OOGMAfter_2.json OK
callcodecallcall_100_OOGMAfter_1.json Skip + callcodecallcall_100_OOGMAfter_1.json OK
+ callcodecallcall_100_OOGMAfter_2.json OK + callcodecallcall_100_OOGMAfter_2.json OK
+ callcodecallcall_100_OOGMAfter_3.json OK + callcodecallcall_100_OOGMAfter_3.json OK
+ callcodecallcallcode_101_OOGMAfter_1.json OK + callcodecallcallcode_101_OOGMAfter_1.json OK
@ -351,7 +351,7 @@ OK: 49/58 Fail: 0/58 Skip: 9/58
+ contractCreationMakeCallThatAskMoreGasThenTransactionProvided.jsonOK + contractCreationMakeCallThatAskMoreGasThenTransactionProvided.jsonOK
+ createInitFail_OOGduringInit.json OK + createInitFail_OOGduringInit.json OK
``` ```
OK: 27/30 Fail: 0/30 Skip: 3/30 OK: 28/30 Fail: 0/30 Skip: 2/30
## stCodeCopyTest ## stCodeCopyTest
```diff ```diff
+ ExtCodeCopyTests.json OK + ExtCodeCopyTests.json OK
@ -367,20 +367,20 @@ OK: 3/3 Fail: 0/3 Skip: 0/3
## stCreateTest ## stCreateTest
```diff ```diff
+ CREATE_AcreateB_BSuicide_BStore.json OK + CREATE_AcreateB_BSuicide_BStore.json OK
CREATE_ContractRETURNBigOffset.json Skip + CREATE_ContractRETURNBigOffset.json OK
+ CREATE_ContractSSTOREDuringInit.json OK + CREATE_ContractSSTOREDuringInit.json OK
+ CREATE_ContractSuicideDuringInit.json OK + CREATE_ContractSuicideDuringInit.json OK
+ CREATE_ContractSuicideDuringInit_ThenStoreThenReturn.json OK + CREATE_ContractSuicideDuringInit_ThenStoreThenReturn.json OK
+ CREATE_ContractSuicideDuringInit_WithValue.json OK + CREATE_ContractSuicideDuringInit_WithValue.json OK
+ CREATE_ContractSuicideDuringInit_WithValueToItself.json OK + CREATE_ContractSuicideDuringInit_WithValueToItself.json OK
CREATE_EContractCreateEContractInInit_Tr.json Skip + CREATE_EContractCreateEContractInInit_Tr.json OK
+ CREATE_EContractCreateNEContractInInitOOG_Tr.json OK + CREATE_EContractCreateNEContractInInitOOG_Tr.json OK
+ CREATE_EContractCreateNEContractInInit_Tr.json OK + CREATE_EContractCreateNEContractInInit_Tr.json OK
CREATE_EContract_ThenCALLToNonExistentAcc.json Skip + CREATE_EContract_ThenCALLToNonExistentAcc.json OK
CREATE_EmptyContract.json Skip + CREATE_EmptyContract.json OK
CREATE_EmptyContractAndCallIt_0wei.json Skip + CREATE_EmptyContractAndCallIt_0wei.json OK
CREATE_EmptyContractAndCallIt_1wei.json Skip + CREATE_EmptyContractAndCallIt_1wei.json OK
CREATE_EmptyContractWithBalance.json Skip + CREATE_EmptyContractWithBalance.json OK
+ CREATE_EmptyContractWithStorage.json OK + CREATE_EmptyContractWithStorage.json OK
+ CREATE_EmptyContractWithStorageAndCallIt_0wei.json OK + CREATE_EmptyContractWithStorageAndCallIt_0wei.json OK
+ CREATE_EmptyContractWithStorageAndCallIt_1wei.json OK + CREATE_EmptyContractWithStorageAndCallIt_1wei.json OK
@ -394,48 +394,48 @@ OK: 3/3 Fail: 0/3 Skip: 0/3
CreateOOGafterInitCodeRevert.json Skip CreateOOGafterInitCodeRevert.json Skip
CreateOOGafterInitCodeRevert2.json Skip CreateOOGafterInitCodeRevert2.json Skip
+ TransactionCollisionToEmpty.json OK + TransactionCollisionToEmpty.json OK
TransactionCollisionToEmptyButCode.json Skip + TransactionCollisionToEmptyButCode.json OK
TransactionCollisionToEmptyButNonce.json Skip + TransactionCollisionToEmptyButNonce.json OK
``` ```
OK: 14/30 Fail: 0/30 Skip: 16/30 OK: 23/30 Fail: 0/30 Skip: 7/30
## stDelegatecallTestHomestead ## stDelegatecallTestHomestead
```diff ```diff
Call1024BalanceTooLow.json Skip Call1024BalanceTooLow.json Skip
Call1024OOG.json Skip Call1024OOG.json Skip
Call1024PreCalls.json Skip Call1024PreCalls.json Skip
CallLoseGasOOG.json Skip + CallLoseGasOOG.json OK
CallRecursiveBombPreCall.json Skip CallRecursiveBombPreCall.json Skip
CallcodeLoseGasOOG.json Skip + CallcodeLoseGasOOG.json OK
Delegatecall1024.json Skip Delegatecall1024.json Skip
Delegatecall1024OOG.json Skip Delegatecall1024OOG.json Skip
callOutput1.json Skip + callOutput1.json OK
callOutput2.json Skip + callOutput2.json OK
callOutput3.json Skip + callOutput3.json OK
callOutput3Fail.json Skip + callOutput3Fail.json OK
callOutput3partial.json Skip + callOutput3partial.json OK
callOutput3partialFail.json Skip + callOutput3partialFail.json OK
+ callWithHighValueAndGasOOG.json OK + callWithHighValueAndGasOOG.json OK
callcodeOutput1.json Skip + callcodeOutput1.json OK
callcodeOutput2.json Skip + callcodeOutput2.json OK
callcodeOutput3.json Skip + callcodeOutput3.json OK
callcodeOutput3Fail.json Skip + callcodeOutput3Fail.json OK
callcodeOutput3partial.json Skip + callcodeOutput3partial.json OK
callcodeOutput3partialFail.json Skip + callcodeOutput3partialFail.json OK
+ callcodeWithHighValueAndGasOOG.json OK + callcodeWithHighValueAndGasOOG.json OK
deleagateCallAfterValueTransfer.json Skip + deleagateCallAfterValueTransfer.json OK
+ delegatecallAndOOGatTxLevel.json OK + delegatecallAndOOGatTxLevel.json OK
+ delegatecallBasic.json OK + delegatecallBasic.json OK
+ delegatecallEmptycontract.json OK + delegatecallEmptycontract.json OK
delegatecallInInitcodeToEmptyContract.json Skip + delegatecallInInitcodeToEmptyContract.json OK
delegatecallInInitcodeToExistingContract.json Skip + delegatecallInInitcodeToExistingContract.json OK
+ delegatecallInInitcodeToExistingContractOOG.json OK + delegatecallInInitcodeToExistingContractOOG.json OK
+ delegatecallOOGinCall.json OK + delegatecallOOGinCall.json OK
delegatecallSenderCheck.json Skip + delegatecallSenderCheck.json OK
delegatecallValueCheck.json Skip + delegatecallValueCheck.json OK
delegatecodeDynamicCode.json Skip + delegatecodeDynamicCode.json OK
delegatecodeDynamicCode2SelfCall.json Skip + delegatecodeDynamicCode2SelfCall.json OK
``` ```
OK: 7/34 Fail: 0/34 Skip: 27/34 OK: 28/34 Fail: 0/34 Skip: 6/34
## stEIP150Specific ## stEIP150Specific
```diff ```diff
CallAndCallcodeConsumeMoreGasThenTransactionHas.json Skip CallAndCallcodeConsumeMoreGasThenTransactionHas.json Skip
@ -445,14 +445,14 @@ OK: 7/34 Fail: 0/34 Skip: 27/34
CreateAndGasInsideCreate.json Skip CreateAndGasInsideCreate.json Skip
DelegateCallOnEIP.json Skip DelegateCallOnEIP.json Skip
ExecuteCallThatAskForeGasThenTrabsactionHas.json Skip ExecuteCallThatAskForeGasThenTrabsactionHas.json Skip
NewGasPriceForCodes.json Skip + NewGasPriceForCodes.json OK
SuicideToExistingContract.json Skip SuicideToExistingContract.json Skip
SuicideToNotExistingContract.json Skip SuicideToNotExistingContract.json Skip
Transaction64Rule_d64e0.json Skip Transaction64Rule_d64e0.json Skip
Transaction64Rule_d64m1.json Skip Transaction64Rule_d64m1.json Skip
Transaction64Rule_d64p1.json Skip Transaction64Rule_d64p1.json Skip
``` ```
OK: 0/13 Fail: 0/13 Skip: 13/13 OK: 1/13 Fail: 0/13 Skip: 12/13
## stEIP150singleCodeGasPrices ## stEIP150singleCodeGasPrices
```diff ```diff
+ RawBalanceGas.json OK + RawBalanceGas.json OK
@ -473,11 +473,11 @@ OK: 0/13 Fail: 0/13 Skip: 13/13
+ RawCallMemoryGas.json OK + RawCallMemoryGas.json OK
+ RawCallMemoryGasAsk.json OK + RawCallMemoryGasAsk.json OK
+ RawCreateFailGasValueTransfer.json OK + RawCreateFailGasValueTransfer.json OK
RawCreateFailGasValueTransfer2.json Skip + RawCreateFailGasValueTransfer2.json OK
+ RawCreateGas.json OK + RawCreateGas.json OK
RawCreateGasMemory.json Skip + RawCreateGasMemory.json OK
+ RawCreateGasValueTransfer.json OK + RawCreateGasValueTransfer.json OK
RawCreateGasValueTransferMemory.json Skip + RawCreateGasValueTransferMemory.json OK
+ RawDelegateCallGas.json OK + RawDelegateCallGas.json OK
+ RawDelegateCallGasAsk.json OK + RawDelegateCallGasAsk.json OK
+ RawDelegateCallGasMemory.json OK + RawDelegateCallGasMemory.json OK
@ -486,7 +486,7 @@ OK: 0/13 Fail: 0/13 Skip: 13/13
+ RawExtCodeCopyMemoryGas.json OK + RawExtCodeCopyMemoryGas.json OK
+ RawExtCodeSizeGas.json OK + RawExtCodeSizeGas.json OK
``` ```
OK: 27/30 Fail: 0/30 Skip: 3/30 OK: 30/30 Fail: 0/30 Skip: 0/30
## stEIP158Specific ## stEIP158Specific
```diff ```diff
CALL_OneVCallSuicide.json Skip CALL_OneVCallSuicide.json Skip
@ -507,23 +507,23 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
+ contractCreationOOGdontLeaveEmptyContract.json OK + contractCreationOOGdontLeaveEmptyContract.json OK
+ contractCreationOOGdontLeaveEmptyContractViaTransaction.json OK + contractCreationOOGdontLeaveEmptyContractViaTransaction.json OK
+ createContractViaContract.json OK + createContractViaContract.json OK
createContractViaContractOOGInitCode.json Skip + createContractViaContractOOGInitCode.json OK
+ createContractViaTransactionCost53000.json OK + createContractViaTransactionCost53000.json OK
``` ```
OK: 4/5 Fail: 0/5 Skip: 1/5 OK: 5/5 Fail: 0/5 Skip: 0/5
## stInitCodeTest ## stInitCodeTest
```diff ```diff
+ CallContractToCreateContractAndCallItOOG.json OK + CallContractToCreateContractAndCallItOOG.json OK
+ CallContractToCreateContractNoCash.json OK + CallContractToCreateContractNoCash.json OK
+ CallContractToCreateContractOOG.json OK + CallContractToCreateContractOOG.json OK
+ CallContractToCreateContractOOGBonusGas.json OK + CallContractToCreateContractOOGBonusGas.json OK
CallContractToCreateContractWhichWouldCreateContractIfCalled.jsonSkip + CallContractToCreateContractWhichWouldCreateContractIfCalled.jsonOK
CallContractToCreateContractWhichWouldCreateContractInInitCode.jsonSkip + CallContractToCreateContractWhichWouldCreateContractInInitCode.jsonOK
+ CallRecursiveContract.json OK + CallRecursiveContract.json OK
CallTheContractToCreateEmptyContract.json Skip + CallTheContractToCreateEmptyContract.json OK
+ NotEnoughCashContractCreation.json OK + NotEnoughCashContractCreation.json OK
OutOfGasContractCreation.json Skip + OutOfGasContractCreation.json OK
OutOfGasPrefundedContractCreation.json Skip + OutOfGasPrefundedContractCreation.json OK
+ ReturnTest.json OK + ReturnTest.json OK
+ ReturnTest2.json OK + ReturnTest2.json OK
+ StackUnderFlowContractCreation.json OK + StackUnderFlowContractCreation.json OK
@ -532,7 +532,7 @@ OK: 4/5 Fail: 0/5 Skip: 1/5
+ TransactionCreateStopInInitcode.json OK + TransactionCreateStopInInitcode.json OK
+ TransactionCreateSuicideInInitcode.json OK + TransactionCreateSuicideInInitcode.json OK
``` ```
OK: 13/18 Fail: 0/18 Skip: 5/18 OK: 18/18 Fail: 0/18 Skip: 0/18
## stLogTests ## stLogTests
```diff ```diff
+ log0_emptyMem.json OK + log0_emptyMem.json OK
@ -592,9 +592,9 @@ OK: 46/46 Fail: 0/46 Skip: 0/46
+ CreateAndGasInsideCreateWithMemExpandingCalls.json OK + CreateAndGasInsideCreateWithMemExpandingCalls.json OK
+ DelegateCallOnEIPWithMemExpandingCalls.json OK + DelegateCallOnEIPWithMemExpandingCalls.json OK
+ ExecuteCallThatAskMoreGasThenTransactionHasWithMemExpandingCalls.jsonOK + ExecuteCallThatAskMoreGasThenTransactionHasWithMemExpandingCalls.jsonOK
NewGasPriceForCodesWithMemExpandingCalls.json Skip + NewGasPriceForCodesWithMemExpandingCalls.json OK
``` ```
OK: 7/8 Fail: 0/8 Skip: 1/8 OK: 8/8 Fail: 0/8 Skip: 0/8
## stMemoryStressTest ## stMemoryStressTest
```diff ```diff
CALLCODE_Bounds.json Skip CALLCODE_Bounds.json Skip
@ -639,10 +639,10 @@ OK: 7/8 Fail: 0/8 Skip: 1/8
OK: 5/38 Fail: 0/38 Skip: 33/38 OK: 5/38 Fail: 0/38 Skip: 33/38
## stMemoryTest ## stMemoryTest
```diff ```diff
callDataCopyOffset.json Skip + callDataCopyOffset.json OK
+ calldatacopy_dejavu.json OK + calldatacopy_dejavu.json OK
+ calldatacopy_dejavu2.json OK + calldatacopy_dejavu2.json OK
codeCopyOffset.json Skip + codeCopyOffset.json OK
+ codecopy_dejavu.json OK + codecopy_dejavu.json OK
+ codecopy_dejavu2.json OK + codecopy_dejavu2.json OK
+ extcodecopy_dejavu.json OK + extcodecopy_dejavu.json OK
@ -707,13 +707,13 @@ OK: 5/38 Fail: 0/38 Skip: 33/38
+ stackLimitPush32_1024.json OK + stackLimitPush32_1024.json OK
+ stackLimitPush32_1025.json OK + stackLimitPush32_1025.json OK
``` ```
OK: 65/67 Fail: 0/67 Skip: 2/67 OK: 67/67 Fail: 0/67 Skip: 0/67
## stNonZeroCallsTest ## stNonZeroCallsTest
```diff ```diff
+ NonZeroValue_CALL.json OK + NonZeroValue_CALL.json OK
+ NonZeroValue_CALLCODE.json OK + NonZeroValue_CALLCODE.json OK
+ NonZeroValue_CALLCODE_ToEmpty.json OK + NonZeroValue_CALLCODE_ToEmpty.json OK
NonZeroValue_CALLCODE_ToNonNonZeroBalance.json Skip + NonZeroValue_CALLCODE_ToNonNonZeroBalance.json OK
+ NonZeroValue_CALLCODE_ToOneStorageKey.json OK + NonZeroValue_CALLCODE_ToOneStorageKey.json OK
+ NonZeroValue_CALL_ToEmpty.json OK + NonZeroValue_CALL_ToEmpty.json OK
+ NonZeroValue_CALL_ToNonNonZeroBalance.json OK + NonZeroValue_CALL_ToNonNonZeroBalance.json OK
@ -735,7 +735,7 @@ OK: 65/67 Fail: 0/67 Skip: 2/67
+ NonZeroValue_TransactionCALLwithData_ToNonNonZeroBalance.json OK + NonZeroValue_TransactionCALLwithData_ToNonNonZeroBalance.json OK
+ NonZeroValue_TransactionCALLwithData_ToOneStorageKey.json OK + NonZeroValue_TransactionCALLwithData_ToOneStorageKey.json OK
``` ```
OK: 23/24 Fail: 0/24 Skip: 1/24 OK: 24/24 Fail: 0/24 Skip: 0/24
## stPreCompiledContracts ## stPreCompiledContracts
```diff ```diff
identity_to_bigger.json Skip identity_to_bigger.json Skip
@ -853,7 +853,7 @@ OK: 0/96 Fail: 0/96 Skip: 96/96
+ CALLCODEEcrecoverR_prefixed0.json OK + CALLCODEEcrecoverR_prefixed0.json OK
+ CALLCODEEcrecoverS_prefixed0.json OK + CALLCODEEcrecoverS_prefixed0.json OK
+ CALLCODEEcrecoverV_prefixed0.json OK + CALLCODEEcrecoverV_prefixed0.json OK
CALLCODEEcrecoverV_prefixedf0.json Skip + CALLCODEEcrecoverV_prefixedf0.json OK
+ CALLCODEIdentitiy_0.json OK + CALLCODEIdentitiy_0.json OK
+ CALLCODEIdentitiy_1.json OK + CALLCODEIdentitiy_1.json OK
+ CALLCODEIdentity_1_nonzeroValue.json OK + CALLCODEIdentity_1_nonzeroValue.json OK
@ -933,7 +933,7 @@ OK: 0/96 Fail: 0/96 Skip: 96/96
modexp_0_0_0_25000.json Skip modexp_0_0_0_25000.json Skip
modexp_0_0_0_35000.json Skip modexp_0_0_0_35000.json Skip
``` ```
OK: 88/94 Fail: 0/94 Skip: 6/94 OK: 89/94 Fail: 0/94 Skip: 5/94
## stQuadraticComplexityTest ## stQuadraticComplexityTest
```diff ```diff
Call1MB1024Calldepth.json Skip Call1MB1024Calldepth.json Skip
@ -960,7 +960,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
randomStatetest1.json Skip randomStatetest1.json Skip
+ randomStatetest10.json OK + randomStatetest10.json OK
+ randomStatetest100.json OK + randomStatetest100.json OK
randomStatetest101.json Skip + randomStatetest101.json OK
+ randomStatetest102.json OK + randomStatetest102.json OK
+ randomStatetest103.json OK + randomStatetest103.json OK
+ randomStatetest104.json OK + randomStatetest104.json OK
@ -974,7 +974,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest112.json OK + randomStatetest112.json OK
+ randomStatetest114.json OK + randomStatetest114.json OK
+ randomStatetest115.json OK + randomStatetest115.json OK
randomStatetest116.json Skip + randomStatetest116.json OK
+ randomStatetest117.json OK + randomStatetest117.json OK
+ randomStatetest118.json OK + randomStatetest118.json OK
+ randomStatetest119.json OK + randomStatetest119.json OK
@ -1039,7 +1039,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest18.json OK + randomStatetest18.json OK
+ randomStatetest180.json OK + randomStatetest180.json OK
+ randomStatetest183.json OK + randomStatetest183.json OK
randomStatetest184.json Skip + randomStatetest184.json OK
+ randomStatetest185.json OK + randomStatetest185.json OK
+ randomStatetest187.json OK + randomStatetest187.json OK
+ randomStatetest188.json OK + randomStatetest188.json OK
@ -1089,7 +1089,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest232.json OK + randomStatetest232.json OK
+ randomStatetest233.json OK + randomStatetest233.json OK
+ randomStatetest236.json OK + randomStatetest236.json OK
randomStatetest237.json Skip + randomStatetest237.json OK
+ randomStatetest238.json OK + randomStatetest238.json OK
+ randomStatetest24.json OK + randomStatetest24.json OK
+ randomStatetest241.json OK + randomStatetest241.json OK
@ -1099,7 +1099,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest245.json OK + randomStatetest245.json OK
+ randomStatetest246.json OK + randomStatetest246.json OK
+ randomStatetest247.json OK + randomStatetest247.json OK
randomStatetest248.json Skip + randomStatetest248.json OK
+ randomStatetest249.json OK + randomStatetest249.json OK
+ randomStatetest25.json OK + randomStatetest25.json OK
+ randomStatetest250.json OK + randomStatetest250.json OK
@ -1259,7 +1259,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest66.json OK + randomStatetest66.json OK
+ randomStatetest67.json OK + randomStatetest67.json OK
+ randomStatetest69.json OK + randomStatetest69.json OK
randomStatetest7.json Skip + randomStatetest7.json OK
+ randomStatetest72.json OK + randomStatetest72.json OK
+ randomStatetest73.json OK + randomStatetest73.json OK
+ randomStatetest74.json OK + randomStatetest74.json OK
@ -1284,7 +1284,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16
+ randomStatetest97.json OK + randomStatetest97.json OK
+ randomStatetest98.json OK + randomStatetest98.json OK
``` ```
OK: 315/327 Fail: 0/327 Skip: 12/327 OK: 321/327 Fail: 0/327 Skip: 6/327
## stRandom2 ## stRandom2
```diff ```diff
+ 201503110226PYTHON_DUP6.json OK + 201503110226PYTHON_DUP6.json OK
@ -1512,10 +1512,10 @@ OK: 315/327 Fail: 0/327 Skip: 12/327
+ randomStatetest643.json OK + randomStatetest643.json OK
+ randomStatetest644.json OK + randomStatetest644.json OK
+ randomStatetest645.json OK + randomStatetest645.json OK
randomStatetest646.json Skip + randomStatetest646.json OK
randomStatetest647.json Skip randomStatetest647.json Skip
``` ```
OK: 222/227 Fail: 0/227 Skip: 5/227 OK: 223/227 Fail: 0/227 Skip: 4/227
## stRecursiveCreate ## stRecursiveCreate
```diff ```diff
recursiveCreate.json Skip recursiveCreate.json Skip
@ -1604,22 +1604,22 @@ OK: 34/37 Fail: 0/37 Skip: 3/37
+ RevertInStaticCall.json OK + RevertInStaticCall.json OK
+ RevertOnEmptyStack.json OK + RevertOnEmptyStack.json OK
+ RevertOpcode.json OK + RevertOpcode.json OK
RevertOpcodeCalls.json Skip + RevertOpcodeCalls.json OK
+ RevertOpcodeCreate.json OK + RevertOpcodeCreate.json OK
RevertOpcodeDirectCall.json Skip + RevertOpcodeDirectCall.json OK
RevertOpcodeInCallsOnNonEmptyReturnData.json Skip + RevertOpcodeInCallsOnNonEmptyReturnData.json OK
+ RevertOpcodeInCreateReturns.json OK + RevertOpcodeInCreateReturns.json OK
RevertOpcodeInInit.json Skip + RevertOpcodeInInit.json OK
RevertOpcodeMultipleSubCalls.json Skip + RevertOpcodeMultipleSubCalls.json OK
RevertOpcodeReturn.json Skip + RevertOpcodeReturn.json OK
RevertOpcodeWithBigOutputInInit.json Skip + RevertOpcodeWithBigOutputInInit.json OK
RevertPrecompiledTouch.json Skip RevertPrecompiledTouch.json Skip
RevertPrecompiledTouchCC.json Skip RevertPrecompiledTouchCC.json Skip
RevertPrecompiledTouchDC.json Skip RevertPrecompiledTouchDC.json Skip
RevertPrefound.json Skip + RevertPrefound.json OK
+ RevertPrefoundCall.json OK + RevertPrefoundCall.json OK
+ RevertPrefoundCallOOG.json OK + RevertPrefoundCallOOG.json OK
RevertPrefoundEmpty.json Skip + RevertPrefoundEmpty.json OK
+ RevertPrefoundEmptyCall.json OK + RevertPrefoundEmptyCall.json OK
+ RevertPrefoundEmptyCallOOG.json OK + RevertPrefoundEmptyCallOOG.json OK
+ RevertPrefoundEmptyOOG.json OK + RevertPrefoundEmptyOOG.json OK
@ -1632,7 +1632,7 @@ OK: 34/37 Fail: 0/37 Skip: 3/37
+ TouchToEmptyAccountRevert2.json OK + TouchToEmptyAccountRevert2.json OK
+ TouchToEmptyAccountRevert3.json OK + TouchToEmptyAccountRevert3.json OK
``` ```
OK: 29/43 Fail: 0/43 Skip: 14/43 OK: 38/43 Fail: 0/43 Skip: 5/43
## stShift ## stShift
```diff ```diff
sar00.json Skip sar00.json Skip
@ -2044,7 +2044,7 @@ OK: 0/284 Fail: 0/284 Skip: 284/284
+ CallToReturn1ForDynamicJump0.json OK + CallToReturn1ForDynamicJump0.json OK
+ CallToReturn1ForDynamicJump1.json OK + CallToReturn1ForDynamicJump1.json OK
+ CalltoReturn2.json OK + CalltoReturn2.json OK
CreateHashCollision.json Skip + CreateHashCollision.json OK
+ PostToReturn1.json OK + PostToReturn1.json OK
+ TestNameRegistrator.json OK + TestNameRegistrator.json OK
+ balanceInputAddressTooBig.json OK + balanceInputAddressTooBig.json OK
@ -2057,9 +2057,9 @@ OK: 0/284 Fail: 0/284 Skip: 284/284
+ callcodeToReturn1.json OK + callcodeToReturn1.json OK
+ callerAccountBalance.json OK + callerAccountBalance.json OK
+ createNameRegistrator.json OK + createNameRegistrator.json OK
createNameRegistratorOOG_MemExpansionOOV.json Skip + createNameRegistratorOOG_MemExpansionOOV.json OK
createNameRegistratorOutOfMemoryBonds0.json Skip + createNameRegistratorOutOfMemoryBonds0.json OK
createNameRegistratorOutOfMemoryBonds1.json Skip + createNameRegistratorOutOfMemoryBonds1.json OK
+ createNameRegistratorValueTooHigh.json OK + createNameRegistratorValueTooHigh.json OK
+ createNameRegistratorZeroMem.json OK + createNameRegistratorZeroMem.json OK
+ createNameRegistratorZeroMem2.json OK + createNameRegistratorZeroMem2.json OK
@ -2076,14 +2076,14 @@ OK: 0/284 Fail: 0/284 Skip: 284/284
+ suicideCaller.json OK + suicideCaller.json OK
+ suicideCallerAddresTooBigLeft.json OK + suicideCallerAddresTooBigLeft.json OK
+ suicideCallerAddresTooBigRight.json OK + suicideCallerAddresTooBigRight.json OK
suicideCoinbase.json Skip + suicideCoinbase.json OK
+ suicideNotExistingAccount.json OK + suicideNotExistingAccount.json OK
+ suicideOrigin.json OK + suicideOrigin.json OK
+ suicideSendEtherPostDeath.json OK + suicideSendEtherPostDeath.json OK
+ suicideSendEtherToMe.json OK + suicideSendEtherToMe.json OK
testRandomTest.json Skip + testRandomTest.json OK
``` ```
OK: 51/67 Fail: 0/67 Skip: 16/67 OK: 57/67 Fail: 0/67 Skip: 10/67
## stTransactionTest ## stTransactionTest
```diff ```diff
+ ContractStoreClearsOOG.json OK + ContractStoreClearsOOG.json OK
@ -2101,7 +2101,7 @@ OK: 51/67 Fail: 0/67 Skip: 16/67
+ InternalCallHittingGasLimitSuccess.json OK + InternalCallHittingGasLimitSuccess.json OK
+ InternlCallStoreClearsOOG.json OK + InternlCallStoreClearsOOG.json OK
+ InternlCallStoreClearsSucces.json OK + InternlCallStoreClearsSucces.json OK
Opcodes_TransactionInit.json Skip + Opcodes_TransactionInit.json OK
+ OverflowGasRequire.json OK + OverflowGasRequire.json OK
+ OverflowGasRequire2.json OK + OverflowGasRequire2.json OK
+ RefundOverflow.json OK + RefundOverflow.json OK
@ -2114,11 +2114,11 @@ OK: 51/67 Fail: 0/67 Skip: 16/67
+ SuicidesAndInternlCallSuicidesOOG.json OK + SuicidesAndInternlCallSuicidesOOG.json OK
+ SuicidesAndInternlCallSuicidesSuccess.json OK + SuicidesAndInternlCallSuicidesSuccess.json OK
+ SuicidesAndSendMoneyToItselfEtherDestroyed.json OK + SuicidesAndSendMoneyToItselfEtherDestroyed.json OK
SuicidesMixingCoinbase.json Skip + SuicidesMixingCoinbase.json OK
+ SuicidesStopAfterSuicide.json OK + SuicidesStopAfterSuicide.json OK
+ TransactionDataCosts652.json OK + TransactionDataCosts652.json OK
+ TransactionFromCoinbaseHittingBlockGasLimit.json OK + TransactionFromCoinbaseHittingBlockGasLimit.json OK
TransactionFromCoinbaseHittingBlockGasLimit1.json Skip + TransactionFromCoinbaseHittingBlockGasLimit1.json OK
+ TransactionFromCoinbaseNotEnoughFounds.json OK + TransactionFromCoinbaseNotEnoughFounds.json OK
+ TransactionNonceCheck.json OK + TransactionNonceCheck.json OK
+ TransactionNonceCheck2.json OK + TransactionNonceCheck2.json OK
@ -2131,24 +2131,24 @@ OK: 51/67 Fail: 0/67 Skip: 16/67
+ UserTransactionZeroCost.json OK + UserTransactionZeroCost.json OK
+ UserTransactionZeroCostWithData.json OK + UserTransactionZeroCostWithData.json OK
``` ```
OK: 41/44 Fail: 0/44 Skip: 3/44 OK: 44/44 Fail: 0/44 Skip: 0/44
## stTransitionTest ## stTransitionTest
```diff ```diff
+ createNameRegistratorPerTxsAfter.json OK + createNameRegistratorPerTxsAfter.json OK
+ createNameRegistratorPerTxsAt.json OK + createNameRegistratorPerTxsAt.json OK
+ createNameRegistratorPerTxsBefore.json OK + createNameRegistratorPerTxsBefore.json OK
createNameRegistratorPerTxsNotEnoughGasAfter.json Skip + createNameRegistratorPerTxsNotEnoughGasAfter.json OK
createNameRegistratorPerTxsNotEnoughGasAt.json Skip + createNameRegistratorPerTxsNotEnoughGasAt.json OK
createNameRegistratorPerTxsNotEnoughGasBefore.json Skip + createNameRegistratorPerTxsNotEnoughGasBefore.json OK
delegatecallAfterTransition.json Skip + delegatecallAfterTransition.json OK
delegatecallAtTransition.json Skip + delegatecallAtTransition.json OK
delegatecallBeforeTransition.json Skip + delegatecallBeforeTransition.json OK
``` ```
OK: 3/9 Fail: 0/9 Skip: 6/9 OK: 9/9 Fail: 0/9 Skip: 0/9
## stWalletTest ## stWalletTest
```diff ```diff
+ dayLimitConstruction.json OK + dayLimitConstruction.json OK
dayLimitConstructionOOG.json Skip + dayLimitConstructionOOG.json OK
+ dayLimitConstructionPartial.json OK + dayLimitConstructionPartial.json OK
dayLimitResetSpentToday.json Skip dayLimitResetSpentToday.json Skip
dayLimitSetDailyLimit.json Skip dayLimitSetDailyLimit.json Skip
@ -2164,7 +2164,7 @@ OK: 3/9 Fail: 0/9 Skip: 6/9
multiOwnedChangeRequirementTo2.json Skip multiOwnedChangeRequirementTo2.json Skip
+ multiOwnedConstructionCorrect.json OK + multiOwnedConstructionCorrect.json OK
multiOwnedConstructionNotEnoughGas.json Skip multiOwnedConstructionNotEnoughGas.json Skip
multiOwnedConstructionNotEnoughGasPartial.json Skip + multiOwnedConstructionNotEnoughGasPartial.json OK
multiOwnedIsOwnerFalse.json Skip multiOwnedIsOwnerFalse.json Skip
multiOwnedIsOwnerTrue.json Skip multiOwnedIsOwnerTrue.json Skip
multiOwnedRemoveOwner.json Skip multiOwnedRemoveOwner.json Skip
@ -2177,7 +2177,7 @@ OK: 3/9 Fail: 0/9 Skip: 6/9
+ walletChangeRequirementRemovePendingTransaction.json OK + walletChangeRequirementRemovePendingTransaction.json OK
+ walletConfirm.json OK + walletConfirm.json OK
+ walletConstruction.json OK + walletConstruction.json OK
walletConstructionOOG.json Skip + walletConstructionOOG.json OK
+ walletConstructionPartial.json OK + walletConstructionPartial.json OK
walletDefault.json Skip walletDefault.json Skip
walletDefaultWithOutValue.json Skip walletDefaultWithOutValue.json Skip
@ -2190,7 +2190,7 @@ OK: 3/9 Fail: 0/9 Skip: 6/9
walletKillToWallet.json Skip walletKillToWallet.json Skip
+ walletRemoveOwnerRemovePendingTransaction.json OK + walletRemoveOwnerRemovePendingTransaction.json OK
``` ```
OK: 12/42 Fail: 0/42 Skip: 30/42 OK: 15/42 Fail: 0/42 Skip: 27/42
## stZeroCallsRevert ## stZeroCallsRevert
```diff ```diff
ZeroValue_CALLCODE_OOGRevert.json Skip ZeroValue_CALLCODE_OOGRevert.json Skip
@ -2520,4 +2520,4 @@ OK: 0/133 Fail: 0/133 Skip: 133/133
OK: 0/130 Fail: 0/130 Skip: 130/130 OK: 0/130 Fail: 0/130 Skip: 130/130
---TOTAL--- ---TOTAL---
OK: 1212/2334 Fail: 0/2334 Skip: 1122/2334 OK: 1432/2334 Fail: 0/2334 Skip: 902/2334

View File

@ -7,6 +7,8 @@ PersistBlockTests
+ block1155095.json OK + block1155095.json OK
+ block116524.json OK + block116524.json OK
+ block1317742.json OK + block1317742.json OK
+ block1368834.json OK
+ block1417555.json OK
+ block146675.json OK + block146675.json OK
+ block196647.json OK + block196647.json OK
+ block226147.json OK + block226147.json OK
@ -37,7 +39,7 @@ PersistBlockTests
+ block97.json OK + block97.json OK
+ block98.json OK + block98.json OK
``` ```
OK: 34/34 Fail: 0/34 Skip: 0/34 OK: 36/36 Fail: 0/36 Skip: 0/36
---TOTAL--- ---TOTAL---
OK: 34/34 Fail: 0/34 Skip: 0/34 OK: 36/36 Fail: 0/36 Skip: 0/36

View File

@ -632,9 +632,7 @@ proc processArguments*(msg: var string): ConfigStatus =
checkArgument processNetArguments, key, value, msg checkArgument processNetArguments, key, value, msg
checkArgument processDebugArguments, key, value, msg checkArgument processDebugArguments, key, value, msg
of cmdEnd: of cmdEnd:
msg = "Error processing option [" & key & "]" doAssert(false)
result = ErrorParseOption
break
if config.net.bootNodes.len == 0: if config.net.bootNodes.len == 0:
# No custom bootnodes were specified on the command line, restore to # No custom bootnodes were specified on the command line, restore to

View File

@ -29,20 +29,29 @@ proc processTransaction*(tx: Transaction, sender: EthAddress, vmState: BaseVMSta
if balance < upfrontGasCost: if balance < upfrontGasCost:
return tx.gasLimit return tx.gasLimit
let recipient = tx.getRecipient()
let isCollision = vmState.readOnlyStateDb().hasCodeOrNonce(recipient)
var computation = setupComputation(vmState, tx, sender, recipient, forkOverride)
if computation.isNil:
return 0
vmState.mutateStateDB: vmState.mutateStateDB:
db.incNonce(sender) db.incNonce(sender)
db.subBalance(sender, upfrontGasCost) db.subBalance(sender, upfrontGasCost)
if tx.isContractCreation and isCollision:
return tx.gasLimit
var snapshot = vmState.snapshot() var snapshot = vmState.snapshot()
defer: snapshot.dispose() defer: snapshot.dispose()
var computation = setupComputation(vmState, tx, sender, forkOverride)
var contractOK = true var contractOK = true
result = tx.gasLimit result = tx.gasLimit
if execComputation(computation): if execComputation(computation):
if tx.isContractCreation: if tx.isContractCreation:
contractOK = computation.writeContract() contractOK = computation.writeContract(fork)
result = computation.refundGas(tx, sender) result = computation.refundGas(tx, sender)
if not contractOK and fork == FkHomestead: if not contractOK and fork == FkHomestead:
@ -52,6 +61,9 @@ proc processTransaction*(tx: Transaction, sender: EthAddress, vmState: BaseVMSta
else: else:
snapshot.commit() snapshot.commit()
if computation.isSuicided(vmState.blockHeader.coinbase):
return 0
type type
# TODO: these types need to be removed # TODO: these types need to be removed
# once eth/bloom and eth/common sync'ed # once eth/bloom and eth/common sync'ed
@ -100,6 +112,11 @@ proc processBlock*(chainDB: BaseChainDB, head, header: BlockHeader, body: BlockB
vmState.receipts = newSeq[Receipt](body.transactions.len) vmState.receipts = newSeq[Receipt](body.transactions.len)
var cumulativeGasUsed = GasInt(0) var cumulativeGasUsed = GasInt(0)
for txIndex, tx in body.transactions: for txIndex, tx in body.transactions:
if cumulativeGasUsed + tx.gasLimit > header.gasLimit:
vmState.mutateStateDB:
db.addBalance(header.coinbase, 0.u256)
# TODO: do we need to break or continue execution?
else:
var sender: EthAddress var sender: EthAddress
if tx.getSender(sender): if tx.getSender(sender):
let gasUsed = processTransaction(tx, sender, vmState) let gasUsed = processTransaction(tx, sender, vmState)

View File

@ -35,11 +35,13 @@ template balance(addressDb: ReadOnlyStateDb, address: EthAddress): GasInt =
proc binarySearchGas(vmState: var BaseVMState, transaction: Transaction, sender: EthAddress, gasPrice: GasInt, tolerance = 1): GasInt = proc binarySearchGas(vmState: var BaseVMState, transaction: Transaction, sender: EthAddress, gasPrice: GasInt, tolerance = 1): GasInt =
proc dummyComputation(vmState: var BaseVMState, transaction: Transaction, sender: EthAddress): BaseComputation = proc dummyComputation(vmState: var BaseVMState, transaction: Transaction, sender: EthAddress): BaseComputation =
let recipient = transaction.getRecipient()
# Note that vmState may be altered # Note that vmState may be altered
setupComputation( setupComputation(
vmState, vmState,
transaction, transaction,
sender) sender,
recipient)
proc dummyTransaction(gasLimit, gasPrice: GasInt, destination: EthAddress, value: UInt256): Transaction = proc dummyTransaction(gasLimit, gasPrice: GasInt, destination: EthAddress, value: UInt256): Transaction =
Transaction( Transaction(

View File

@ -69,6 +69,9 @@ proc outputHex*(c: BaseComputation): string =
return "0x" return "0x"
c.rawOutput.bytesToHex c.rawOutput.bytesToHex
proc isSuicided*(c: var BaseComputation, address: EthAddress): bool =
result = address in c.accountsToDelete
proc prepareChildMessage*( proc prepareChildMessage*(
c: var BaseComputation, c: var BaseComputation,
gas: GasInt, gas: GasInt,
@ -109,58 +112,32 @@ proc commit*(snapshot: var ComputationSnapshot) {.inline.} =
proc dispose*(snapshot: var ComputationSnapshot) {.inline.} = proc dispose*(snapshot: var ComputationSnapshot) {.inline.} =
snapshot.snapshot.dispose() snapshot.snapshot.dispose()
proc applyMessageAux(computation: var BaseComputation, opCode: static[Op]) = proc transferBalance(computation: var BaseComputation, opCode: static[Op]) =
if computation.msg.depth >= MaxCallDepth: if computation.msg.depth >= MaxCallDepth:
raise newException(StackDepthError, "Stack depth limit reached") raise newException(StackDepthError, "Stack depth limit reached")
if computation.msg.value != 0: let senderBalance = computation.vmState.readOnlyStateDb().
let senderBalance =
computation.vmState.readOnlyStateDb().
getBalance(computation.msg.sender) getBalance(computation.msg.sender)
var newBalance = senderBalance
if senderBalance < computation.msg.value: if senderBalance < computation.msg.value:
raise newException(InsufficientFunds, raise newException(InsufficientFunds,
&"Insufficient funds: {senderBalance} < {computation.msg.value}" &"Insufficient funds: {senderBalance} < {computation.msg.value}")
)
newBalance = senderBalance - computation.msg.value when opCode in {Call, Create}:
computation.vmState.mutateStateDb:
db.setBalance(computation.msg.sender, newBalance)
db.addBalance(computation.msg.storageAddress, computation.msg.value)
trace "Value transferred",
source = computation.msg.sender,
dest = computation.msg.storageAddress,
value = computation.msg.value,
oldSenderBalance = senderBalance,
newSenderBalance = newBalance,
gasPrice = computation.msg.gasPrice,
gas = computation.msg.gas
trace "Apply message",
value = computation.msg.value,
senderBalance = newBalance,
sender = computation.msg.sender.toHex,
address = computation.msg.storageAddress.toHex,
gasPrice = computation.msg.gasPrice,
gas = computation.msg.gas
else:
# even though the value is zero, the account
# should be exist.
computation.vmState.mutateStateDb: computation.vmState.mutateStateDb:
db.subBalance(computation.msg.sender, computation.msg.value)
db.addBalance(computation.msg.storageAddress, computation.msg.value) db.addBalance(computation.msg.storageAddress, computation.msg.value)
proc applyMessage(computation: var BaseComputation, opCode: static[Op]): bool = proc applyMessage(computation: var BaseComputation, opCode: static[Op]): bool =
var snapshot = computation.snapshot() var snapshot = computation.snapshot()
defer: snapshot.dispose() defer: snapshot.dispose()
when opCode in {Call, Create}: when opCode in {CallCode, Call, Create}:
try: try:
computation.applyMessageAux(opCode) computation.transferBalance(opCode)
except VMError: except VMError:
snapshot.revert() snapshot.revert()
debug "applyMessageAux failed", msg = computation.error.info debug "transferBalance failed", msg = computation.error.info
return return
if computation.gasMeter.gasRemaining < 0: if computation.gasMeter.gasRemaining < 0:
@ -171,7 +148,6 @@ proc applyMessage(computation: var BaseComputation, opCode: static[Op]): bool =
# Run code # Run code
# We cannot use the normal dispatching function `executeOpcodes` # We cannot use the normal dispatching function `executeOpcodes`
# within `interpreter_dispatch.nim` due to a cyclic dependency. # within `interpreter_dispatch.nim` due to a cyclic dependency.
if not computation.execPrecompiles:
computation.opcodeExec(computation) computation.opcodeExec(computation)
snapshot.commit() snapshot.commit()
except VMError: except VMError:
@ -184,10 +160,15 @@ proc applyMessage(computation: var BaseComputation, opCode: static[Op]): bool =
debug "EVMError applyMessage failed", debug "EVMError applyMessage failed",
msg = computation.error.info, msg = computation.error.info,
depth = computation.msg.depth depth = computation.msg.depth
except ValueError:
snapshot.revert(true)
debug "ValueError applyMessage failed",
msg = computation.error.info,
depth = computation.msg.depth
result = not computation.isError result = not computation.isError
proc writeContract(fork: Fork, computation: var BaseComputation, opCode: static[Op]): bool = proc writeContract*(computation: var BaseComputation, fork: Fork): bool =
result = true result = true
let contractCode = computation.output let contractCode = computation.output
@ -200,8 +181,8 @@ proc writeContract(fork: Fork, computation: var BaseComputation, opCode: static[
let storageAddr = computation.msg.storageAddress let storageAddr = computation.msg.storageAddress
if computation.isSuicided(storageAddr): return if computation.isSuicided(storageAddr): return
# tricky gasCost: 1,0,0 -> createCost. 0,0,x -> depositCost let gasParams = GasParams(kind: Create, cr_memLength: contractCode.len)
let codeCost = computation.gasCosts[Create].m_handler(0, 0, contractCode.len) let codeCost = computation.gasCosts[Create].c_handler(0.u256, gasParams).gasCost
if computation.gasMeter.gasRemaining >= codeCost: if computation.gasMeter.gasRemaining >= codeCost:
computation.gasMeter.consumeGas(codeCost, reason = "Write contract code for CREATE") computation.gasMeter.consumeGas(codeCost, reason = "Write contract code for CREATE")
computation.vmState.mutateStateDb: computation.vmState.mutateStateDb:
@ -211,7 +192,7 @@ proc writeContract(fork: Fork, computation: var BaseComputation, opCode: static[
if fork < FkHomestead: computation.output = @[] if fork < FkHomestead: computation.output = @[]
result = false result = false
proc generateChildComputation*(fork: Fork, computation: var BaseComputation, childMsg: Message, opCode: static[Op]): BaseComputation = proc generateChildComputation*(fork: Fork, computation: var BaseComputation, childMsg: Message): BaseComputation =
var childComp = newBaseComputation( var childComp = newBaseComputation(
computation.vmState, computation.vmState,
computation.vmState.blockNumber, computation.vmState.blockNumber,
@ -221,20 +202,6 @@ proc generateChildComputation*(fork: Fork, computation: var BaseComputation, chi
# Copy the fork op code executor proc (assumes child computation is in the same fork) # Copy the fork op code executor proc (assumes child computation is in the same fork)
childComp.opCodeExec = computation.opCodeExec childComp.opCodeExec = computation.opCodeExec
var snapshot = computation.snapshot()
defer: snapshot.dispose()
var contractOK = true
if applyMessage(childComp, opCode):
if childMsg.isCreate:
contractOK = fork.writeContract(childComp, opCode)
if not contractOK and fork == FkHomestead:
# consume all gas
snapshot.revert(true)
else:
snapshot.commit()
return childComp return childComp
proc addChildComputation(fork: Fork, computation: var BaseComputation, child: BaseComputation) = proc addChildComputation(fork: Fork, computation: var BaseComputation, child: BaseComputation) =
@ -262,11 +229,25 @@ proc getFork*(computation: BaseComputation): Fork =
else: else:
computation.vmState.blockNumber.toFork computation.vmState.blockNumber.toFork
proc applyChildComputation*(computation: var BaseComputation, childMsg: Message, opCode: static[Op]): BaseComputation = proc applyChildComputation*(parentComp, childComp: var BaseComputation, opCode: static[Op]) =
## Apply the vm message childMsg as a child computation. ## Apply the vm message childMsg as a child computation.
let fork = computation.getFork let fork = parentComp.getFork
result = fork.generateChildComputation(computation, childMsg, opCode)
fork.addChildComputation(computation, result) var snapshot = parentComp.snapshot()
defer: snapshot.dispose()
var contractOK = true
if applyMessage(childComp, opCode):
if childComp.msg.isCreate:
contractOK = childComp.writeContract(fork)
if not contractOK and fork == FkHomestead:
# consume all gas
snapshot.revert(true)
else:
snapshot.commit()
fork.addChildComputation(parentComp, childComp)
proc registerAccountForDeletion*(c: var BaseComputation, beneficiary: EthAddress) = proc registerAccountForDeletion*(c: var BaseComputation, beneficiary: EthAddress) =
if c.msg.storageAddress in c.accountsToDelete: if c.msg.storageAddress in c.accountsToDelete:
@ -275,9 +256,6 @@ proc registerAccountForDeletion*(c: var BaseComputation, beneficiary: EthAddress
"registered for deletion multiple times") "registered for deletion multiple times")
c.accountsToDelete[c.msg.storageAddress] = beneficiary c.accountsToDelete[c.msg.storageAddress] = beneficiary
proc isSuicided*(c: var BaseComputation, address: EthAddress): bool =
result = address in c.accountsToDelete
proc addLogEntry*(c: var BaseComputation, log: Log) {.inline.} = proc addLogEntry*(c: var BaseComputation, log: Log) {.inline.} =
c.logEntries.add(log) c.logEntries.add(log)

View File

@ -64,14 +64,17 @@ type
case kind*: Op case kind*: Op
of Sstore: of Sstore:
s_isStorageEmpty*: bool s_isStorageEmpty*: bool
of Call: of Call, CallCode, DelegateCall, StaticCall:
c_isNewAccount*: bool c_isNewAccount*: bool
c_gasBalance*: GasInt c_gasBalance*: GasInt
c_contractGas*: Gasint c_contractGas*: Gasint
c_currentMemSize*: Natural c_currentMemSize*: Natural
c_memOffset*: Natural c_memOffset*: Natural
c_memLength*: Natural c_memLength*: Natural
c_opCode*: Op of Create:
cr_currentMemSize*: Natural
cr_memOffset*: Natural
cr_memLength*: Natural
else: else:
discard discard
@ -169,10 +172,15 @@ template gasCosts(fork: Fork, prefix, ResultGasCostsName: untyped) =
if not value.isZero: if not value.isZero:
result += static(FeeSchedule[GasExpByte]) * (1 + log256(value)) result += static(FeeSchedule[GasExpByte]) * (1 + log256(value))
func `prefix gasCreate`(currentMemSize, memOffset, memLength: Natural): GasInt {.nimcall.} = func `prefix gasCreate`(value: Uint256, gasParams: GasParams): GasResult {.nimcall.} =
# tricky gasCost: 1,0,0 -> createCost. 0,0,x -> depositCost if value.isZero:
result = currentMemSize * static(FeeSchedule[GasCreate]) + result.gasCost = static(FeeSchedule[GasCodeDeposit]) * gasParams.cr_memLength
static(FeeSchedule[GasCodeDeposit]) * memLength else:
result.gasCost = static(FeeSchedule[GasCreate]) +
`prefix gasMemoryExpansion`(
gasParams.cr_currentMemSize,
gasParams.cr_memOffset,
gasParams.cr_memLength)
func `prefix gasSha3`(currentMemSize, memOffset, memLength: Natural): GasInt {.nimcall.} = func `prefix gasSha3`(currentMemSize, memOffset, memLength: Natural): GasInt {.nimcall.} =
@ -294,7 +302,7 @@ template gasCosts(fork: Fork, prefix, ResultGasCostsName: untyped) =
) )
# Cnew_account # Cnew_account
if gasParams.c_isNewAccount and gasParams.c_opCode == Call: if gasParams.c_isNewAccount and gasParams.kind == Call:
if fork < FkSpurious: if fork < FkSpurious:
# Pre-EIP161 all account creation calls consumed 25000 gas. # Pre-EIP161 all account creation calls consumed 25000 gas.
result.gasCost += static(FeeSchedule[GasNewAccount]) result.gasCost += static(FeeSchedule[GasNewAccount])
@ -306,7 +314,7 @@ template gasCosts(fork: Fork, prefix, ResultGasCostsName: untyped) =
result.gasCost += static(FeeSchedule[GasNewAccount]) result.gasCost += static(FeeSchedule[GasNewAccount])
# Cxfer # Cxfer
if not value.isZero: if not value.isZero and gasParams.kind in {Call, CallCode}:
result.gasCost += static(FeeSchedule[GasCallValue]) result.gasCost += static(FeeSchedule[GasCallValue])
# Cextra # Cextra
@ -329,7 +337,7 @@ template gasCosts(fork: Fork, prefix, ResultGasCostsName: untyped) =
result.gasCost += result.gasRefund result.gasCost += result.gasRefund
# Ccallgas - Gas sent to the child message # Ccallgas - Gas sent to the child message
if not value.isZero: if not value.isZero and gasParams.kind in {Call, CallCode}:
result.gasRefund += static(FeeSchedule[GasCallStipend]) result.gasRefund += static(FeeSchedule[GasCallStipend])
func `prefix gasHalt`(currentMemSize, memOffset, memLength: Natural): GasInt {.nimcall.} = func `prefix gasHalt`(currentMemSize, memOffset, memLength: Natural): GasInt {.nimcall.} =
@ -509,7 +517,7 @@ template gasCosts(fork: Fork, prefix, ResultGasCostsName: untyped) =
Log4: memExpansion `prefix gasLog4`, Log4: memExpansion `prefix gasLog4`,
# f0s: System operations # f0s: System operations
Create: memExpansion `prefix gasCreate`, # TODO: Change to dynamic? Create: complex `prefix gasCreate`,
Call: complex `prefix gasCall`, Call: complex `prefix gasCall`,
CallCode: complex `prefix gasCall`, CallCode: complex `prefix gasCall`,
Return: memExpansion `prefix gasHalt`, Return: memExpansion `prefix gasHalt`,

View File

@ -220,18 +220,18 @@ proc writePaddedResult(mem: var Memory,
data: openarray[byte], data: openarray[byte],
memPos, dataPos, len: Natural, memPos, dataPos, len: Natural,
paddingValue = 0.byte) = paddingValue = 0.byte) =
let prevLen = mem.len
mem.extend(memPos, len) mem.extend(memPos, len)
let dataEndPosition = dataPos.int64 + len - 1 let dataEndPosition = dataPos.int64 + len - 1
let sourceBytes = data[min(dataPos, data.len) .. min(data.len - 1, dataEndPosition)] let sourceBytes = data[min(dataPos, data.len) .. min(data.len - 1, dataEndPosition)]
mem.write(memPos, sourceBytes) mem.write(memPos, sourceBytes)
# geth doesn't do padding, it causes block validation error
when false:
# Don't duplicate zero-padding of mem.extend # Don't duplicate zero-padding of mem.extend
let paddingOffset = memPos + sourceBytes.len let paddingOffset = min(memPos + sourceBytes.len, mem.len)
let numPaddingBytes = min(mem.len - paddingOffset, len - sourceBytes.len)
if numPaddingBytes > 0:
# TODO: avoid unnecessary memory allocation # TODO: avoid unnecessary memory allocation
mem.write(paddingOffset, repeat(paddingValue, max(prevLen - paddingOffset, 0))) mem.write(paddingOffset, repeat(paddingValue, numPaddingBytes))
op address, inline = true: op address, inline = true:
## 0x30, Get address of currently executing account. ## 0x30, Get address of currently executing account.
@ -257,7 +257,6 @@ op callValue, inline = true:
op callDataLoad, inline = false, startPos: op callDataLoad, inline = false, startPos:
## 0x35, Get input data of current environment ## 0x35, Get input data of current environment
# TODO simplification: https://github.com/status-im/nimbus/issues/67
let dataPos = startPos.cleanMemRef let dataPos = startPos.cleanMemRef
if dataPos >= computation.msg.data.len: if dataPos >= computation.msg.data.len:
push: 0 push: 0
@ -295,11 +294,11 @@ op callDataCopy, inline = false, memStartPos, copyStartPos, size:
computation.memory.writePaddedResult(computation.msg.data, memPos, copyPos, len) computation.memory.writePaddedResult(computation.msg.data, memPos, copyPos, len)
op codesize, inline = true: op codeSize, inline = true:
## 0x38, Get size of code running in current environment. ## 0x38, Get size of code running in current environment.
push: computation.code.len push: computation.code.len
op codecopy, inline = false, memStartPos, copyStartPos, size: op codeCopy, inline = false, memStartPos, copyStartPos, size:
## 0x39, Copy code running in current environment to memory. ## 0x39, Copy code running in current environment to memory.
# TODO tests: https://github.com/status-im/nimbus/issues/67 # TODO tests: https://github.com/status-im/nimbus/issues/67
@ -343,8 +342,8 @@ op returnDataCopy, inline = false, memStartPos, copyStartPos, size:
let (memPos, copyPos, len) = (memStartPos.cleanMemRef, copyStartPos.cleanMemRef, size.cleanMemRef) let (memPos, copyPos, len) = (memStartPos.cleanMemRef, copyStartPos.cleanMemRef, size.cleanMemRef)
computation.gasMeter.consumeGas( computation.gasMeter.consumeGas(
computation.gasCosts[CodeCopy].m_handler(memPos, copyPos, len), computation.gasCosts[ReturnDataCopy].m_handler(memPos, copyPos, len),
reason="ExtCodeCopy fee") reason="returnDataCopy fee")
if copyPos + len > computation.returnData.len: if copyPos + len > computation.returnData.len:
# TODO Geth additionally checks copyPos + len < 64 # TODO Geth additionally checks copyPos + len < 64
@ -506,17 +505,17 @@ genLog()
# ########################################## # ##########################################
# f0s: System operations. # f0s: System operations.
op create, inline = false, value, startPosition, size: proc canTransfer(computation: BaseComputation, memPos, memLen: int, value: Uint256): bool =
## 0xf0, Create a new account with associated code. let gasParams = GasParams(kind: Create,
# TODO: Forked create for Homestead cr_currentMemSize: computation.memory.len,
cr_memOffset: memPos,
let (memPos, len) = (startPosition.cleanMemRef, size.cleanMemRef) cr_memLength: memLen
# tricky gasCost: 1,0,0 -> createCost. 0,0,x -> depositCost )
let gasCost = computation.gasCosts[Create].m_handler(1, 0, 0) let gasCost = computation.gasCosts[Create].c_handler(1.u256, gasParams).gasCost
let reason = &"CREATE: GasCreate + {len} * memory expansion" let reason = &"CREATE: GasCreate + {memLen} * memory expansion"
computation.gasMeter.consumeGas(gasCost, reason = reason) computation.gasMeter.consumeGas(gasCost, reason = reason)
computation.memory.extend(memPos, len) computation.memory.extend(memPos, memLen)
# the sender is childmsg sender, not parent msg sender # the sender is childmsg sender, not parent msg sender
# perhaps we need to move this code somewhere else # perhaps we need to move this code somewhere else
@ -527,30 +526,15 @@ op create, inline = false, value, startPosition, size:
if senderBalance < value: if senderBalance < value:
debug "Computation Failure", reason = "Insufficient funds available to transfer", required = computation.msg.value, balance = senderBalance debug "Computation Failure", reason = "Insufficient funds available to transfer", required = computation.msg.value, balance = senderBalance
push: 0 return false
return
if computation.msg.depth >= MaxCallDepth: if computation.msg.depth >= MaxCallDepth:
debug "Computation Failure", reason = "Stack too deep", maximumDepth = MaxCallDepth, depth = computation.msg.depth debug "Computation Failure", reason = "Stack too deep", maximumDepth = MaxCallDepth, depth = computation.msg.depth
push: 0 return false
return
##### getBalance type error: expression 'db' is of type: proc (vmState: untyped, readOnly: untyped, handler: untyped): untyped{.noSideEffect, gcsafe, locks: <unknown>.} result = true
# computation.vmState.db(readOnly=true):
# when ForkName >= FkHomestead: # TODO this is done in Geth but not Parity and Py-EVM
# let insufficientFunds = db.getBalance(computation.msg.storageAddress) < value # TODO check gas balance rollover
# let stackTooDeep = computation.msg.depth >= MaxCallDepth
# # TODO: error message
# if insufficientFunds or stackTooDeep:
# push: 0
# return
# else:
# let stackTooDeep = computation.msg.depth >= MaxCallDepth
# if stackTooDeep:
# push: 0
# return
proc setupCreate(computation: var BaseComputation, memPos, len: int, value: Uint256): BaseComputation =
let let
callData = computation.memory.read(memPos, len) callData = computation.memory.read(memPos, len)
createMsgGas = computation.getGasRemaining() createMsgGas = computation.getGasRemaining()
@ -575,7 +559,7 @@ op create, inline = false, value, startPosition, size:
if isCollision: if isCollision:
debug "Address collision while creating contract", address = contractAddress.toHex debug "Address collision while creating contract", address = contractAddress.toHex
push: 0 push: 0
raise newException(ValidationError, "Contract creation failed, address already in use") return
let childMsg = prepareChildMessage( let childMsg = prepareChildMessage(
computation, computation,
@ -588,15 +572,29 @@ op create, inline = false, value, startPosition, size:
) )
childMsg.sender = computation.msg.storageAddress childMsg.sender = computation.msg.storageAddress
let childComputation = computation.applyChildComputation(childMsg, Create) result = generateChildComputation(computation.getFork, computation, childMsg)
if childComputation.isError: op create, inline = false, value, startPosition, size:
## 0xf0, Create a new account with associated code.
# TODO: Forked create for Homestead
let (memPos, len) = (startPosition.cleanMemRef, size.cleanMemRef)
if not computation.canTransfer(memPos, len, value):
push: 0
return
var childComp = setupCreate(computation, memPos, len, value)
if childComp.isNil: return
computation.applyChildComputation(childComp, Create)
if childComp.isError:
push: 0 push: 0
else: else:
push: contractAddress push: childComp.msg.storageAddress
if not childComputation.shouldBurnGas: if not childComp.shouldBurnGas:
computation.gasMeter.returnGas(childComputation.gasMeter.gasRemaining) computation.gasMeter.returnGas(childComp.gasMeter.gasRemaining)
proc callParams(computation: var BaseComputation): (UInt256, UInt256, EthAddress, EthAddress, EthAddress, UInt256, UInt256, UInt256, UInt256, MsgFlags) = proc callParams(computation: var BaseComputation): (UInt256, UInt256, EthAddress, EthAddress, EthAddress, UInt256, UInt256, UInt256, UInt256, MsgFlags) =
let gas = computation.stack.popInt() let gas = computation.stack.popInt()
@ -631,7 +629,7 @@ proc callCodeParams(computation: var BaseComputation): (UInt256, UInt256, EthAdd
result = (gas, result = (gas,
value, value,
to, to,
ZERO_ADDRESS, # sender computation.msg.storageAddress, # sender
to, # code_address to, # code_address
memoryInputStartPosition, memoryInputStartPosition,
memoryInputSize, memoryInputSize,
@ -647,7 +645,7 @@ proc delegateCallParams(computation: var BaseComputation): (UInt256, UInt256, Et
memoryOutputStartPosition, memoryOutputSize) = computation.stack.popInt(4) memoryOutputStartPosition, memoryOutputSize) = computation.stack.popInt(4)
let to = computation.msg.storageAddress let to = computation.msg.storageAddress
let sender = computation.msg.storageAddress let sender = computation.msg.sender
let value = computation.msg.value let value = computation.msg.value
result = (gas, result = (gas,
@ -680,11 +678,7 @@ proc staticCallParams(computation: var BaseComputation): (UInt256, UInt256, EthA
emvcStatic) # is_static emvcStatic) # is_static
template genCall(callName: untyped, opCode: Op): untyped = template genCall(callName: untyped, opCode: Op): untyped =
op callName, inline = false: proc `callName Setup`(computation: var BaseComputation, callNameStr: string): (BaseComputation, int, int) =
## CALL, 0xf1, Message-Call into an account
## CALLCODE, 0xf2, Message-call into this account with an alternative account's code.
## DELEGATECALL, 0xf4, Message-call into this account with an alternative account's code, but persisting the current values for sender and value.
## STATICCALL, 0xfa, Static message-call into an account.
let (gas, value, to, sender, let (gas, value, to, sender,
codeAddress, codeAddress,
memoryInputStartPosition, memoryInputSize, memoryInputStartPosition, memoryInputSize,
@ -704,37 +698,31 @@ template genCall(callName: untyped, opCode: Op): untyped =
(memOutPos, memOutLen) (memOutPos, memOutLen)
if gas > high(GasInt).u256: if gas > high(GasInt).u256:
raise newException(TypeError, "GasInt Overflow (" & callName.astToStr & ")") raise newException(TypeError, "GasInt Overflow (" & callNameStr & ")")
let (childGasFee, childGasLimit) = computation.gasCosts[opCode].c_handler( let (childGasFee, childGasLimit) = computation.gasCosts[opCode].c_handler(
value, value,
GasParams(kind: Call, GasParams(kind: opCode,
c_isNewAccount: isNewAccount, c_isNewAccount: isNewAccount,
c_gasBalance: computation.gasMeter.gasRemaining, c_gasBalance: computation.gasMeter.gasRemaining,
c_contractGas: gas.truncate(GasInt), c_contractGas: gas.truncate(GasInt),
c_currentMemSize: computation.memory.len, c_currentMemSize: computation.memory.len,
c_memOffset: memOffset, c_memOffset: memOffset,
c_memLength: memLength, c_memLength: memLength
c_opCode: opCode
)) ))
trace "Call (" & callName.astToStr & ")", childGasLimit, childGasFee
if childGasFee >= 0: if childGasFee >= 0:
computation.gasMeter.consumeGas(childGasFee, reason = $opCode) computation.gasMeter.consumeGas(childGasFee, reason = $opCode)
if childGasFee < 0 and childGasLimit <= 0: if childGasFee < 0 and childGasLimit <= 0:
raise newException(OutOfGas, "Gas not enough to perform calculation (" & callName.astToStr & ")") raise newException(OutOfGas, "Gas not enough to perform calculation (" & callNameStr & ")")
computation.memory.extend(memInPos, memInLen) computation.memory.extend(memInPos, memInLen)
computation.memory.extend(memOutPos, memOutLen) computation.memory.extend(memOutPos, memOutLen)
let let
callData = computation.memory.read(memInPos, memInLen) callData = computation.memory.read(memInPos, memInLen)
code = code = computation.vmState.readOnlyStateDb.getCode(codeAddress)
if codeAddress != ZERO_ADDRESS:
computation.vmState.readOnlyStateDb.getCode(codeAddress)
else:
computation.vmState.readOnlyStateDb.getCode(to)
var childMsg = prepareChildMessage( var childMsg = prepareChildMessage(
computation, computation,
@ -746,28 +734,35 @@ template genCall(callName: untyped, opCode: Op): untyped =
MessageOptions(flags: flags) MessageOptions(flags: flags)
) )
if sender != ZERO_ADDRESS:
childMsg.sender = sender childMsg.sender = sender
else:
childMsg.sender = computation.msg.storageAddress
when opCode == CallCode: when opCode == CallCode:
childMsg.storageAddress = computation.msg.storageAddress childMsg.storageAddress = computation.msg.storageAddress
var childComputation = applyChildComputation(computation, childMsg, opCode) var childComp = generateChildComputation(computation.getFork, computation, childMsg)
result = (childComp, memOutPos, memOutLen)
if childComputation.isError: op callName, inline = false:
## CALL, 0xf1, Message-Call into an account
## CALLCODE, 0xf2, Message-call into this account with an alternative account's code.
## DELEGATECALL, 0xf4, Message-call into this account with an alternative account's code, but persisting the current values for sender and value.
## STATICCALL, 0xfa, Static message-call into an account.
var (childComp, memOutPos, memOutLen) = `callName Setup`(computation, callName.astToStr)
applyChildComputation(computation, childComp, opCode)
if childComp.isError:
push: 0 push: 0
else: else:
push: 1 push: 1
if not childComputation.shouldEraseReturnData: if not childComp.shouldEraseReturnData:
let actualOutputSize = min(memOutLen, childComputation.output.len) let actualOutputSize = min(memOutLen, childComp.output.len)
computation.memory.write( computation.memory.write(
memOutPos, memOutPos,
childComputation.output.toOpenArray(0, actualOutputSize - 1)) childComp.output.toOpenArray(0, actualOutputSize - 1))
if not childComputation.shouldBurnGas: if not childComp.shouldBurnGas:
computation.gasMeter.returnGas(childComputation.gasMeter.gasRemaining) computation.gasMeter.returnGas(childComp.gasMeter.gasRemaining)
if computation.gasMeter.gasRemaining <= 0: if computation.gasMeter.gasRemaining <= 0:
raise newException(OutOfGas, "computation out of gas after contract call (" & callName.astToStr & ")") raise newException(OutOfGas, "computation out of gas after contract call (" & callName.astToStr & ")")

View File

@ -172,13 +172,18 @@ let FrontierOpDispatch {.compileTime.}: array[Op, NimNode] = block:
Call: newIdentNode "call", Call: newIdentNode "call",
CallCode: newIdentNode "callCode", CallCode: newIdentNode "callCode",
Return: newIdentNode "returnOp", Return: newIdentNode "returnOp",
DelegateCall: newIdentNode "delegateCall",
# StaticCall: introduced in Byzantium # StaticCall: introduced in Byzantium
# Revert: introduced in Byzantium # Revert: introduced in Byzantium
# Invalid: newIdentNode "invalid", # Invalid: newIdentNode "invalid",
SelfDestruct: newIdentNode "selfDestruct" SelfDestruct: newIdentNode "selfDestruct"
] ]
proc genHomesteadJumpTable(ops: array[Op, NimNode]): array[Op, NimNode] {.compileTime.} =
result = ops
result[DelegateCall] = newIdentNode "delegateCall"
let HomesteadOpDispatch {.compileTime.}: array[Op, NimNode] = genHomesteadJumpTable(FrontierOpDispatch)
proc opTableToCaseStmt(opTable: array[Op, NimNode], computation: NimNode): NimNode = proc opTableToCaseStmt(opTable: array[Op, NimNode], computation: NimNode): NimNode =
let instr = genSym(nskVar) let instr = genSym(nskVar)
@ -240,22 +245,28 @@ proc opTableToCaseStmt(opTable: array[Op, NimNode], computation: NimNode): NimNo
macro genFrontierDispatch(computation: BaseComputation): untyped = macro genFrontierDispatch(computation: BaseComputation): untyped =
result = opTableToCaseStmt(FrontierOpDispatch, computation) result = opTableToCaseStmt(FrontierOpDispatch, computation)
macro genHomesteadDispatch(computation: BaseComputation): untyped =
result = opTableToCaseStmt(HomesteadOpDispatch, computation)
proc frontierVM(computation: var BaseComputation) = proc frontierVM(computation: var BaseComputation) =
if not computation.execPrecompiles: if not computation.execPrecompiles:
genFrontierDispatch(computation) genFrontierDispatch(computation)
proc homesteadVM(computation: var BaseComputation) =
if not computation.execPrecompiles:
genHomesteadDispatch(computation)
proc updateOpcodeExec*(computation: var BaseComputation, fork: Fork) = proc updateOpcodeExec*(computation: var BaseComputation, fork: Fork) =
case fork case fork
of FkFrontier..FkSpurious: of FkFrontier..FkThawing:
computation.opCodeExec = frontierVM computation.opCodeExec = frontierVM
computation.frontierVM() computation.frontierVM()
of FkHomestead..FkSpurious:
computation.opCodeExec = homesteadVM
computation.homesteadVM()
else: else:
raise newException(VMError, "Unknown or not implemented fork: " & $fork) raise newException(VMError, "Unknown or not implemented fork: " & $fork)
proc updateOpcodeExec*(computation: var BaseComputation) =
let fork = computation.getFork
computation.updateOpcodeExec(fork)
proc executeOpcodes*(computation: var BaseComputation) = proc executeOpcodes*(computation: var BaseComputation) =
# TODO: Optimise getting fork and updating opCodeExec only when necessary # TODO: Optimise getting fork and updating opCodeExec only when necessary
let fork = computation.getFork let fork = computation.getFork

View File

@ -27,8 +27,12 @@ proc getSignature*(computation: BaseComputation): (array[32, byte], Signature) =
# Copy message data to buffer # Copy message data to buffer
# Note that we need to rearrange to R, S, V # Note that we need to rearrange to R, S, V
bytes[0..63] = data[64..127] bytes[0..63] = data[64..127]
let v = data[63] # TODO: Endian var VOK = true
if v.int notin 27..28: let v = data[63]
for x in 32..<63:
if data[x] != 0: VOK = false
VOK = VOK and v.int in 27..28
if not VOK:
raise newException(ValidationError, "Invalid V in getSignature") raise newException(ValidationError, "Invalid V in getSignature")
bytes[64] = v - 27 bytes[64] = v - 27

View File

@ -115,14 +115,14 @@ proc traceOpCodeEnded*(tracer: var TransactionTracer, c: BaseComputation, op: Op
trace "Op", json = j.pretty() trace "Op", json = j.pretty()
proc traceError*(tracer: var TransactionTracer, c: BaseComputation) = proc traceError*(tracer: var TransactionTracer, c: BaseComputation) =
if tracer.trace["structLogs"].elems.len > 0:
let j = tracer.trace["structLogs"].elems[^1] let j = tracer.trace["structLogs"].elems[^1]
j["error"] = %(c.error.info)
trace "Error", json = j.pretty()
# TODO: figure out how to get gasCost # TODO: figure out how to get gasCost
# when contract execution failed before traceOpCodeEnded called # when contract execution failed before traceOpCodeEnded called
# because exception raised # because exception raised
#j["gasCost"] = % #j["gasCost"] = %
j["error"] = %(c.error.info)
tracer.trace["failed"] = %true tracer.trace["failed"] = %true
trace "Error", json = j.pretty()

View File

@ -24,14 +24,13 @@ proc validateTransaction*(vmState: BaseVMState, transaction: Transaction, sender
transaction.accountNonce == readOnlyDB.getNonce(sender) and transaction.accountNonce == readOnlyDB.getNonce(sender) and
readOnlyDB.getBalance(sender) >= gasCost readOnlyDB.getBalance(sender) >= gasCost
proc setupComputation*(vmState: BaseVMState, tx: Transaction, sender: EthAddress, forkOverride=none(Fork)) : BaseComputation = proc setupComputation*(vmState: BaseVMState, tx: Transaction, sender, recipient: EthAddress, forkOverride=none(Fork)) : BaseComputation =
let fork = let fork =
if forkOverride.isSome: if forkOverride.isSome:
forkOverride.get forkOverride.get
else: else:
vmState.blockNumber.toFork vmState.blockNumber.toFork
var recipient: EthAddress
var gas = tx.gasLimit - tx.intrinsicGas var gas = tx.gasLimit - tx.intrinsicGas
# TODO: refactor message to use byterange # TODO: refactor message to use byterange
@ -39,15 +38,17 @@ proc setupComputation*(vmState: BaseVMState, tx: Transaction, sender: EthAddress
var data, code: seq[byte] var data, code: seq[byte]
if tx.isContractCreation: if tx.isContractCreation:
recipient = generateAddress(sender, tx.accountNonce)
gas = gas - gasFees[fork][GasTXCreate] gas = gas - gasFees[fork][GasTXCreate]
data = @[] data = @[]
code = tx.payload code = tx.payload
else: else:
recipient = tx.to
data = tx.payload data = tx.payload
code = vmState.readOnlyStateDB.getCode(tx.to).toSeq code = vmState.readOnlyStateDB.getCode(tx.to).toSeq
if gas < 0:
debug "not enough gas to perform calculation", gas=gas
return
let msg = newMessage( let msg = newMessage(
gas = gas, gas = gas,
gasPrice = tx.gasPrice, gasPrice = tx.gasPrice,
@ -99,22 +100,6 @@ proc refundGas*(computation: BaseComputation, tx: Transaction, sender: EthAddres
result = gasUsed - gasRefund result = gasUsed - gasRefund
proc writeContract*(computation: var BaseComputation): bool =
result = true
let contractAddress = computation.msg.storageAddress
if computation.isSuicided(contractAddress): return
let codeCost = computation.gasCosts[Create].m_handler(0, 0, computation.output.len)
if computation.gasMeter.gasRemaining >= codeCost:
computation.gasMeter.consumeGas(codeCost, reason = "Write contract code for CREATE")
computation.vmState.mutateStateDB:
db.setCode(contractAddress, computation.output.toRange)
result = true
else:
computation.vmState.mutateStateDB:
db.setCode(contractAddress, ByteRange())
result = false
#[ #[
method executeTransaction(vmState: BaseVMState, transaction: Transaction): (BaseComputation, BlockHeader) {.base.}= method executeTransaction(vmState: BaseVMState, transaction: Transaction): (BaseComputation, BlockHeader) {.base.}=
# Execute the transaction in the vm # Execute the transaction in the vm

View File

@ -0,0 +1,382 @@
{
"blockNumber": "14e302",
"state": {
"658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A0EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA008B34FB80658FAF238BD43B3AE54886ED49E20586A8DBFD4CD90C64F50FB4390A0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"6C56D1A0665E4CC69F5F56362266D27CF8BE76A7E82B735FCD24284FA4824E8D": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A0F8B2D39AC21409A9FAEDD125271D6AF836662973363A23A9767654928AC9E231A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"8654051C4F02FCFC4108B05EEFE8CF2051ABBCBBCBDC5A95329701CDF93909C4": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A03F681B6C834A3F89F84A114C90DC744F9EB8BFC3A504E607867A62B017A49B4DA0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"4FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB28": "E2A0390DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E56301",
"B089B98A2A9F67CD1EB8CB0C983474155F907123176CAB7D729B8939493B477A": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A03E63C992FD036053F507378AF74A9DB17A5F3CBCC4E67B9CC095EBA24ED0BAD4A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"4EE0A1A77E13727406F7E7E4F73726A1C1F3966D0EED29E1641D90E05877ADA5": "F851A057E4AA3F3738F7EA1ED7CD959D0E6C686ED0363EF17D1B776079CB0097A668B380808080808080A0884345191165C6320470BD59DB6890CF4CF82871995429C52D4195C76B4896D48080808080808080",
"24883A2930BE99037DB8A3509B8823EEED862AF941058097387DFE41E4D60909": "F90211A03FF390E21604F2D09F4A79AABF514D05870292D2E08EDB667EF78D1DDDDD5872A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"0AF05D02787BC99A0373FE109630555B6544B5EFEE1CA935482B28CA1661EEF4": "F89180A031E26BFF056B10632EEDAEB546E9F6093A4A0457D12E23A4A16D1D3916E18BEBA0951ED0BB935CEC9149C90A10F09DB807F30AC225E614382088181F06A34B3E2EA032268D3A610FAECF7E263523F917AAA179183C59A56419D44CCAB33FF87CD69CA0F03223C4F9C359334D013DD455DD6DCA31E5364B27F10D545579D931A9844C8D808080808080808080808080",
"AE0C908942BCBB883D9A9FBB7F309F57EC5405CC4512BE54DACDD28E24F9B428": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893F0700EF2A926911EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"8394291AA2F1D003A5473C6546C4657D3F1C49F1C8D1EAF94180D8E0FC13DF59": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A0FA4B6B8737B94657B485B1DA1935FA0C448408ED6E4F937714F302B5451B1BBEA0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"034DF5D525F611FED4E936D4A59207C10FD6CD01A3467B89F8B49AE81A7E550053": "C58314E30201",
"4A39581DE3EFE69CD181DCE97F5D7A240275AC425448A42C526CF4234D2969EB": "F891A0443635227CC3EE7F472DB1149C3F8103DF4B74AA6229A9099C09C79CB38C24F48080808080A0762320217942EF12BF2F87EC7B6E1496F4DB214C9DA110AF53BE11E8D9054A93808080A0DD882E67A07A0C862D9ABE6E41EEE954D1E69B395E830A44EA692FFFED2EC44E80A0B5C3A694AB0ECA2AC148CF61FED715ADCDDB42290A429C02E7B3F00E5743615780808080",
"F2488BD7CE87A3D4ECF74209B86F4E7C12A17171516C86FD1586F970E6C7B70E": "F90211A05828290F0DBB7C42C18799A6D33F01DB0A07D1B265E834C42C2D40768D71F5D7A0286AA341FBEAF4E0A9BF2AF5B9A539A76D23691344F829CDA70406782D2B5CEDA0EA00E25FDA3937AAEEDF58745A6426F50650DAE487000337E7C314083FD33FC2A0E45F1E32C90FF17F4596C1E1292CBCF2E4D71651589CB843BAFC37DD54C82387A0BD3F35DDCDB326755BF887E1D88B8C5AFB7D938DE3115B2A92F363700DD2A580A01A0505CE678FE798158CE24F794D5468838FC1352657CFF56E6BC22DE59EA86BA0802288776F249C5452B0E09EAF7DB453E2ED6298EF7EEE7659BE6E5EAE816947A0666DA52D7BB221F293E2EFEEA72E14D258E3F3626699231F852997931406F10EA09FC9F60E7956C18DA3D6F5AC0A6C003157F4E91CFE5359A8779104D9BBE57BE3A0CC95BC3EA79DD301203032B8F23E746F5E5457648FB43FC4EE751E5A0B3C4AFDA065FD7AD94E1D2C4101FC793E2544B6730C2B988B4398F984FA857F686A43093FA06830E336B550D85F2D289EDAB657A509D86B2BBEE1C70996879F613376AA86CCA09188A68FC72F47BF6BF295F3165831B79BAF6F213C66CA3F3C372531E3398340A07E92CC3CD578663C918D827A68E9395667A5B9CE92559AB9B218AA25F311C59BA0AFBDFE25896666244DEF374F2AD1C0B75B05C05EDB91A83BE427EE847257A4B9A0040AC9BF3211FC449DEA911C785C949DBB494990822303C51DCDC6DBB5F72E6E80",
"C706E2C3E5E8045EB34BCEA7207F16ADC6AB2C5820346A1A3DF331C754B3AC5B": "F901F1A0988F93A3FBC63D4B15DCFAF248C857EECB735A2CE027644CE382E1A259945B47A093F2E1C5BD414C950B4BE942BD1DFD4ED0F9E37FB2DDE855E011A463AE609988A03A38897E73E53753897A169E7FC91766257439D799B8082CC164C0DC827C479EA0C5CA151585A699D530EF639F16213484D4F4BF2EF40DB808422E485E97BEA93EA04EE1944DA4C1DE19F2302F9EA03C1023F72A6F54C680609AAD4C09F82F426477A0BDDDA7CC57A26C131738ED1A6E2D6E2833A7A68EA9021427342FBD7DB2C4FECFA007C7C70A5B703AF319B4475FE485F8C4122ED8791B7E11C7775FC8958D0013E9A09A9DF02A9E3C29AFB7E11441D976BCD091DED94A087F6E4028CF2A4F1918F585A0C30C8A124CB2E60E484447C8A0B13A6988722A845B75227A997B57C55F7B4A10A0B1B0512FFE34E4D15D855E4ADE5151FE280D6092A0D452306CFF76A6429F4F89A05D4238276794CBC1C9E35A5200BE3AD1CBF8C188AE988F29A44063B31BD786E2A01AFE8BD3D2F5BF2A109BF013E5E36D5EB1030B06A486189F38937B92C5C8578FA03B4DD618950E9C0FF3F8CC7E95655AA9F04C629047140DCC047A5A5187AC2350A0F15602E15D0B7ABCFB5E846A1CF97EB83E977BCB317F51AEFA0492DC9DEA960DA0711D4C70272EA1460E0819D2B45F29982068F11ACF1F4D7CACCAB61C8B92D5518080",
"8A0B91B4244C79AD463CD466013C483F3613289BE87A660D96103B3FC46A7757": "F90211A03DDF2B0C69F7B1ADFE68A274D8292BBA1E470BC275B55286072803FFD6E6D8ACA0D7CE7BFDDE393D05053B5AF32A855385674EE00DF819B7C7D9E01A3DB0941CBEA0A79E51B0416DC4BEA164B56377E4BD2A62127A1016134DD74ED9211EC4B646AAA0FB8FCE9BB3004C416D437A754BAE3241F1373305B3275C766D069796F2765E41A0E5CBA4A4145BBA3EEDF79A9D673C4B0CA5CC2BEAD3C6E388CB6D573A6DDAA0BCA0B771BDE50A5476D80BEB428BE01F199FA4E393A55D08EECA9129DA83061A476FA03267B71B9DAA9AA5FF4FB6060562A15E74EDAF043ECD4550485C09815D2DCED5A0EFF6E100B22BCCB7D0225B4CBBBDD645D6B6687BFA4A31663494233B64B2E3C3A0CFB8C7904CBD2579053077E714356F10E5F1AE59CEA6A386E32F91B1349F1E24A0A679EFC463E58A032EB4B92764461ABDFD002506DBDF4827325736BD29C14836A0C6A569D90A285CA02E6EAAB24BCCF2C5145A46721DDEB9AB8863AB0524CE5DF7A0759091B0B7CA00DFC26DB386879D20ADAFBBAFB6E57085A4CB8CD8E0BBAE1302A0858D5E450E2639F5318D77B840539C91A352D6C52C83E35BE72260D9822C6462A034DE4A33B9A0F68ED0C88D98CED9FCB6D7350493670FBF9185A9A49D3A3B8546A05C7796EE14086CC550AAFD0D9472E53664F92A0236EC6E2B77236CF9D64A666BA0D57A88F2F591090C477E6EFC86A55F3A4A333165EA08FF6B9AC55C1670D847E980",
"D760F93547B1E20528A28BABB5A20BC9867FFE4840059EA27D00697F72F9D5FC": "F90211A03DDF2B0C69F7B1ADFE68A274D8292BBA1E470BC275B55286072803FFD6E6D8ACA0D7CE7BFDDE393D05053B5AF32A855385674EE00DF819B7C7D9E01A3DB0941CBEA0A79E51B0416DC4BEA164B56377E4BD2A62127A1016134DD74ED9211EC4B646AAA0FB8FCE9BB3004C416D437A754BAE3241F1373305B3275C766D069796F2765E41A0E5CBA4A4145BBA3EEDF79A9D673C4B0CA5CC2BEAD3C6E388CB6D573A6DDAA0BCA0B771BDE50A5476D80BEB428BE01F199FA4E393A55D08EECA9129DA83061A476FA0FC940545EFA9CA931CFB64944B48A38B2689D4EE565848D46B6FCBF4B8EF2EC1A0EFF6E100B22BCCB7D0225B4CBBBDD645D6B6687BFA4A31663494233B64B2E3C3A0CFB8C7904CBD2579053077E714356F10E5F1AE59CEA6A386E32F91B1349F1E24A0A679EFC463E58A032EB4B92764461ABDFD002506DBDF4827325736BD29C14836A0C6A569D90A285CA02E6EAAB24BCCF2C5145A46721DDEB9AB8863AB0524CE5DF7A0759091B0B7CA00DFC26DB386879D20ADAFBBAFB6E57085A4CB8CD8E0BBAE1302A0858D5E450E2639F5318D77B840539C91A352D6C52C83E35BE72260D9822C6462A034DE4A33B9A0F68ED0C88D98CED9FCB6D7350493670FBF9185A9A49D3A3B8546A05C7796EE14086CC550AAFD0D9472E53664F92A0236EC6E2B77236CF9D64A666BA0D57A88F2F591090C477E6EFC86A55F3A4A333165EA08FF6B9AC55C1670D847E980",
"683FBD71346BDEE3A21FC16C316F59BF0B118424EF7F350CB6A2AAAD7B540576": "F86D9E3FCBF80EAF41A822939A58481153DEEC5EFA1E62B78B6F64E608C872FA08B84CF84A06861319718A5000A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"EE5DF3FE26C0CB16AD8EA555E4DAF6AA596F389FD13959DA8E49897D9604B84E": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A034FEEB7B973D6D6E5845C749D0A7007F16BA53ECC95205CCC68172AD0D64FA21A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0D23682648F2B166284F080C545481DAF401F6812890077CB9D4494A4A76917EDA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"5A8BD02EB5AD1A1AB5D54C6587DF5CA2234171195FEA8E8AA5DA09682D7B10B6": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0E76E785D61D858BA6BF30FE6E277297632C6D0496C053D4F7AB6A3B4BAADEA1BA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A08F6C74F168EEAEE17A5FD4F3C875986FD380F7C599D4D1AAF963B307756516C6A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"3EACCEAB9F98D5A9E189CC0202B77699BDCAD1B614D62043405AC2C00D9FFAF9": "F86D9E3F035746374A5777DE6C6AE69CE06C1D874A168B8105D9F1558B9426023BB84CF84A82066F84FFFA318CA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"949ED6019CB9D6D6AA21C1BC3C791833FEC96799BFFB05D3E5762A894ED81DCC": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0AE0C908942BCBB883D9A9FBB7F309F57EC5405CC4512BE54DACDD28E24F9B428808080808080808080808080",
"471214423A4A83D37B6587BAECFF4F5A58500B1DAAB4A9535A3D7FA120783A13": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0D23682648F2B166284F080C545481DAF401F6812890077CB9D4494A4A76917EDA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"8F6C74F168EEAEE17A5FD4F3C875986FD380F7C599D4D1AAF963B307756516C6": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0B95F1B47DD7FA0EDABEE08B6B86DD89BA17039C8542121D3DB3083986EAB4537A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"B79BFD1A4B489C3CE2EFBCCCE5ACCB3681FC059A8BB9C646EA170FDD7359B6AC": "F90211A01C518734C5F4A4A835723A16B9746527D9A0AE9CB5341D225DE7E0CBFCAD8AF5A0B7E9B24E042B7D39FEED9AD761B859A73F2DE4269CF7CF804359476E9FBA23CFA0E8405CF23F27AD383626DB6B56DB4AFDFBF9E24B90B9B7297356DE3DC082C4A6A0676BAB30C15647B42922472630692A644DC29FA101C96D2257D9808420D205A1A04F2E237B775B899B0017DB3E50484C3730A96AF2602670C817144B1B19115E36A0851A663D2A1E91C55A9A72A31574A9126B3CCE1468FABAF5D41D423704292BE4A0E75AD9D9200E251D8BC7446A4B6AE21C7C356F2843939DF226F287A20427D08EA01AE48438FA7258964852B55ADF4E70268C847C0F849A3F180BB98E3D4B43B5CDA06D2868DE61D5BCEDC988315769B086C24AC10D9A0E18414C3D1CF6730C7717F0A095A6FFA72BCAFF258CA52467B3F15142498C0E2A67AE35702F19EB0157328947A0AE01880E0F688085695326BD43AF2A6678F118AD5E0194453A6D857094414319A0DD55D04438C637006A928D811AB84F220780AFE38AC164925C5AB72EE8A49382A02B18FC2DE4FFDB1C8FB0225DF5F1623CE650BE7AF93497B4F6E30D2040037871A0B80641C21BF86B89094FC7DEB8633E9306F43D45EDB9FA2597BBD911B4EFAA24A077410D50F81DA681ACF3E766A23D769290EFBBE6E1C2F445070D315F886042AFA0942FC8B618E83951EC11C90F068F3BDE246C9017D125DA5ED7A7E15634264C1880",
"025BA6AB3E387681B5648BBEE04BBA37888FD523F978473EF758BDEA91EFBA3E11": "88CA4CF31728485CBE",
"2401C9757B66183E978A3623C0AB501DB222024C3EDF40A889A3AE2FF2F53F98": "F87420B871F86F82DB3B8504A817C80083015F9094B9B921C804AE38DC0195C62C0FD01F92147CF739880E307DAFEF430C00801BA0F39986890C3317F1D7CD1F676E35194AEB1465E866B2615DBCC31D39FA77B13CA03BF2142CD0BEC77BA6E13DC1A5CF1FD56287CD2FDA00C23D6450CFA5AF076E06",
"80FDD62213A6B31344705C713A99723874BE4217434ABEEE4E0FC6BF6CEFB8A9": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A004058BC8B0864DFD821ABE896317D4BE6248A50CC993B648EE71453A1430794FA055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"BC98F8500B7E5A62BAFB19B37670C934DE21A8BEC42B794F45DC04A3DEF23D28": "F90211A05C8CBF0EBBE76708941A69E20DA484182FFC39431C40DDDF910AD02EFE6BD505A0102D75E96D9FA17159B1666EBCDAC3F6504BDA58D2D0AA4BB2D751AD427B388EA0F95C483E0C4D8D0925933D1BAB2ECAC0FF1A32A642A65E88A30592D8992B79C4A0998F4ADFD3BD6E9A226CB50262E9CDF7F0B90E3C743AA69CE76E1C4E5680EA3EA0ED6E0D08188F1D0B526BEF679AAA4B99AF59F7F97F856C007798A3DBADD23A80A0EC8AFA87BC9D730B86136A9C21F60DBE27CD9C77A4BC4CE1A35196E2C6B2FB63A0C1151924D6344D38D611D2D778FC5C82C0B22588CD848B47BDCC63FB496421F6A0AF8EC4A81D83B50D1D856CAFBA9D142B87AFE8E9A0BBCD51F646438D5ECB46B7A0AFF446348BA7A646A869EE756DB63619777571368109812890B4E00EDEDF8488A0503FB3D91903A59F1E1C622B5C065921B36B4C946248657D44C2DAFF50484A3EA094B1D3EB1A810B52A5BE467F11DEB3C16EBE259E264501AFDDB4690922CB0861A0D5ED81666337019D267E550D03D0710C671BCDF6D5A4D1E1EE5F8F11F67F2830A057A0FBBB64E72F09E5840E67C444579F1E1D1F472466DB860984010A40A359E5A05B01E8D5218AF2C6138DC3F677C9AB632166F95737118D0C2CEA7C24CB07CD2FA078C037AD287133FAC939FF29AD28EBADE210B9462CE5A6FA0B75135B507769E6A02885C44925DF926954B5E8EF1D68AADAE93FE5F049D92C629F9A1C607D63D0E680",
"ECF4DAAFFFD0AC29D19B72CDCF23457164343E7279B6A424A93F749CBAAD1B6D": "F87180A096455EE1D857C707946176FA5A0637D94A029274CC114CAA338517ED6E5EE05E808080A0D873BC1B0CE2143DE69B2F95495ADB686222E8CC8CCC96217B8369ADCF1FD6D680A08976B9918B3E568108C345D4996A206A819C97B481492B88FE2361E385A0C6C7808080808080808080",
"05B5D9D894133A730AA651EF62D26B0FFA846233C74177A591A4A896ADFDA97D22": "A0B10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6",
"54AD8C9F8015BA667FFF0667FB7AD163BF049D5042E09C25D17BD00F284D2164": "F851A02B0D107D0D4EB7B1EE458BC8F5398C20B53BA2FC45F9801C2B08D2508FF636F280808080808080A0E07B7A1B1EDDCE798A5A0AE27AEE294D2EDC4C4906C01BB33D2490AAD39CE2E58080808080808080",
"D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EE": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0FFD6213BD9774325233227ADC5E764C6E991250AEA82045C714E1716B90EBA77A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"C420402BAC5509D2330C1C46A1A2C8C20864445A01F3E946DF13479CECF9D697": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA09FAA02CBE4010328832851794646A270CB8FB937730CD5A561DAA862B1797761A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"02C1EDCA53B15AF0DC8A58699FDC6C2DDF047B4FBC07550151793DFEFD83599C": "F90211A0E175FED764A6AFD6409E278E4FC9864B08D98978A575B81A67ACEDD4ADA1A1D9A0D810B833F97D7D44F3860CBB0029762AB47F9F961905ED3E87B779351C0CD59BA0B397BC0DF7FD0A22D76295A00F62045795F891C9A25FF3120E023A0546963EABA038AF824DF7311A71F951B1889338D4991969D734EA1FB7E4628F79450F788556A0A47A21D46960851E8BC7B22304F0EC7DF6CF312295F5915BE44A2EAC9BED4AD1A006F8B553FEF0DC26EB2A56EC40A7BF1B6DF23E96BA469A133B9BB463281C467DA01A50B434B0DE774B01EFECB226BBF004E08BED00039534BC98C7631E67C2F2A7A060D649B3AF65B9F6B99A863EE1E31DB01F60EFA42137D1B3F2ADB5021C99E2FBA054A4B4414B3043AA8B62C5CFA1949FF53C13A70CB2185D32F6888C2EB72709D3A0A076C6DD2D2DD88C39454D88566B4E58CD667549890418583A42EE5C040C6DC3A0E9193A2EFF179B7160A4AAEA88DE30794D7B5B766119598DA8AADD6150D31541A0EEC13537A1A289AECF6F14DEA9BBFE218C54A9FEDB081B7E8D7EE69144C04942A01AE8D1A4304048999266835863F26FC2F8BEEDE4BB158F74AE7F45BB2CCAFBB8A0240EF0DE6357DFE026FA665A83C556D2D5E5FFFD682279C304278EB17D786EDEA0F4409A20A12A8B454F297CE0DE52545BF2F56680CDD6D4FD76E203AB35263EE5A0B3DA738B5110644FBC11EF6F314FC25CF4CCCEF37A47BD9E5602F5429C1EE1BB80",
"B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B5": "E2A0345B10432771D4701953AEFEED6FD3EFE55A939C21790DC27F7A3BF31C2220BF01",
"AC96926616C6CCC426334A727AB6A78902792528DD6E8BBF6D191084F1247671": "F90211A02582D987B3B41BB04347D424DC3EC964CBB084221A0721ADAD3672256FA75B58A0D7E47B059A8A58798FF47B32FCFEE778433E53255A2C8DDC3DFB04055CE07756A0961902A0F542F4C190FDFEB9952FF1D0C44C0D859A57CD36B552151207DAA9B7A0DA3D98CD70B9F79DB5030BF86FFBE9C142D519A722607A19AA32A2D5FE7C852BA0EF136931E2B7717CADA2897A6D7D347C752D1E53736CE13D0A515407D97502CCA0F183C3380E62EEA2FCBC619658C5574145864CE95E08BD3AB3A4E763714AC57EA0881FF337F11AC96D577A8F5B6E9BD81C775DF5169CE61F54262F0D0360FAD16AA0D20AA1CCB5FD9C72E32020FBA7BADEFA7548866785A101C2D61315EE4639D1F4A05DF1F040FD94D60257D840170F8A6ADB40FEF44686E065DB3F5D77BE09389171A08ECA1697198663549420500F42F10CCC8CA26A2CE93F5BCC5DEFF3FBF2C996B7A09275A57A7AC8B03BAAC50A12FF322A0EC10FA5C7250C5B0FF04376DB4A618DEBA0540599E6165CEF638B6189F9FBD953C122A79F8588B7960FE8F76B71C3815A62A04CD6DB7505C4280200A039E0CBE9922D49F59013D7982C25A0A37E3DFC8BF020A07BE01F402710F10F897BF410647864D82CC70050E0CC1B06073E955E1F54EAAFA0B323C97DC50FAC8CAA4A4E9F3ADBEE3F6C73DAEC3E9187B529B8C1A87256BD50A0BC79C0B579394F48DE90C17D6A7A7C8DE66C3443B64C801386AC4D0D12F8533680",
"461E047CA7D188DD72D24B4F93B7D18CB024DCB2D365261F5ECF8792298D7904": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA087CA2F6088132EA990817037B27015EB09AD6DF95BF33CC637598CD9C1969A44A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"DE4D639D8628C4C55D0B11A61B6B48A1ECB5CDCB68584849E439481571A71891": "F901F1A0C980FC34F438E6B14622B920F91DC5FBC0FDAEAC80FD9C0CD041BEAAF5C7513CA05CDD4A7B43788D042B338AC50F0C75CA5A73EC1F06277C1C580AEF5A4FE8A018A0CCE08540402CFA7F120A8794ACE94FB231044616F088EFBB39082BE383FB15FEA0FF33D8629501901CFDC59EC655A1A90F62DF33042871E38A1002F32025CE02B6A05523AB45EC7CF529F4616019A8D6B3CA1BF0EE08025202B261CC5AF50AA7EF73A0E0561865A684F76D56200E69EE899EEED18FB04CC77753FAC5F125482A0050D1A0D16BCF7BFFB5C1DED720496239C30EBE71BE9BF861DAA0D6A31535E2EB1FB6E0A0E3A235239997B13000187C4F9D44C2B6551E06D1113E3988EDC0CCEE3789B805A0EEA380DB6D37C55C5946E675BECA27EC21C20301A0B1C16CAFEBEB4311FB91E3A01F315DBBBC90D7E973CBE32369161B142BA746622171747D70652796D4824501A0A1F8A793E2EFB8377BC0339D679C85D4CD11F0D758A17E6B788BD963D9FB0C8CA0C6315EAC5754B33A614C6757B1CCC2D8362902102E5CA9CDB705B5E90E222722A02409E24F8FC764BE852DE4A3608917327A327DBB9DA0CDD5A4F20FDC11066521A09E504C65027857046D11D5DB3C2A4A72F022121934B062CF29828721D1D2CE3BA077A53EE606B6ECF14CD351AA63BC61876C0131418A88C08166EA7D20B0122A0F8080",
"B35F0AE2130E52B52B8BFD6ED4A2BAC0392951698990BCD1C8903A739DA1E5FB": "F87180A0E3FCC729605EFBA27968346C8109CCDBBD3DC575A993E2F19694EB91C4EFB53880A0C5C8032A72869225512117D1DBA5EF05E46BDDCC7D652004D23567FEA87B6C0880808080A058E83573749FD7FA531EDE492EC9019E9891ABE34050EEE485202A39139032408080808080808080",
"FC940545EFA9CA931CFB64944B48A38B2689D4EE565848D46B6FCBF4B8EF2EC1": "F8749F20D22C718C78D005078A67495F59893D2948FE4F8796794437901123E3E90DB852F8508307314B89FD7BDB5AFC0C6C86E2A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"7F3F447AB93A86DDEB314BE7D0A5F7DCA3B97D9F636A510C7ECC4F96C4674BA7": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A0E12CF5D922C575B97AD805E52452EFC9607536F30FEE267C1CDCC08E3874E22F80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"053DD3CB380F85E75F3E04BB875430C8C74F6EB563907DB7F3827039CDE89AB3DA": "A0B7B9F2095DEC8E91FCF0A19722C0F18353FE5952E9BC6D988B36AC328C0C176C",
"9614AB3B2C856B6E66B329B8A1B3F46B88D05FAA5B55C1F49A6C04DE5A0BBD15": "F90211A0AC39F6EF6DC527FC8D6B4DF40862D2C67EB2D70E035335C0FD79177EB28F467CA0A408BE8388A27A105A1CF792599130E372956FC340BC6A06EE089D72D9E19DC6A09BE0495F4AF47D31323F8F0880A03F2370FD4037AC613B11ADBFA8ABBEFE2C2FA0ABF5358CF0A077F7ED7F804B4F2860AB1F9C7DEB8A5EE779B5BEF0C344DBFF72A0B34470EF0DFD69B4F2CFB59BBF382F01B1BDAAF3A8DE079E2FD0D36A1EC30DDDA03CB437964EECCE2E2E80B4273CBB9E1681533A31AE0D80A4C056655E190D4A8CA0951A7F8DA37BC5B8182FB4DFB24F7317CAFE4672D1BB014A3D7C51914F3B81DEA0CC7C9C3EBB0204BCEF6FAC1676A998C39B2F3449F085B145D6AA20063C32FDD4A0102C275CB2CA0EE4F6E4E2521A883093D10A2880979EB45DBCF8765A8E5B5977A0FD75655F0BF1E4B192BB4F0A3BD7BB8416FA9E3FAFB2AD88118C9467DE2261B9A0F596053BC9E5792B6D1C9EFA5EBD8CAB22DD7B22952E2FBFA5B130162428D0ACA04B513635972A62CBF8F38687E748FC66EFE4DCE272A5D7E3A7B0F1D7FE7CC901A0AA86A8805EE998AB4E15887C56E6EC3D804A87A90145BC7FEF36FE1CF0F96CE8A0C03326620DE4E2662EF8704A0AF45F2F5F4C69122D84D446F25633D57ACC4A35A002C1EDCA53B15AF0DC8A58699FDC6C2DDF047B4FBC07550151793DFEFD83599CA077E468E28E55F070F88DB2C7A33AEB8463AC1FF4F88573D24681364DF425F4CA80",
"28ECA3CA029F75DBF829DA83ED1EEFC04A960EF71EFAA65C31B7073B9E459347": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A08504B6E248E5B727201C9F46B152A05B3E9138334B2EA56E06528F4C74C48209A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"E7BB693176BC92B9E42480F695714FFB1BBB481887AD69BA887EDF844E0FCAB1": "F90211A05828290F0DBB7C42C18799A6D33F01DB0A07D1B265E834C42C2D40768D71F5D7A0286AA341FBEAF4E0A9BF2AF5B9A539A76D23691344F829CDA70406782D2B5CEDA0EA00E25FDA3937AAEEDF58745A6426F50650DAE487000337E7C314083FD33FC2A00522A660746712A948F68D4CA8EC6DBD8868DE28E6E26CF451E6FD942F0D10FFA0BD3F35DDCDB326755BF887E1D88B8C5AFB7D938DE3115B2A92F363700DD2A580A01A0505CE678FE798158CE24F794D5468838FC1352657CFF56E6BC22DE59EA86BA0802288776F249C5452B0E09EAF7DB453E2ED6298EF7EEE7659BE6E5EAE816947A0666DA52D7BB221F293E2EFEEA72E14D258E3F3626699231F852997931406F10EA09FC9F60E7956C18DA3D6F5AC0A6C003157F4E91CFE5359A8779104D9BBE57BE3A0CC95BC3EA79DD301203032B8F23E746F5E5457648FB43FC4EE751E5A0B3C4AFDA065FD7AD94E1D2C4101FC793E2544B6730C2B988B4398F984FA857F686A43093FA06830E336B550D85F2D289EDAB657A509D86B2BBEE1C70996879F613376AA86CCA09188A68FC72F47BF6BF295F3165831B79BAF6F213C66CA3F3C372531E3398340A07E92CC3CD578663C918D827A68E9395667A5B9CE92559AB9B218AA25F311C59BA0AFBDFE25896666244DEF374F2AD1C0B75B05C05EDB91A83BE427EE847257A4B9A0040AC9BF3211FC449DEA911C785C949DBB494990822303C51DCDC6DBB5F72E6E80",
"FFD6213BD9774325233227ADC5E764C6E991250AEA82045C714E1716B90EBA77": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0724A9A559E37880A8B782794C5526BFDD68A0EE0820522E31605C3601DEB05CDA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"B7D190E5FD4E7556D0D13365AA89C9DB0915061A2006D89C5CC40FD8253267FA": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A0E7D4FD6123D856EF53F048E83AD4A46F7A75ACCE57AE81407FDA42DA55EFA2CFA09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"4248E652C9B3B427E075599B83FE70B494279805ED74A474082B4B9ED3901163": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0D49FA6D1CA9348C02CE396310441651C8EFE4F5C49A7F5604BCF30228FEA0E04A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"924F98707EF79678B2879D54843FD09EBECCE7043C128CEBC9AD8860066AD8C0": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0E76E785D61D858BA6BF30FE6E277297632C6D0496C053D4F7AB6A3B4BAADEA1BA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A03272AE4B009F5EC1717FAEFA6A6D88ECF61511B7CE5DA7FE89A6E6F213BDA9FFA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"30037303A7BA8C1EA6796A99C133C2B016DA912C3BE111BD5A0C37C78E139C73": "F90211A0447DEE683C34DF0CE0DFCB4FD1677FEFD84481A226D5EB2665CBF04B43F7B9CAA0D90B471D135B905B78FA44A779B67539B33D467E22621CCEEDA74DD057D5494BA0D7E619A89827295EEB8D032816A2FD038825A8F16997EBFF4A888430CA339C0CA032E16F6792438603EB73AE6B4247EB8D9CFA35A040C91B38E381D83A634E1AAAA0C35808BF9DF9BE7AD7D4252F720E096867A5214E725A6E683522D5393A10611CA02F86C33967DB8B1EAA2D7DF9CACFF6A994090EC351CE871B579C5D4FB8E23702A09FEE673880FF393E7C878D141FF6B8C22AC4E68D82F9059314915D6AC0807B60A0EE61208AEEF66993F48E8A849950E50583E75D74F54E4F10A51F554E87A88929A0CBE36136C8C2FE36FC718FE0CADD13C59949F6AEEF9E7B169910055ED9AF3A9CA07E9D938823598536FAB6B6AC9D4F401DA7F74CC53248876A0BA0B8B471817806A0B155DED0CFA1FD9B212068F335CDE2A8CAADBAF4B3CDA7B51A87C6EE5C2E5FCBA0CFDFD9A694CCFE41583410A3B627435821880BCD7654C1898172C94AA10E3A23A01F5CCEC99BF55CDE11DE31899FF2A74AF8CB30B2D72C3DDD1DB0BEAFA115C680A07B9C5A04E7DA4183D69621D56E12FA11398948B4AAFA9612C453BCC38C4942EDA0542DA06941623B6BC92B3764025A82FCBA5681C29800A30B5238F2618C81A5ADA0E7BB693176BC92B9E42480F695714FFB1BBB481887AD69BA887EDF844E0FCAB180",
"2A3ED65D59678FE3772A2BDDE4178AECEDCA759B660EAD6F6ECEF866BBED9EE3": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0365A41DA8975D66EBAA4CEF4009CB8EE34A81B544A894F4D8069BA7A977FDD5BA03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"47B4B4E4E7C21B08B75E7804CC3F37A17599BE3BB2C2D2247FE2AA2E7AFD48ED": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0EDDA3EF79063563280F5411092E759D781642C860F76CA2A2D052A050146FEEFA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"05405787FA12A823E0F2B7631CC41B3BA8828B3321CA811111FA75CD3AA3BB5ACE": "02",
"710E385939C393B6976998A88808C8B0143F6AF418AAD455256DFECC7329D0A6": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0AC31C66850DE028634E599EDCFE5A50AEA738869AAA4451F13C8BD0F1D872B7DA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"60CF0FD46B7F08E3F3615BE8FF119282FE6ACC62246D9879D5745947FE822F07": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0E76E785D61D858BA6BF30FE6E277297632C6D0496C053D4F7AB6A3B4BAADEA1BA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0B5948F9B4313D9452BC6C6F2292198E87F663DE4C269530D026EC0259AF2D086A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"84EC0F2B8FF16B103266502E73DBF4B0D75EF0FD7A742BA6FA7DBD5781CF6DEA": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A01AAEF8107A5927BC70D10C2A74EEDA28FA17703F6466AD127E0FDF4EF0380AF8A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"1E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4D": "F90211A0AC39F6EF6DC527FC8D6B4DF40862D2C67EB2D70E035335C0FD79177EB28F467CA0A408BE8388A27A105A1CF792599130E372956FC340BC6A06EE089D72D9E19DC6A09BE0495F4AF47D31323F8F0880A03F2370FD4037AC613B11ADBFA8ABBEFE2C2FA0ABF5358CF0A077F7ED7F804B4F2860AB1F9C7DEB8A5EE779B5BEF0C344DBFF72A0B34470EF0DFD69B4F2CFB59BBF382F01B1BDAAF3A8DE079E2FD0D36A1EC30DDDA03CB437964EECCE2E2E80B4273CBB9E1681533A31AE0D80A4C056655E190D4A8CA0951A7F8DA37BC5B8182FB4DFB24F7317CAFE4672D1BB014A3D7C51914F3B81DEA0CC7C9C3EBB0204BCEF6FAC1676A998C39B2F3449F085B145D6AA20063C32FDD4A0102C275CB2CA0EE4F6E4E2521A883093D10A2880979EB45DBCF8765A8E5B5977A0FD75655F0BF1E4B192BB4F0A3BD7BB8416FA9E3FAFB2AD88118C9467DE2261B9A0F596053BC9E5792B6D1C9EFA5EBD8CAB22DD7B22952E2FBFA5B130162428D0ACA04B513635972A62CBF8F38687E748FC66EFE4DCE272A5D7E3A7B0F1D7FE7CC901A0AA86A8805EE998AB4E15887C56E6EC3D804A87A90145BC7FEF36FE1CF0F96CE8A0C03326620DE4E2662EF8704A0AF45F2F5F4C69122D84D446F25633D57ACC4A35A007EFD47F148C8D3E494BF1583580709FD4EF087455CE5C6B21A7BC94C4CED92EA077E468E28E55F070F88DB2C7A33AEB8463AC1FF4F88573D24681364DF425F4CA80",
"FFF5E17AAE4A31D44F8F4580984EA7D79AB5D8862A739EC8C485F50483BFCE17": "F90211A0BC98F8500B7E5A62BAFB19B37670C934DE21A8BEC42B794F45DC04A3DEF23D28A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"9C9E5024A622081B5C083B10E468144E6BED485793F9808BDC97A11166A96E22": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C278861B9B80A4A70D010A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"4771E8E4B5EC0F34BB76E916EFA53D31C8D0AEF28473CB711B013A117E3B4FCA": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A028ECA3CA029F75DBF829DA83ED1EEFC04A960EF71EFAA65C31B7073B9E45934780A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"6A947DD8CE3B6814384605D199DC0BF3FBF13F607FA6BEC2EA48AB4DED9B1264": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A06DD092701AB5792278B7717E22E6C016B846637127ED291C6C622D1C605F0900A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"903E56C58B7AD72C1EBB51BC24E726BD64348BFFAF8AD75CD69446A201AA85E4": "F8709E325D8BCB57BD0A8FA674E4FED3A158CD5C7A2B20CF48D634F2F095378035B84FF84D0189016C50BD6FA7CB0538A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"05845B10432771D4701953AEFEED6FD3EFE55A939C21790DC27F7A3BF31C2220BF": "A0B7B9F2095DEC8E91FCF0A19722C0F18353FE5952E9BC6D988B36AC328C0C176D",
"B95F1B47DD7FA0EDABEE08B6B86DD89BA17039C8542121D3DB3083986EAB4537": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0A4C75668604C525807E44F7E6A3349546952E47BEC969259F8533CCD0D22A6BEA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"FAEBA75BD2C4E71C642DBBA1FDFD73AD15B16567AAA17524BD7ECBFA4B47B29B": "E2A020B9F2095DEC8E91FCF0A19722C0F18353FE5952E9BC6D988B36AC328C0C176C01",
"A1371AF99635BE688A1C9FA0B114C0786F64726EADEE9973FBC9760CE83336E2": "F901F1A0C980FC34F438E6B14622B920F91DC5FBC0FDAEAC80FD9C0CD041BEAAF5C7513CA05CDD4A7B43788D042B338AC50F0C75CA5A73EC1F06277C1C580AEF5A4FE8A018A0CCE08540402CFA7F120A8794ACE94FB231044616F088EFBB39082BE383FB15FEA0FF33D8629501901CFDC59EC655A1A90F62DF33042871E38A1002F32025CE02B6A05523AB45EC7CF529F4616019A8D6B3CA1BF0EE08025202B261CC5AF50AA7EF73A0B35F0AE2130E52B52B8BFD6ED4A2BAC0392951698990BCD1C8903A739DA1E5FBA0D16BCF7BFFB5C1DED720496239C30EBE71BE9BF861DAA0D6A31535E2EB1FB6E0A0E3A235239997B13000187C4F9D44C2B6551E06D1113E3988EDC0CCEE3789B805A0EEA380DB6D37C55C5946E675BECA27EC21C20301A0B1C16CAFEBEB4311FB91E3A01F315DBBBC90D7E973CBE32369161B142BA746622171747D70652796D4824501A0A1F8A793E2EFB8377BC0339D679C85D4CD11F0D758A17E6B788BD963D9FB0C8CA0C6315EAC5754B33A614C6757B1CCC2D8362902102E5CA9CDB705B5E90E222722A02409E24F8FC764BE852DE4A3608917327A327DBB9DA0CDD5A4F20FDC11066521A09E504C65027857046D11D5DB3C2A4A72F022121934B062CF29828721D1D2CE3BA077A53EE606B6ECF14CD351AA63BC61876C0131418A88C08166EA7D20B0122A0F8080",
"04058BC8B0864DFD821ABE896317D4BE6248A50CC993B648EE71453A1430794F": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A03ABBF739D5275267E97A88937A745488F40B23E742A0D26E1988706D5493020B80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"99B0FEB3BAF2BCEA12FC682AF003DF8A09B270BF611833EB4D2F74E6D35E1F0E": "F8729E31E5EC60B778F0AB0882E02A40F1366589A279960ECD4D7E798D67768FE6B851F84F82DB3B8921D7EA04220535AF13A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"1ACE5C09CC29768824E1AEA87029C20F2F7EEAF5BA8BFB8BA75BBFF45F8E9361": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A0E83BB472DBFF4D1FA0FD232868ED85E5863B988C9E3343ABC42E2726D39C509280A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"A5DFC083F48F7A153B547B6E9FB7B757192459F1B2DAB370EA4A23232A679AD2": "F891A0443635227CC3EE7F472DB1149C3F8103DF4B74AA6229A9099C09C79CB38C24F48080808080A0762320217942EF12BF2F87EC7B6E1496F4DB214C9DA110AF53BE11E8D9054A93808080A0E2B21DE0019875FF182A9AD8A7BE6789F95E4290F8E367E2CCB5E7C066FFCD2E80A0B5C3A694AB0ECA2AC148CF61FED715ADCDDB42290A429C02E7B3F00E5743615780808080",
"DAAB4B14F19D56FE30E6D88EEE35AD083620B52C03352296652593F4A8B4A964": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A0C553F7BE7B7728A68C6594D27A8FED634F0E3D1B06906F3BF586692DD7E12A02A09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"349ECC6ACFC29E6E286414FAB31A20DD8B1C5FDB5278A278F23D6AF5F546EF0A": "F90211A06113BF7805481DDCC64AA7081817480B9AD6392342F73C2BDF6AF4F899C1CC6AA0DE4D639D8628C4C55D0B11A61B6B48A1ECB5CDCB68584849E439481571A71891A0EC3D82D17A4427CD720221231C0E60132191CBDC8F82B0270C9DF5C38E25BB04A02F6536094625913C53C1C3841A4831690ED61187F81D174066C36DD36BDEB107A0260B6339D8E26DF17E49025B869467F4E5159BA8DE1994852DE200B72A4D9D22A0BB2716140A4CF488704E804A79728CDD1FB6295177532D011572295F25AEFA24A05327608B885B0701CED2716AA241021139744D4B967BE753FF485113F43C3C7EA076D8D0F305244D75BBBFD4DB5D28D5A945785CF067D6B8375D116939E5A045DFA0C68828EFB2DBB67F55989089A29B8B2DCFDC51F7B06B7D9237F553CB1952B9C8A01A06A0230A16259D74F47EE96EF7911CC67D73285FD3A97851E0923314E7391EA03DAE3B31903F9F43D7565D4A93FE6E0C8FE644C5FD2C7F480EE2B65E62F62A8CA0FF90C9DE8B58AAC6DD21ADBF8AB87115798553FEE309A921E52DD04C4142210DA09AA4370D3B0C424002C5B4C08AF9A555CA8AD75D426CB644090C144B7F8190ECA00B736A84C469A1A97DC5E6284991AEA9C6EE56C7335131C711CB5CF5FF15FA1AA05F7D3AEDA3AEBAC1A4424A8D3E57254E9395B6AE7FDC0C5AA2D8F6A63B89CE8CA02FF0C2D5DE45FCEA82CBA44305311826B615799167CA6E50B3CDEB4DD1530B4F80",
"BA1FE805A7B3C61BFBCDCC6E9394ADB3B5691DDF2E24EF1DB98DE3CD5498854A": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80880DE0B6B3A7640000A073CDAF825410DB33B84B2C0F6F4002F4BBE9B53C4C9AD99056F1E62CB38780E9A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"7583C8065FEA80DAEC92139DB27632A7298DE51D8F1132499B85CF95B8BAC577": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0AF428917EC39C5FDFC89CEC6252E002930B9F211476B1E5130CA78ABC1A000AEA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A04248E652C9B3B427E075599B83FE70B494279805ED74A474082B4B9ED3901163A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"391036F52396CDB81D96E9F742A5B6D645A0BDA820E7B49CD0B304E7747DC144": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A0DB8F2C72E9634B7BF53E518EA967C2AFAAC07190AF0E07DDDC86A09FF0FBB93780A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"34368F17439D8FD8654A505D3CCC337FD390D09AD52CC0D45706DF77289B0A8F": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A07F3F447AB93A86DDEB314BE7D0A5F7DCA3B97D9F636A510C7ECC4F96C4674BA7A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"721B7CC39D4DDC2FF4729E651507BA3D32113BE69C8ABCF79381407D69934138": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0E76E785D61D858BA6BF30FE6E277297632C6D0496C053D4F7AB6A3B4BAADEA1BA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"E16C7F78F40CA4378CAD4C020F4B34D5CCD6C5DC90E2DE3E2366F37DC521534E": "F8719E3F035746374A5777DE6C6AE69CE06C1D874A168B8105D9F1558B9426023BB850F84E82066F880E303377A02DD98CA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"BD3805A9EC987D8DB76358212D93A13C141768CC3A83A52B0BC61B6DEB9D3839": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0530683DB2745C6C949AB8BBF1A0CA7E69C5F9367186E70F3E15944C02B13A262A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"E0561865A684F76D56200E69EE899EEED18FB04CC77753FAC5F125482A0050D1": "F87180A03A71A4282952F86E0042177B6AA13571C1430D8CD350D1F532927A6B89E0B3DF80A0C5C8032A72869225512117D1DBA5EF05E46BDDCC7D652004D23567FEA87B6C0880808080A058E83573749FD7FA531EDE492EC9019E9891ABE34050EEE485202A39139032408080808080808080",
"D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A030F2E97F60AC34F7E63747F43CAAAF0CB755A229C6572AD4897EDD30CE48CFB4A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0C420402BAC5509D2330C1C46A1A2C8C20864445A01F3E946DF13479CECF9D697A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"A048C579883DF6B68672B09D73032F76A27F38A8DD2C802F94A02ABED3AB5FAC": "F8729E31E5EC60B778F0AB0882E02A40F1366589A279960ECD4D7E798D67768FE6B851F84F82DB3C8921C9B8087537246313A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"5A2FDA87009DABD86BF294D7C57385AD2CB5987871FFB5C255558D92EAFE08A2": "F87180A0E2212ED845091914C81BF6FCB1B4FD4A5BC2C900A1C4D9095D02B7754F0B4E7080A0C5C8032A72869225512117D1DBA5EF05E46BDDCC7D652004D23567FEA87B6C0880808080A058E83573749FD7FA531EDE492EC9019E9891ABE34050EEE485202A39139032408080808080808080",
"032194AA7ABB4F30E661488CF97A60B4E22D51124969522423547E6DBBC659B05E": "C58314E30204",
"02E5ADA570CC10B9988C24BB9C0D321BDFDBCC4CB41BF529D0D91C830227FC0C": "F851A00AF05D02787BC99A0373FE109630555B6544B5EFEE1CA935482B28CA1661EEF480808080808080A0884345191165C6320470BD59DB6890CF4CF82871995429C52D4195C76B4896D48080808080808080",
"17B9BDEDB77B2EA6C0429B03528A85D6C5B41AF46C748013DEC140804BF54E50": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A081F74963431B1D7A0876105FA606310B2F3F19C1D7D2A8BD6EDBEC33C7D35C74A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A04BCB30770B28E4F09F2339CD966DBA5F3D8BDCE56ABA020B8BDCB110A7974BEBA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A09614AB3B2C856B6E66B329B8A1B3F46B88D05FAA5B55C1F49A6C04DE5A0BBD15A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"F6E82B16D51B27341D33F5977DD1F6F46010E1AE80C6F980AA42747067BBCD63": "F90211A05698C0D723946D86F0BDC92B78AFEBB7BA204A3D1692C8A14B6F5E3425877530A0507BC09387DB71FABB8864EFC79BB2C4BC90EA5B95AA8D55378D94B369CFF6E6A0DF76ACE2320C4A2F80A879A60DA8732BCE9390D9ECB0933C386B514B24067791A099CE6D7D644BE908DF1CDFF15499A334869E26807A8481F232D9A030822A243CA033FE4C4652EBA49A9205ED37F8091C7E2934D3A008FFA493D59417B83629C2D8A06C05601E71D37292FAD0680B68D2A6CEF96C8205A0C2E4F6C6D8142EFCB4A886A04517A80B25D91B074FE7F02B4EBF7EF0CF9027A907995A7E754B7CE75EEDEB6FA0C7CBEC705CEE8D8C989A971B235B0ECD8F09BEC81CEBD18E468AD2E33385D0C1A0F7794E6F31DBCF88C76862D3AEAF6AE9CBE7A9CD02852AB8B4C4B6B08284AB21A0256C462B40E25932889944D6AB32A4E139535C1F83C5576928135302FBE782DAA0CE2F82921B20E2B5CC0E9D7C32D266E84D6E6FD7124EC4DF5AEB1A5CD999B700A06D3D46203F95680510251B3904909CEA1C99D37F81671D6074EC1BB9512F7F22A029167804B6F5C45C88104AA5008521E472099B62F0D6FBE8000066D41BCE68ADA0469AD4E925B2B2E173B40FD77787CAADCE158942AF32BEAA4BBC75741297EFB5A0914803A3A239FF7760D8347503578196A4589C0AE58ED59DE276BB49057E33DEA0A06D0AF0851DCF991559AC7A97B090A5951D2DFB0A91AC0E65B3EF04A94DF43E80",
"7AB1A56E16E10581402C37BB9ECAE4BE5F34C9F1969EBFEFACA8BB1466C5F5E5": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907D893ECFC09984A685E497A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"67D055C9DFD464141FE608A8050C6B851490FDA696B77439B01C383C544601B0": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A080B1B3AA2CA78C4635A4133740F50BDFF5FF2EE8148F3E1659EBC7324B98E06CA0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"5EB2735AB22615373B17CBC57B2806C58F60ED75D389C875C637142093CEA4B6": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A0445C7004ED0AF57CE4AFF8EA0B3EBFB3EF906DF2453B3B3073D77E8BDF103261A09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"03DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612": "F90211A05C8CBF0EBBE76708941A69E20DA484182FFC39431C40DDDF910AD02EFE6BD505A0102D75E96D9FA17159B1666EBCDAC3F6504BDA58D2D0AA4BB2D751AD427B388EA0F95C483E0C4D8D0925933D1BAB2ECAC0FF1A32A642A65E88A30592D8992B79C4A0998F4ADFD3BD6E9A226CB50262E9CDF7F0B90E3C743AA69CE76E1C4E5680EA3EA0ED6E0D08188F1D0B526BEF679AAA4B99AF59F7F97F856C007798A3DBADD23A80A0EC8AFA87BC9D730B86136A9C21F60DBE27CD9C77A4BC4CE1A35196E2C6B2FB63A0C1151924D6344D38D611D2D778FC5C82C0B22588CD848B47BDCC63FB496421F6A0AF8EC4A81D83B50D1D856CAFBA9D142B87AFE8E9A0BBCD51F646438D5ECB46B7A0AFF446348BA7A646A869EE756DB63619777571368109812890B4E00EDEDF8488A0503FB3D91903A59F1E1C622B5C065921B36B4C946248657D44C2DAFF50484A3EA094B1D3EB1A810B52A5BE467F11DEB3C16EBE259E264501AFDDB4690922CB0861A0D5ED81666337019D267E550D03D0710C671BCDF6D5A4D1E1EE5F8F11F67F2830A0B79BFD1A4B489C3CE2EFBCCCE5ACCB3681FC059A8BB9C646EA170FDD7359B6ACA05B01E8D5218AF2C6138DC3F677C9AB632166F95737118D0C2CEA7C24CB07CD2FA078C037AD287133FAC939FF29AD28EBADE210B9462CE5A6FA0B75135B507769E6A02885C44925DF926954B5E8EF1D68AADAE93FE5F049D92C629F9A1C607D63D0E680",
"3FF390E21604F2D09F4A79AABF514D05870292D2E08EDB667EF78D1DDDDD5872": "F90211A05C8CBF0EBBE76708941A69E20DA484182FFC39431C40DDDF910AD02EFE6BD505A0102D75E96D9FA17159B1666EBCDAC3F6504BDA58D2D0AA4BB2D751AD427B388EA0F95C483E0C4D8D0925933D1BAB2ECAC0FF1A32A642A65E88A30592D8992B79C4A0998F4ADFD3BD6E9A226CB50262E9CDF7F0B90E3C743AA69CE76E1C4E5680EA3EA0ED6E0D08188F1D0B526BEF679AAA4B99AF59F7F97F856C007798A3DBADD23A80A0EC8AFA87BC9D730B86136A9C21F60DBE27CD9C77A4BC4CE1A35196E2C6B2FB63A0C1151924D6344D38D611D2D778FC5C82C0B22588CD848B47BDCC63FB496421F6A0AF8EC4A81D83B50D1D856CAFBA9D142B87AFE8E9A0BBCD51F646438D5ECB46B7A0AFF446348BA7A646A869EE756DB63619777571368109812890B4E00EDEDF8488A0503FB3D91903A59F1E1C622B5C065921B36B4C946248657D44C2DAFF50484A3EA094B1D3EB1A810B52A5BE467F11DEB3C16EBE259E264501AFDDB4690922CB0861A0D5ED81666337019D267E550D03D0710C671BCDF6D5A4D1E1EE5F8F11F67F2830A02460F4719B9D265C1800FDDFA3AFF0278BED95051BE5E9C1EDE0B631EC216318A05B01E8D5218AF2C6138DC3F677C9AB632166F95737118D0C2CEA7C24CB07CD2FA078C037AD287133FAC939FF29AD28EBADE210B9462CE5A6FA0B75135B507769E6A02885C44925DF926954B5E8EF1D68AADAE93FE5F049D92C629F9A1C607D63D0E680",
"E39013D104D037E022FCEC368FDA4D0823037048DAF84E21863573DDD9C27B10": "F90211A0BC98F8500B7E5A62BAFB19B37670C934DE21A8BEC42B794F45DC04A3DEF23D28A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"6B27049047266182F6633C669CBADDA10994AC557E05FB8E84B694399D7395B2": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA07A00BEC05D6383ACFB97075E1E294C762DC4DD6926B4B6A7C2274B5F96ED3842A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"C4105C218F20E496863D0D174AA3A1E4C70A5EB9CB83B43D2DB481F459BB49D0": "F891A0443635227CC3EE7F472DB1149C3F8103DF4B74AA6229A9099C09C79CB38C24F48080808080A0762320217942EF12BF2F87EC7B6E1496F4DB214C9DA110AF53BE11E8D9054A93808080A00CE16610D1D4E78025875400F71F4A576595C87C5604CFEADC060773BCB44D0F80A0B5C3A694AB0ECA2AC148CF61FED715ADCDDB42290A429C02E7B3F00E5743615780808080",
"699C42FD9DDE190C0A485B61A4EE112026D098C30452AA73B719DDC1E324DB91": "F851A0AA4D739A353A00387C73BE98C6D52B5F18641B5E7599A85C4FE1376B0A0464DB80808080808080A0E07B7A1B1EDDCE798A5A0AE27AEE294D2EDC4C4906C01BB33D2490AAD39CE2E58080808080808080",
"C435516BA3BC7C5D3C183D448F3BC27D4BAE8F747DF45AA21BFAD2AD501A80C4": "F90211A01C518734C5F4A4A835723A16B9746527D9A0AE9CB5341D225DE7E0CBFCAD8AF5A0B7E9B24E042B7D39FEED9AD761B859A73F2DE4269CF7CF804359476E9FBA23CFA0E8405CF23F27AD383626DB6B56DB4AFDFBF9E24B90B9B7297356DE3DC082C4A6A0676BAB30C15647B42922472630692A644DC29FA101C96D2257D9808420D205A1A04F2E237B775B899B0017DB3E50484C3730A96AF2602670C817144B1B19115E36A0851A663D2A1E91C55A9A72A31574A9126B3CCE1468FABAF5D41D423704292BE4A0E75AD9D9200E251D8BC7446A4B6AE21C7C356F2843939DF226F287A20427D08EA01AE48438FA7258964852B55ADF4E70268C847C0F849A3F180BB98E3D4B43B5CDA06D2868DE61D5BCEDC988315769B086C24AC10D9A0E18414C3D1CF6730C7717F0A095A6FFA72BCAFF258CA52467B3F15142498C0E2A67AE35702F19EB0157328947A0AE01880E0F688085695326BD43AF2A6678F118AD5E0194453A6D857094414319A0DD55D04438C637006A928D811AB84F220780AFE38AC164925C5AB72EE8A49382A08A0B91B4244C79AD463CD466013C483F3613289BE87A660D96103B3FC46A7757A0B80641C21BF86B89094FC7DEB8633E9306F43D45EDB9FA2597BBD911B4EFAA24A077410D50F81DA681ACF3E766A23D769290EFBBE6E1C2F445070D315F886042AFA0942FC8B618E83951EC11C90F068F3BDE246C9017D125DA5ED7A7E15634264C1880",
"3F0EAB5DB7BBECDFBC01C17B85B404F3767744BF961574375359E8995D8E4ED8": "F8749F20D22C718C78D005078A67495F59893D2948FE4F8796794437901123E3E90DB852F8508307314C89FD6DA4C26E43A05EE2A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"0CE16610D1D4E78025875400F71F4A576595C87C5604CFEADC060773BCB44D0F": "F8729E31E5EC60B778F0AB0882E02A40F1366589A279960ECD4D7E798D67768FE6B851F84F82DB3C8921D7EA04220535AF13A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"961E90FAC75E7C667B3EF806F516B3F561A3C43CF55584C3251A90966615D9A5": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A00718487061C0E74E1C8FB7CCB87EEFDFB429D879E6A8CA0B59A443977F87431580A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"5E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7": "F90211A0AC39F6EF6DC527FC8D6B4DF40862D2C67EB2D70E035335C0FD79177EB28F467CA0A408BE8388A27A105A1CF792599130E372956FC340BC6A06EE089D72D9E19DC6A09BE0495F4AF47D31323F8F0880A03F2370FD4037AC613B11ADBFA8ABBEFE2C2FA0ABF5358CF0A077F7ED7F804B4F2860AB1F9C7DEB8A5EE779B5BEF0C344DBFF72A0B34470EF0DFD69B4F2CFB59BBF382F01B1BDAAF3A8DE079E2FD0D36A1EC30DDDA03CB437964EECCE2E2E80B4273CBB9E1681533A31AE0D80A4C056655E190D4A8CA0951A7F8DA37BC5B8182FB4DFB24F7317CAFE4672D1BB014A3D7C51914F3B81DEA0CC7C9C3EBB0204BCEF6FAC1676A998C39B2F3449F085B145D6AA20063C32FDD4A0102C275CB2CA0EE4F6E4E2521A883093D10A2880979EB45DBCF8765A8E5B5977A0FD75655F0BF1E4B192BB4F0A3BD7BB8416FA9E3FAFB2AD88118C9467DE2261B9A0F596053BC9E5792B6D1C9EFA5EBD8CAB22DD7B22952E2FBFA5B130162428D0ACA04B513635972A62CBF8F38687E748FC66EFE4DCE272A5D7E3A7B0F1D7FE7CC901A0AA86A8805EE998AB4E15887C56E6EC3D804A87A90145BC7FEF36FE1CF0F96CE8A01CDCC338FC9CB9938B4BE9F3DCCF2C52BD24E66BC9A2078B03B46DC2456C5401A007EFD47F148C8D3E494BF1583580709FD4EF087455CE5C6B21A7BC94C4CED92EA077E468E28E55F070F88DB2C7A33AEB8463AC1FF4F88573D24681364DF425F4CA80",
"E2B21DE0019875FF182A9AD8A7BE6789F95E4290F8E367E2CCB5E7C066FFCD2E": "F8729E31E5EC60B778F0AB0882E02A40F1366589A279960ECD4D7E798D67768FE6B851F84F82DB3C8921C9B3215AED5A2313A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"FA4B6B8737B94657B485B1DA1935FA0C448408ED6E4F937714F302B5451B1BBE": "F8518080808080808080A0B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B58080A0793AF77F7F02394C883BDF943F61E6917C4E0994AF0641CBDC0CA4A10A864C6F8080808080",
"AA2BAE2A5A5479E195781EE24FE1CE50E6E8DE25C0839AB5B0A17FB82ABC2CBF": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"08B34FB80658FAF238BD43B3AE54886ED49E20586A8DBFD4CD90C64F50FB4390": "F90211A02582D987B3B41BB04347D424DC3EC964CBB084221A0721ADAD3672256FA75B58A0D7E47B059A8A58798FF47B32FCFEE778433E53255A2C8DDC3DFB04055CE07756A0961902A0F542F4C190FDFEB9952FF1D0C44C0D859A57CD36B552151207DAA9B7A0DA3D98CD70B9F79DB5030BF86FFBE9C142D519A722607A19AA32A2D5FE7C852BA0EF136931E2B7717CADA2897A6D7D347C752D1E53736CE13D0A515407D97502CCA0885F24EEBA1197CBC46FD80ADB4E3DC8056EA8C615760EC23BD491CD8258B060A0881FF337F11AC96D577A8F5B6E9BD81C775DF5169CE61F54262F0D0360FAD16AA0D20AA1CCB5FD9C72E32020FBA7BADEFA7548866785A101C2D61315EE4639D1F4A05DF1F040FD94D60257D840170F8A6ADB40FEF44686E065DB3F5D77BE09389171A08ECA1697198663549420500F42F10CCC8CA26A2CE93F5BCC5DEFF3FBF2C996B7A09275A57A7AC8B03BAAC50A12FF322A0EC10FA5C7250C5B0FF04376DB4A618DEBA0540599E6165CEF638B6189F9FBD953C122A79F8588B7960FE8F76B71C3815A62A04CD6DB7505C4280200A039E0CBE9922D49F59013D7982C25A0A37E3DFC8BF020A07BE01F402710F10F897BF410647864D82CC70050E0CC1B06073E955E1F54EAAFA0B323C97DC50FAC8CAA4A4E9F3ADBEE3F6C73DAEC3E9187B529B8C1A87256BD50A0BC79C0B579394F48DE90C17D6A7A7C8DE66C3443B64C801386AC4D0D12F8533680",
"E76E785D61D858BA6BF30FE6E277297632C6D0496C053D4F7AB6A3B4BAADEA1B": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA067D055C9DFD464141FE608A8050C6B851490FDA696B77439B01C383C544601B0A0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"B6F91BAB210CF2E2FA552EA5AC85F58F08F90A8F173FF3E25EF4E273E8DAE405": "F90211A02582D987B3B41BB04347D424DC3EC964CBB084221A0721ADAD3672256FA75B58A0D7E47B059A8A58798FF47B32FCFEE778433E53255A2C8DDC3DFB04055CE07756A0961902A0F542F4C190FDFEB9952FF1D0C44C0D859A57CD36B552151207DAA9B7A0DA3D98CD70B9F79DB5030BF86FFBE9C142D519A722607A19AA32A2D5FE7C852BA0EF136931E2B7717CADA2897A6D7D347C752D1E53736CE13D0A515407D97502CCA037AA2E2B43D3D5D2C8A34E82C8CB2D88277EA0CA532B8FBED01EC0E764ED7915A0881FF337F11AC96D577A8F5B6E9BD81C775DF5169CE61F54262F0D0360FAD16AA0D20AA1CCB5FD9C72E32020FBA7BADEFA7548866785A101C2D61315EE4639D1F4A05DF1F040FD94D60257D840170F8A6ADB40FEF44686E065DB3F5D77BE09389171A08ECA1697198663549420500F42F10CCC8CA26A2CE93F5BCC5DEFF3FBF2C996B7A09275A57A7AC8B03BAAC50A12FF322A0EC10FA5C7250C5B0FF04376DB4A618DEBA0540599E6165CEF638B6189F9FBD953C122A79F8588B7960FE8F76B71C3815A62A04CD6DB7505C4280200A039E0CBE9922D49F59013D7982C25A0A37E3DFC8BF020A07BE01F402710F10F897BF410647864D82CC70050E0CC1B06073E955E1F54EAAFA0B323C97DC50FAC8CAA4A4E9F3ADBEE3F6C73DAEC3E9187B529B8C1A87256BD50A0BC79C0B579394F48DE90C17D6A7A7C8DE66C3443B64C801386AC4D0D12F8533680",
"A47D0814DD8024437439B79A216ED115750C34B4E5D9F79C4E07CB9A66D72E47": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A0B58E9EC2A436919B5D65A8C9EE9604D05E7511DEE26936926C78BD486572F98880A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"821A7F42768A37120CBD33571070D6215CD69C426B8DE17F73C25E6813A9B8C4": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA018D839CF9FD49D89103791AE713013EFEB799F692E28DA3DF9A2F97D81174A3EA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"D026EE73E608C74164E50DF912FCAC602D21A3D280480DA3F72913D4548B1E98": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0821A7F42768A37120CBD33571070D6215CD69C426B8DE17F73C25E6813A9B8C4A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0D23682648F2B166284F080C545481DAF401F6812890077CB9D4494A4A76917EDA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"90E166A1953F7EFDDC7F76B2B43389F338ACE51E173649048A88ABECAB5CB319": "F8739E33C03CE0B55C830C915BE63E218BC20AD607E774FE830315146A47A6BC75B852F8508229538A490A34B2156EE6B05560A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"E45F1E32C90FF17F4596C1E1292CBCF2E4D71651589CB843BAFC37DD54C82387": "F87180808080A0FFB2618915E031F4992C3E3601C23F3049A3D8FBD6551C0D8AD2B71928B1F5DAA0CBD9979A9E9D3F270AF408279DA2FEB6F3A89C0910E2D84E3D5C947DFB90190C808080808080808080A03C833F4CAEF6B4F5E6D3137A6F10E0A6B2A23EFC437D88967D4245D1CBCEB9E480",
"73BCBC1096E20BB862D5249FC4A96E95490B7BC324F2D0707F5331F722B4A182": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A040E1D2BF3A52F50BCE7D94949C0D5F6D500D7BA495937E5B0CD81528029900C2A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"7836C18DB3AD9525E08107BDB8B2124A522EB876DD559CBFB8BAFC155FC89B9C": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0BD3805A9EC987D8DB76358212D93A13C141768CC3A83A52B0BC61B6DEB9D3839A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"B5589FBB8360E54ACE413270167427D685997701AD8E34DB31EE3AF50042D137": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A01361F6910E36B32075949BB4E8F3C240349FFE39044EBB6593A8930403ECD9D8808080808080808080808080",
"B4583D0A28BE4286E43ADDBF09135FDFA953F9E1778BC617F73F030C504213F4": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A0EA645F781888829001B1EEB38C789CDCB693FC5736DE3AE5A58467FEA3D13B2080A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"FDDD0EB5BDD4348CA64589B86C46709EA6219173811655ED3B7CC39E7257B505": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893EC19BDFAB6EA6D1EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"D3C41ABAEA04AC98FB5027A2E3E1E74CEA4831E1C10B1B5E37142AEA05A7F5D3": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0C8CCDD27BB5340E94A4348A0F4D4AB7D780CE64D9CA948FAEF6438780AFC6696A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"9803620F2800A2DF7F0A56601343B941F03B40A67E7E223EEED11C5C2EF057B1": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0A7EB1CF491A96A9C7C54ACDEE82BE1F14EA3DFF7EB24DED1975F41E6DF0E48C7A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"DB8F2C72E9634B7BF53E518EA967C2AFAAC07190AF0E07DDDC86A09FF0FBB937": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C278853D90156A30CD010A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"96455EE1D857C707946176FA5A0637D94A029274CC114CAA338517ED6E5EE05E": "E2A0200E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF601",
"C179A48D069C8A92A5505330A47E1937798F4DD9B7CAAC37CF246491BB9A1550": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0ECC3F016BF2FB0494AE8BB81501846CAA8C2D2CBBB5A7E154B7EB75688834CD7A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"0522A660746712A948F68D4CA8EC6DBD8868DE28E6E26CF451E6FD942F0D10FF": "F87180808080A00CCE39AA40E5A9C125C4F2270AEFE1426C62D6AF492806CD00850B1B6B83527AA0CBD9979A9E9D3F270AF408279DA2FEB6F3A89C0910E2D84E3D5C947DFB90190C808080808080808080A03C833F4CAEF6B4F5E6D3137A6F10E0A6B2A23EFC437D88967D4245D1CBCEB9E480",
"DD882E67A07A0C862D9ABE6E41EEE954D1E69B395E830A44EA692FFFED2EC44E": "F8729E31E5EC60B778F0AB0882E02A40F1366589A279960ECD4D7E798D67768FE6B851F84F82DB3C8921D7E39F0ADC9D2F13A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"B1F2D6354A0241A6D457B585AE9DDE3129BE1CA07658F603C07BEB6D1F7709D5": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A035AEEF7CA362868EBB43DA5B3081CA23B62C879F2EA01002A3AA37CE6C51D376A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"9C6516C9FBBD04C69BC69AFE0D9FBA2441E08D3F46D4674D98ABEF7CBF53A232": "F87180A0683FBD71346BDEE3A21FC16C316F59BF0B118424EF7F350CB6A2AAAD7B54057680A0C5C8032A72869225512117D1DBA5EF05E46BDDCC7D652004D23567FEA87B6C0880808080A058E83573749FD7FA531EDE492EC9019E9891ABE34050EEE485202A39139032408080808080808080",
"3FB9B382473DE020C3DDC4B6315745ADD9F597F00839F6A42F1CEF7B6A8456D7": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0710E385939C393B6976998A88808C8B0143F6AF418AAD455256DFECC7329D0A6A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"466FD4EE33B7DCABA3F959E1EEEDA5CD417A20BD439C3A937FC65DEC733D520A": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA080FDD62213A6B31344705C713A99723874BE4217434ABEEE4E0FC6BF6CEFB8A9A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"A949F16C80F916E958B66412B2E15F1E9CC6CE9288591385CE6B6B85C45BB652": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA06A947DD8CE3B6814384605D199DC0BF3FBF13F607FA6BEC2EA48AB4DED9B1264A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"8BA6868BC6E5ADF8E3D6914A69BD98F7A1472BE2F3C02EA163E59C7671998B6B": "F90211A03DDF2B0C69F7B1ADFE68A274D8292BBA1E470BC275B55286072803FFD6E6D8ACA0D7CE7BFDDE393D05053B5AF32A855385674EE00DF819B7C7D9E01A3DB0941CBEA0A79E51B0416DC4BEA164B56377E4BD2A62127A1016134DD74ED9211EC4B646AAA0FB8FCE9BB3004C416D437A754BAE3241F1373305B3275C766D069796F2765E41A0E5CBA4A4145BBA3EEDF79A9D673C4B0CA5CC2BEAD3C6E388CB6D573A6DDAA0BCA0B771BDE50A5476D80BEB428BE01F199FA4E393A55D08EECA9129DA83061A476FA0087C992ED46802578D9DFD94B2A57511067808D56989D1590D436B73C778E877A0EFF6E100B22BCCB7D0225B4CBBBDD645D6B6687BFA4A31663494233B64B2E3C3A0CFB8C7904CBD2579053077E714356F10E5F1AE59CEA6A386E32F91B1349F1E24A0A679EFC463E58A032EB4B92764461ABDFD002506DBDF4827325736BD29C14836A0C6A569D90A285CA02E6EAAB24BCCF2C5145A46721DDEB9AB8863AB0524CE5DF7A0759091B0B7CA00DFC26DB386879D20ADAFBBAFB6E57085A4CB8CD8E0BBAE1302A0858D5E450E2639F5318D77B840539C91A352D6C52C83E35BE72260D9822C6462A034DE4A33B9A0F68ED0C88D98CED9FCB6D7350493670FBF9185A9A49D3A3B8546A05C7796EE14086CC550AAFD0D9472E53664F92A0236EC6E2B77236CF9D64A666BA0D57A88F2F591090C477E6EFC86A55F3A4A333165EA08FF6B9AC55C1670D847E980",
"0A99E75CA4B4F0D73AD5C2BE40B84D9FEFFD2F88BB97C52CD263198A99607521": "F901F1A0C980FC34F438E6B14622B920F91DC5FBC0FDAEAC80FD9C0CD041BEAAF5C7513CA05CDD4A7B43788D042B338AC50F0C75CA5A73EC1F06277C1C580AEF5A4FE8A018A0CCE08540402CFA7F120A8794ACE94FB231044616F088EFBB39082BE383FB15FEA0FF33D8629501901CFDC59EC655A1A90F62DF33042871E38A1002F32025CE02B6A05523AB45EC7CF529F4616019A8D6B3CA1BF0EE08025202B261CC5AF50AA7EF73A05A2FDA87009DABD86BF294D7C57385AD2CB5987871FFB5C255558D92EAFE08A2A0D16BCF7BFFB5C1DED720496239C30EBE71BE9BF861DAA0D6A31535E2EB1FB6E0A0E3A235239997B13000187C4F9D44C2B6551E06D1113E3988EDC0CCEE3789B805A0EEA380DB6D37C55C5946E675BECA27EC21C20301A0B1C16CAFEBEB4311FB91E3A01F315DBBBC90D7E973CBE32369161B142BA746622171747D70652796D4824501A0A1F8A793E2EFB8377BC0339D679C85D4CD11F0D758A17E6B788BD963D9FB0C8CA0C6315EAC5754B33A614C6757B1CCC2D8362902102E5CA9CDB705B5E90E222722A02409E24F8FC764BE852DE4A3608917327A327DBB9DA0CDD5A4F20FDC11066521A09E504C65027857046D11D5DB3C2A4A72F022121934B062CF29828721D1D2CE3BA077A53EE606B6ECF14CD351AA63BC61876C0131418A88C08166EA7D20B0122A0F8080",
"4BBBD8D04AE91DB649A739AEFCD03EB0438423F64695602FE67E011A37726886": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A030F2E97F60AC34F7E63747F43CAAAF0CB755A229C6572AD4897EDD30CE48CFB4A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA02A3ED65D59678FE3772A2BDDE4178AECEDCA759B660EAD6F6ECEF866BBED9EE3A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"138E57CE2A0697F664A2BB34D8788A2A604CFC04DD940212D84ADE0859C8EE5C": "F87520B872F8708307314B8504A817C80083015F9094A29862FB7F9B37374D0C9062AB52BDD74D1AF867880E303376A033A800801CA01E91977F5F1DAA1E8F8176436352247CD32D2966C7E8697753010C677070D545A0378604465A14E9CFEDBCCA10553B42BCD0AFA2C4E80DCE9829CCE5E7EC2A4060",
"1361F6910E36B32075949BB4E8F3C240349FFE39044EBB6593A8930403ECD9D8": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893EC19D5DA84D7511EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"71CB49DDE3AFA7D3E935A3D39C1B7F81E14BC24F600B273FC9930DD0172DFDCD": "F90211A08B15025399C3D396CD91C6B7F677FF326E52C53F0E09C574CFBF4FD41372857DA0C2814DCB134698FFFD6842921408CC577B9828D032EAC98159E13F9F052EE045A04C7C2C3446D1D3E13F89C931E67C44E7C73722E60CEC6F635E5B64730B998E2DA0E8E4888F70C85F2099C44DCD84E8D357665F517171059691A225344C2965DCE1A034CF1D7498CE5D8B7EB6BAC53A128B64A6591A7B9DC4C3046FD9126A8447D257A0BF30E0DE7D9F7D85ACBC728253721A6A5B381BA1AE52C197A166F6462275E3B7A01B34A419B0432964271A6752958D2177C0D25354261DA7E5D17CB34D6D156CD7A06525DBDCF18DD6190848D659B89C10F052D5ED4562E59108B17813E2D49177A6A05DB96778222AD93278A2232574203FF46C4EFEB6DE5C882F0E07218D6C83483BA0FF850F0B347538EDC5ED9CFA514C9382E2DE3FFD4488B961CB998BD3AC5790B3A0E36A1A8723F16F1A4C24B332082A551EE58C23C8C5AB5BD6D59A4140DA719240A0F6E82B16D51B27341D33F5977DD1F6F46010E1AE80C6F980AA42747067BBCD63A0487AB60C050060F135E6586074E7A3F1009E1E1972F0BFD5FC413A7DE30FF66BA07842C75C92CD35D2F70EF0349DD278EEC7F50FAEB07201FC77F80EAC428BCFD0A09AB9F0DA02D81D36AC3C5DE70331EFB0CF7DFA3215205DC4B34269268E1156BFA0CA7733F1F42D68EDC12E13F6AC400D6197C130C6885F0B90450743B53F1E5E4880",
"260FD1C673E626B5FA296F117DD18D8CAFE011C92E070966F04AE8E3B7F4D48E": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0B284A9E9FF51298B3896D1509C14E134448168AA2BF62770DE039D0D1EE2EEB6A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"D49FA6D1CA9348C02CE396310441651C8EFE4F5C49A7F5604BCF30228FEA0E04": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0B089B98A2A9F67CD1EB8CB0C983474155F907123176CAB7D729B8939493B477AA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"37AA2E2B43D3D5D2C8A34E82C8CB2D88277EA0CA532B8FBED01EC0E764ED7915": "F90211A06AB1A7E60FB3D26C22761082322FAB13A4C361927B6F14B9AD97E6BD3479EC79A049CF9038D44250337A2E3FB9DA3388C8B9811B2FE97DE6C46F7B9660018CFF17A029E625C12EAE6E00290EC0254F3D423515FF811323F07901E9AA6215B3E6381DA0AFA93AE3D07A9CB383905F9C949D61420C8DF20B021B8E5E52120D04FF030B09A0A5DFC083F48F7A153B547B6E9FB7B757192459F1B2DAB370EA4A23232A679AD2A0A1689DBCC2F7AE4AB57806FBBCE1FBACADBC4AF0077A10265A75FA765DF3C08AA0F6F6F2213BF23D7914EE04BCA50F87CF58538D68813211CF0E20FADC19C0FE12A03500A6705E2D904B9581AEC2BCC504E89FF69B9EF7ADB6FA9B6E6D0FA8AF90ADA037BC77F861ABCC9663F11F0EE152CAE7AC850495B27A2ACC7C77120832E48C46A09291D8B9F1EAACD406D7055BD0808C791263F36A8450323934D4D8D0B7A6DC67A04C8FCFE8347F67D5B8FCA1E1A3B91BF864859ABD3A124DBA6CE45BE98B353ED0A0F2538016AB5F9C7721892D7A52227DAB47A09927379DE0AE9D46534143DDAE21A018B67FE305ED7D2BD31B124EA82193963EE09D778D5FB070561FBD6FDF461402A00A8F6428DC062DB618885D540FE2B5FC7E6C6CDE7F99B51BF791294E2315FC55A0691002CEDAD9C57C66983903F7ECDE9BE273B8163FD1086F3F832E934CC339EBA0F303CD2456814C4B6D90B742D91E6D37FC9E88AB351146E7E081FCB45AD6189480",
"C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE39": "F7A03A7809E925A8989E20C901C4C1DA82F0BA29B26797760D445A0CE4CF3C6FBD3195942179987247ABA70DC8A5BB0FEAFD4EF4B8F83797",
"C8CCDD27BB5340E94A4348A0F4D4AB7D780CE64D9CA948FAEF6438780AFC6696": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA074B23BFD62748AADC2CE36697B892643F830D583BE268A2BB0C736116C6E499CA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"E2212ED845091914C81BF6FCB1B4FD4A5BC2C900A1C4D9095D02B7754F0B4E70": "F86F9E3FCBF80EAF41A822939A58481153DEEC5EFA1E62B78B6F64E608C872FA08B84EF84C05880E393B3E8A6E6400A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"E91341B2DFB7CB1434A10C251AF66B169A907A2A1ED3443ABD301931FC60F71A": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0FDDD0EB5BDD4348CA64589B86C46709EA6219173811655ED3B7CC39E7257B505808080808080808080808080",
"4BC0BF8F276D4DEB36F31B8AB34466672E80A5A679A29D6F59AA1CA7C76EB6E4": "F851A0A8D4AB3CB91601542C704B85EBEF61CC2A23B06151B6F9177753016E4D21B8FA80808080808080A0884345191165C6320470BD59DB6890CF4CF82871995429C52D4195C76B4896D48080808080808080",
"83D4BEF85C7551C4646D079D38B29731CBAAD45A176A01809A4331E5AA4705DF": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80880DE0B6B3A7640000A0B0C3687043EEAA59B56B1FE9C7E309D69BB1A303B043EA5EA71BF5DF20E04A3DA0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FD": "F90211A08B15025399C3D396CD91C6B7F677FF326E52C53F0E09C574CFBF4FD41372857DA0C2814DCB134698FFFD6842921408CC577B9828D032EAC98159E13F9F052EE045A04C7C2C3446D1D3E13F89C931E67C44E7C73722E60CEC6F635E5B64730B998E2DA0E8E4888F70C85F2099C44DCD84E8D357665F517171059691A225344C2965DCE1A034CF1D7498CE5D8B7EB6BAC53A128B64A6591A7B9DC4C3046FD9126A8447D257A0BF30E0DE7D9F7D85ACBC728253721A6A5B381BA1AE52C197A166F6462275E3B7A01B34A419B0432964271A6752958D2177C0D25354261DA7E5D17CB34D6D156CD7A06525DBDCF18DD6190848D659B89C10F052D5ED4562E59108B17813E2D49177A6A05DB96778222AD93278A2232574203FF46C4EFEB6DE5C882F0E07218D6C83483BA0FF850F0B347538EDC5ED9CFA514C9382E2DE3FFD4488B961CB998BD3AC5790B3A0E36A1A8723F16F1A4C24B332082A551EE58C23C8C5AB5BD6D59A4140DA719240A03A8E55C0898D27D6C4D32D64275258BAC95430B417B7A0FB9EDFD02A6C86A050A0487AB60C050060F135E6586074E7A3F1009E1E1972F0BFD5FC413A7DE30FF66BA07842C75C92CD35D2F70EF0349DD278EEC7F50FAEB07201FC77F80EAC428BCFD0A09AB9F0DA02D81D36AC3C5DE70331EFB0CF7DFA3215205DC4B34269268E1156BFA0CA7733F1F42D68EDC12E13F6AC400D6197C130C6885F0B90450743B53F1E5E4880",
"4F33B480F073533172BF07B143D642EA954E42DAA80DD3D8F3C92D182998B79B": "F90211A06113BF7805481DDCC64AA7081817480B9AD6392342F73C2BDF6AF4F899C1CC6AA0A1371AF99635BE688A1C9FA0B114C0786F64726EADEE9973FBC9760CE83336E2A0EC3D82D17A4427CD720221231C0E60132191CBDC8F82B0270C9DF5C38E25BB04A02F6536094625913C53C1C3841A4831690ED61187F81D174066C36DD36BDEB107A0260B6339D8E26DF17E49025B869467F4E5159BA8DE1994852DE200B72A4D9D22A0BB2716140A4CF488704E804A79728CDD1FB6295177532D011572295F25AEFA24A05327608B885B0701CED2716AA241021139744D4B967BE753FF485113F43C3C7EA076D8D0F305244D75BBBFD4DB5D28D5A945785CF067D6B8375D116939E5A045DFA0C68828EFB2DBB67F55989089A29B8B2DCFDC51F7B06B7D9237F553CB1952B9C8A01A06A0230A16259D74F47EE96EF7911CC67D73285FD3A97851E0923314E7391EA03DAE3B31903F9F43D7565D4A93FE6E0C8FE644C5FD2C7F480EE2B65E62F62A8CA0FF90C9DE8B58AAC6DD21ADBF8AB87115798553FEE309A921E52DD04C4142210DA09AA4370D3B0C424002C5B4C08AF9A555CA8AD75D426CB644090C144B7F8190ECA00B736A84C469A1A97DC5E6284991AEA9C6EE56C7335131C711CB5CF5FF15FA1AA05F7D3AEDA3AEBAC1A4424A8D3E57254E9395B6AE7FDC0C5AA2D8F6A63B89CE8CA02FF0C2D5DE45FCEA82CBA44305311826B615799167CA6E50B3CDEB4DD1530B4F80",
"0308E1ABBAAD17605B93BA5890A2B43A34D96D56E4D7CC9A4381C8AC50E26A9870": "C58314E30203",
"E83BB472DBFF4D1FA0FD232868ED85E5863B988C9E3343ABC42E2726D39C5092": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C268861C61FFA3DE74810A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"846E09A1168D4B27EA400DF05CEFF36DE20B3590D5D2E9097ED57B7108DBE7A3": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0FA80F3EC834C66B1E8D3BE41AC7B5B3193463A2522294615E103CA5263FA6C7AA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"FC6DBB5C9F854AF2D6D8CB274F60B3E77D2D86261F88CBE597BC2BEC320C8A34": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A0B9B5FFC5D5C03767222DF6F4AA9648C666A332373389DA3BC6B234C72BEAFDD8A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"D873BC1B0CE2143DE69B2F95495ADB686222E8CC8CCC96217B8369ADCF1FD6D6": "F7A020D9D894133A730AA651EF62D26B0FFA846233C74177A591A4A896ADFDA97D2295942179987247ABA70DC8A5BB0FEAFD4EF4B8F83797",
"907CACD3E337E4DF45425CCDB8CAFF8D039C068059319751C73483EAEB51AD2A": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A096D8A854D62C19102CAF4233866E46573931B77A66D308D7C9ADDA9D50A1FF52A0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"F140E1CCAA0D2E591C67B9515B3770CA708CF4A6EC601982C28D867F28B8AA63": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A09D4B03EAC9217165039AB2FC8A231EDBB1AB01C6A582FDAD1872940C907691B3A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714B": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A05EB2735AB22615373B17CBC57B2806C58F60ED75D389C875C637142093CEA4B6A0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"A4C75668604C525807E44F7E6A3349546952E47BEC969259F8533CCD0D22A6BE": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A0B45ED4D7715B27966AADC2C57B78DED03D97261DBFBEEBA36D11CA539EF383C2A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"56E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421": "80",
"DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA06B27049047266182F6633C669CBADDA10994AC557E05FB8E84B694399D7395B2A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"435AAA27C23DB3BED7065BC33035EE60A3A137478F773BECF37C690416EFE3BA": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A01C6FB19E1DA45324AF849A4715613B5844EA87FCF395D93627DF9D4F4E96FE6E808080808080808080808080",
"31E26BFF056B10632EEDAEB546E9F6093A4A0457D12E23A4A16D1D3916E18BEB": "F9013020B9012CF90129A042C3C676E160B0BDE4D8FA5186F4B5D5FC065F6CFFB11106EBB8695815F722E08301756FB9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0",
"0101E3140000000000000000000000000000000000000000000000000000000000": "A0A0CDCB8EBD1E5A7ED2975A9D27F74C4E6F3A7084467E33C893047AAB15486920",
"05B7B9F2095DEC8E91FCF0A19722C0F18353FE5952E9BC6D988B36AC328C0C176C": "A0E0A27380F44F7CF236417700153E6AC42F5F3A6221700149EB23B7F52FD24967",
"823D0D0D095CAECF6D3B0770EA7D9C9BA3DD88A70DF01ED3142DB00821A3E8B7": "F90211A02582D987B3B41BB04347D424DC3EC964CBB084221A0721ADAD3672256FA75B58A0D7E47B059A8A58798FF47B32FCFEE778433E53255A2C8DDC3DFB04055CE07756A0961902A0F542F4C190FDFEB9952FF1D0C44C0D859A57CD36B552151207DAA9B7A0DA3D98CD70B9F79DB5030BF86FFBE9C142D519A722607A19AA32A2D5FE7C852BA0EF136931E2B7717CADA2897A6D7D347C752D1E53736CE13D0A515407D97502CCA08200A1CE814B2BC5CF33DE391A2054D073D436EC4382ECB333DF175A19DC564BA0881FF337F11AC96D577A8F5B6E9BD81C775DF5169CE61F54262F0D0360FAD16AA0D20AA1CCB5FD9C72E32020FBA7BADEFA7548866785A101C2D61315EE4639D1F4A05DF1F040FD94D60257D840170F8A6ADB40FEF44686E065DB3F5D77BE09389171A08ECA1697198663549420500F42F10CCC8CA26A2CE93F5BCC5DEFF3FBF2C996B7A09275A57A7AC8B03BAAC50A12FF322A0EC10FA5C7250C5B0FF04376DB4A618DEBA0540599E6165CEF638B6189F9FBD953C122A79F8588B7960FE8F76B71C3815A62A04CD6DB7505C4280200A039E0CBE9922D49F59013D7982C25A0A37E3DFC8BF020A07BE01F402710F10F897BF410647864D82CC70050E0CC1B06073E955E1F54EAAFA0B323C97DC50FAC8CAA4A4E9F3ADBEE3F6C73DAEC3E9187B529B8C1A87256BD50A0BC79C0B579394F48DE90C17D6A7A7C8DE66C3443B64C801386AC4D0D12F8533680",
"15D06F6D9F91F2B3EE2E50AD456A0BD8088B1899D079D74BA88224472A4130CD": "F8739E33C03CE0B55C830C915BE63E218BC20AD607E774FE830315146A47A6BC75B852F8508229538A490A267A6B46AC9A8160A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"034075DBF704D156BAEA9672D3BAAF531F073FDFBCD87A3302A4767E2F7ACEFC": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA034368F17439D8FD8654A505D3CCC337FD390D09AD52CC0D45706DF77289B0A8FA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"3A8E55C0898D27D6C4D32D64275258BAC95430B417B7A0FB9EDFD02A6C86A050": "F90211A05698C0D723946D86F0BDC92B78AFEBB7BA204A3D1692C8A14B6F5E3425877530A0507BC09387DB71FABB8864EFC79BB2C4BC90EA5B95AA8D55378D94B369CFF6E6A0DF76ACE2320C4A2F80A879A60DA8732BCE9390D9ECB0933C386B514B24067791A099CE6D7D644BE908DF1CDFF15499A334869E26807A8481F232D9A030822A243CA033FE4C4652EBA49A9205ED37F8091C7E2934D3A008FFA493D59417B83629C2D8A06C05601E71D37292FAD0680B68D2A6CEF96C8205A0C2E4F6C6D8142EFCB4A886A04517A80B25D91B074FE7F02B4EBF7EF0CF9027A907995A7E754B7CE75EEDEB6FA0C7CBEC705CEE8D8C989A971B235B0ECD8F09BEC81CEBD18E468AD2E33385D0C1A0F7794E6F31DBCF88C76862D3AEAF6AE9CBE7A9CD02852AB8B4C4B6B08284AB21A0256C462B40E25932889944D6AB32A4E139535C1F83C5576928135302FBE782DAA0CE2F82921B20E2B5CC0E9D7C32D266E84D6E6FD7124EC4DF5AEB1A5CD999B700A06D3D46203F95680510251B3904909CEA1C99D37F81671D6074EC1BB9512F7F22A029167804B6F5C45C88104AA5008521E472099B62F0D6FBE8000066D41BCE68ADA0469AD4E925B2B2E173B40FD77787CAADCE158942AF32BEAA4BBC75741297EFB5A03C2A4A5BDEE1D1BF8C08FC481801A748DD2005853389E6B1D4067CAAA9CD7C6CA0A06D0AF0851DCF991559AC7A97B090A5951D2DFB0A91AC0E65B3EF04A94DF43E80",
"D23682648F2B166284F080C545481DAF401F6812890077CB9D4494A4A76917ED": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0553A5450442B1A5988423858534E4668EF0D5DE8B6B173EAE6578FE84FD84CD6A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"52D1D3EE2C5AD785F0289B9AF55C2B4FCD566EDFED1D5BC24711EF09408AF628": "F86F9E3FCBF80EAF41A822939A58481153DEEC5EFA1E62B78B6F64E608C872FA08B84EF84C06880E37AA283A15D400A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"57E4AA3F3738F7EA1ED7CD959D0E6C686ED0363EF17D1B776079CB0097A668B3": "F87180A031E26BFF056B10632EEDAEB546E9F6093A4A0457D12E23A4A16D1D3916E18BEBA0951ED0BB935CEC9149C90A10F09DB807F30AC225E614382088181F06A34B3E2EA032268D3A610FAECF7E263523F917AAA179183C59A56419D44CCAB33FF87CD69C80808080808080808080808080",
"22DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5": "F90211A06113BF7805481DDCC64AA7081817480B9AD6392342F73C2BDF6AF4F899C1CC6AA00A99E75CA4B4F0D73AD5C2BE40B84D9FEFFD2F88BB97C52CD263198A99607521A0EC3D82D17A4427CD720221231C0E60132191CBDC8F82B0270C9DF5C38E25BB04A02F6536094625913C53C1C3841A4831690ED61187F81D174066C36DD36BDEB107A0260B6339D8E26DF17E49025B869467F4E5159BA8DE1994852DE200B72A4D9D22A0BB2716140A4CF488704E804A79728CDD1FB6295177532D011572295F25AEFA24A05327608B885B0701CED2716AA241021139744D4B967BE753FF485113F43C3C7EA076D8D0F305244D75BBBFD4DB5D28D5A945785CF067D6B8375D116939E5A045DFA0C68828EFB2DBB67F55989089A29B8B2DCFDC51F7B06B7D9237F553CB1952B9C8A01A06A0230A16259D74F47EE96EF7911CC67D73285FD3A97851E0923314E7391EA03DAE3B31903F9F43D7565D4A93FE6E0C8FE644C5FD2C7F480EE2B65E62F62A8CA0FF90C9DE8B58AAC6DD21ADBF8AB87115798553FEE309A921E52DD04C4142210DA09AA4370D3B0C424002C5B4C08AF9A555CA8AD75D426CB644090C144B7F8190ECA00B736A84C469A1A97DC5E6284991AEA9C6EE56C7335131C711CB5CF5FF15FA1AA05F7D3AEDA3AEBAC1A4424A8D3E57254E9395B6AE7FDC0C5AA2D8F6A63B89CE8CA02FF0C2D5DE45FCEA82CBA44305311826B615799167CA6E50B3CDEB4DD1530B4F80",
"9DC829A8B20BEDE0BD0C29DC988C7EF7BAA1F3A23EFF53854E8F02184C680900": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A002FAEA90CFF0346746A96D220E14C8D6856802E95E6B06B8027B8F50D48997F8A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"DA461E61C107CD278F170309ECDB9B9C2B8E815BE71F19CDBA9C56F995446F84": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A06C56D1A0665E4CC69F5F56362266D27CF8BE76A7E82B735FCD24284FA4824E8D80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"3A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57": "F90211A05C8CBF0EBBE76708941A69E20DA484182FFC39431C40DDDF910AD02EFE6BD505A0102D75E96D9FA17159B1666EBCDAC3F6504BDA58D2D0AA4BB2D751AD427B388EA0F95C483E0C4D8D0925933D1BAB2ECAC0FF1A32A642A65E88A30592D8992B79C4A0998F4ADFD3BD6E9A226CB50262E9CDF7F0B90E3C743AA69CE76E1C4E5680EA3EA0ED6E0D08188F1D0B526BEF679AAA4B99AF59F7F97F856C007798A3DBADD23A80A0EC8AFA87BC9D730B86136A9C21F60DBE27CD9C77A4BC4CE1A35196E2C6B2FB63A0C1151924D6344D38D611D2D778FC5C82C0B22588CD848B47BDCC63FB496421F6A0AF8EC4A81D83B50D1D856CAFBA9D142B87AFE8E9A0BBCD51F646438D5ECB46B7A0AFF446348BA7A646A869EE756DB63619777571368109812890B4E00EDEDF8488A0503FB3D91903A59F1E1C622B5C065921B36B4C946248657D44C2DAFF50484A3EA094B1D3EB1A810B52A5BE467F11DEB3C16EBE259E264501AFDDB4690922CB0861A0D5ED81666337019D267E550D03D0710C671BCDF6D5A4D1E1EE5F8F11F67F2830A0BC5FD043FF92512240157F484A1CB631816EFBD68B9DF3D3638775C86115411DA05B01E8D5218AF2C6138DC3F677C9AB632166F95737118D0C2CEA7C24CB07CD2FA078C037AD287133FAC939FF29AD28EBADE210B9462CE5A6FA0B75135B507769E6A02885C44925DF926954B5E8EF1D68AADAE93FE5F049D92C629F9A1C607D63D0E680",
"724A9A559E37880A8B782794C5526BFDD68A0EE0820522E31605C3601DEB05CD": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A07AB1A56E16E10581402C37BB9ECAE4BE5F34C9F1969EBFEFACA8BB1466C5F5E5808080808080808080808080",
"059108C82B2F832A18DC7F5D9088D62D5CB9D3B1FE9C0684C494EB30BE3AE6B0": "F8749F20D22C718C78D005078A67495F59893D2948FE4F8796794437901123E3E90DB852F8508307314C89FD6DA9A9888D6A9EE2A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"3E63C992FD036053F507378AF74A9DB17A5F3CBCC4E67B9CC095EBA24ED0BAD4": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A01DEAB30FB11DA809D1750D1DFCD1B133CAD70C442BF1B653B565EE8740C2330280A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"02A0CDCB8EBD1E5A7ED2975A9D27F74C4E6F3A7084467E33C893047AAB15486920": "88CA4CD8749518C874",
"05B10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6": "01",
"B2AA81D288F18341EE2070EE08FCC0659834CA0995328FECCE97546CE262764D": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0BFF282E152923BE920BCA84DC4DCD7726F14A0968473AF64CA695620F26796FFA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"24DA8D34EC5490F8CCC02BAC27D3C192CAFAEFF17A0379F2B44C5833551B66DA": "F901F1A0C980FC34F438E6B14622B920F91DC5FBC0FDAEAC80FD9C0CD041BEAAF5C7513CA05CDD4A7B43788D042B338AC50F0C75CA5A73EC1F06277C1C580AEF5A4FE8A018A0CCE08540402CFA7F120A8794ACE94FB231044616F088EFBB39082BE383FB15FEA0FF33D8629501901CFDC59EC655A1A90F62DF33042871E38A1002F32025CE02B6A05523AB45EC7CF529F4616019A8D6B3CA1BF0EE08025202B261CC5AF50AA7EF73A09C6516C9FBBD04C69BC69AFE0D9FBA2441E08D3F46D4674D98ABEF7CBF53A232A0D16BCF7BFFB5C1DED720496239C30EBE71BE9BF861DAA0D6A31535E2EB1FB6E0A0E3A235239997B13000187C4F9D44C2B6551E06D1113E3988EDC0CCEE3789B805A0EEA380DB6D37C55C5946E675BECA27EC21C20301A0B1C16CAFEBEB4311FB91E3A01F315DBBBC90D7E973CBE32369161B142BA746622171747D70652796D4824501A0A1F8A793E2EFB8377BC0339D679C85D4CD11F0D758A17E6B788BD963D9FB0C8CA0C6315EAC5754B33A614C6757B1CCC2D8362902102E5CA9CDB705B5E90E222722A02409E24F8FC764BE852DE4A3608917327A327DBB9DA0CDD5A4F20FDC11066521A09E504C65027857046D11D5DB3C2A4A72F022121934B062CF29828721D1D2CE3BA077A53EE606B6ECF14CD351AA63BC61876C0131418A88C08166EA7D20B0122A0F8080",
"B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA07746455F5BF592D73B009EF3604C4D3891CFE2024BFED6D395F63EE7F7151657A0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"DD039BCD770237C77E43336C7788A43C9D23BEBBCA19B6CE996A64838B0D4E86": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0ABF3D4E4A5AFE3B88BD3792D6967285187977E87DDF5E02B45307E364DF208EAA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"7BD2EC3E62D7298B5DD3E5D9D9E7113F2B31A526ED02733B12C471848406240E": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80880DE0B6B3A7640000A0821E2556A290C86405F8160A2D662042A431BA456B9DB265C79BB837C04BE5F0A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"087C992ED46802578D9DFD94B2A57511067808D56989D1590D436B73C778E877": "F8749F20D22C718C78D005078A67495F59893D2948FE4F8796794437901123E3E90DB852F8508307314C89FD7BD4F5E4E3D406E2A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"6C1BD575A4F6B6A1462D3162EC8D585FBA088A497153EFD773658FAD92CDC9E7": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0260FD1C673E626B5FA296F117DD18D8CAFE011C92E070966F04AE8E3B7F4D48EA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"1A1BB7C9D7F90606F1F26291E0D7AC471A2DFA6EF5BCF468D06582D24F7F967B": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0E8E427707BCBDD6676DB6CCC8152B2DF4E042232EE8B8DD91623689C20925828A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"0718487061C0E74E1C8FB7CCB87EEFDFB429D879E6A8CA0B59A443977F874315": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A073CDAF825410DB33B84B2C0F6F4002F4BBE9B53C4C9AD99056F1E62CB38780E9A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"530683DB2745C6C949AB8BBF1A0CA7E69C5F9367186E70F3E15944C02B13A262": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA06D6B392CE4D317E78FAC04570CE9E5EDBE51351DB011C7953F0C34242A575469A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"E07B7A1B1EDDCE798A5A0AE27AEE294D2EDC4C4906C01BB33D2490AAD39CE2E5": "F87630B873F871268504A817C8008302AA0794CCCD5B66BF6990C7210FD76781469B19BCFF9BAE880DE0B6B3A764000084AF769EFF1BA0533CC9EA001EDAEA89E2B549DD4A68DACAC190505992123479723F8FF234A792A035AFE088B4018B6863640B2FFCB9814C14DEABDB90103CB9B51D84639A5D717D",
"9FAA02CBE4010328832851794646A270CB8FB937730CD5A561DAA862B1797761": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0E91341B2DFB7CB1434A10C251AF66B169A907A2A1ED3443ABD301931FC60F71AA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"85E64ACB1050BE6E48E53D6E94F2C9C6FE214E1A766C359681845C012D1AAF6C": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0CA74E981966E9CE01B1C1ED836AB1E0B5892E28543DFEC7049BEE0D67EC66B6DA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"0362026FCD4FFDB5D8CBAD6E7630EBE0AE756CD9C6BBED2FC0A0512BE94C5E90FD": "C58314E30280",
"1DEAB30FB11DA809D1750D1DFCD1B133CAD70C442BF1B653B565EE8740C23302": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80881BC16D674EC80000A073CDAF825410DB33B84B2C0F6F4002F4BBE9B53C4C9AD99056F1E62CB38780E9A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"BCC49050355790904F1CD53E54FB4C46A423C35B27CEF7D41461558F660E8B11": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893ECFC0FF5D06A51C97A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"B0C3687043EEAA59B56B1FE9C7E309D69BB1A303B043EA5EA71BF5DF20E04A3D": "F8718080A04FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB288080808080808080A0A74D2477549F8E41CDCB7C5B82285BD24C298E5B393E3E4C91C10B76EDBCE2118080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"6C7BB096926B0012474935B78237A5C4E49E8AE856B9D9BC360F6D8625A9A0FE": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A0CD293991162E57BF07DACE1D6A494FDEDDC94D2484AAD795D7B6E27786A3EC4CA055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"3694B2BBCCE98BE1D3893A3C7BAD66B1F7E5A55E5EF792257080CAADDD0445EC": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893EC198E3B1B10A51EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"3A886E0DB8A05A73D87C0ACD686C46C6F872429D958BBE8F6408C2E391FA05DE": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0846E09A1168D4B27EA400DF05CEFF36DE20B3590D5D2E9097ED57B7108DBE7A3A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"79DC324002A2E15C0A3F10734B3BC31EA68EF01995C44DB8373E3EFF9F169AB2": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A03A886E0DB8A05A73D87C0ACD686C46C6F872429D958BBE8F6408C2E391FA05DEA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"CFEEC0621D9A96B6007C3D9BDD791B94C94CB9860EE74A3C948A3EFBF10F68AD": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0B2AA81D288F18341EE2070EE08FCC0659834CA0995328FECCE97546CE262764DA03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"365A41DA8975D66EBAA4CEF4009CB8EE34A81B544A894F4D8069BA7A977FDD5B": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0B5589FBB8360E54ACE413270167427D685997701AD8E34DB31EE3AF50042D137A04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"7746455F5BF592D73B009EF3604C4D3891CFE2024BFED6D395F63EE7F7151657": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A0B031819ABA78F93C88CC042296DA4E470A0DD1C3726024F6CEADE88B2E1AE559A0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"ABF3D4E4A5AFE3B88BD3792D6967285187977E87DDF5E02B45307E364DF208EA": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0461E047CA7D188DD72D24B4F93B7D18CB024DCB2D365261F5ECF8792298D7904A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"0B2CD12C5086C5F5CE60A0B92AEFE186BA05F9521E0DE6E63D9F51AA11F752FC": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0CFEEC0621D9A96B6007C3D9BDD791B94C94CB9860EE74A3C948A3EFBF10F68ADA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"C3761834E2F993272736966EAC1ADA9F9478B981BA36B8D410C3CC8F804C95CE": "F85180A0138E57CE2A0697F664A2BB34D8788A2A604CFC04DD940212D84ADE0859C8EE5CA0607E4B938DE06D9619979E4984B3C25C1606F9FC7CD26FF3F0C2BDE86F1510918080808080808080808080808080",
"35E4B2E06E98E87F1F4D5EB485A6BB2DC71CFE42818590E229A5499F508C3428": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A03694B2BBCCE98BE1D3893A3C7BAD66B1F7E5A55E5EF792257080CAADDD0445EC808080808080808080808080",
"28B7791729C9253835847BF4370D7F52EAC432C346E44C2D9D41AD27C75D5064": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA08089AE854BF42EAEFF13BF8E32ED479DDA1C177052565A841627CD87AA017217A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"11ABDD012AFA8E6BB89BEEB2222005BC9CC34761EF41529F0AA73445759229A0": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A081F74963431B1D7A0876105FA606310B2F3F19C1D7D2A8BD6EDBEC33C7D35C74A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A09614AB3B2C856B6E66B329B8A1B3F46B88D05FAA5B55C1F49A6C04DE5A0BBD15A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"CD293991162E57BF07DACE1D6A494FDEDDC94D2484AAD795D7B6E27786A3EC4C": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A0267F1914245CED633F1945AB8B09526E226B83D5F9FF4C4097697A8322DA179680A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"908AD51A1B2A7859569E1BB33799583EEF6AAD436865D91AB45F8BF9D5C19509": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A00B2CD12C5086C5F5CE60A0B92AEFE186BA05F9521E0DE6E63D9F51AA11F752FCA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"34FEEB7B973D6D6E5845C749D0A7007F16BA53ECC95205CCC68172AD0D64FA21": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0907CACD3E337E4DF45425CCDB8CAFF8D039C068059319751C73483EAEB51AD2AA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"05EA7809E925A8989E20C901C4C1DA82F0BA29B26797760D445A0CE4CF3C6FBD31": "A0B10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF7",
"ECC3F016BF2FB0494AE8BB81501846CAA8C2D2CBBB5A7E154B7EB75688834CD7": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0949ED6019CB9D6D6AA21C1BC3C791833FEC96799BFFB05D3E5762A894ED81DCCA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"84EB01632A5C4055E7E2C67955E6D468C1209D5B0B553D0E43D31B8673CCF240": "F891A0443635227CC3EE7F472DB1149C3F8103DF4B74AA6229A9099C09C79CB38C24F48080808080A0762320217942EF12BF2F87EC7B6E1496F4DB214C9DA110AF53BE11E8D9054A93808080A0A048C579883DF6B68672B09D73032F76A27F38A8DD2C802F94A02ABED3AB5FAC80A0B5C3A694AB0ECA2AC148CF61FED715ADCDDB42290A429C02E7B3F00E5743615780808080",
"9C617F5BB06ADD93335941FBDFD7D454EB3F38B87EC9C9CA44F9D86691D89830": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893EC19A61AE8FD891EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"4BCB30770B28E4F09F2339CD966DBA5F3D8BDCE56ABA020B8BDCB110A7974BEB": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A030F2E97F60AC34F7E63747F43CAAAF0CB755A229C6572AD4897EDD30CE48CFB4A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0C179A48D069C8A92A5505330A47E1937798F4DD9B7CAAC37CF246491BB9A1550A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"35FA0B8460515DC2F1D528064812BC20A3EC083DD7FD646695BD00661CD7BDA1": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A0DAAB4B14F19D56FE30E6D88EEE35AD083620B52C03352296652593F4A8B4A964A0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"03DE6678A45E22ED56BF4F0AA3E586F0A183E808E78573F5F9AF6CE388865123DD": "C58314E30202",
"6BB1D33C3C99F20E9AED389B6B571A45FFD50D0555F9B87ADDF79A94B696BBA0": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A04248E652C9B3B427E075599B83FE70B494279805ED74A474082B4B9ED3901163A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"B284A9E9FF51298B3896D1509C14E134448168AA2BF62770DE039D0D1EE2EEB6": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0476939F917BE7F673C2A3D49A32639F28A4BC344286A507BCF6DADFEAA4822C6A04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"AC31C66850DE028634E599EDCFE5A50AEA738869AAA4451F13C8BD0F1D872B7D": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA08ED7B7D446722508C58F23299689D7F902C2408257D6211096D68B608C44FBCCA03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"524AB71E61E4F5B3C2B56583EA507582FC0FD3081B233819978C122A5E2B3892": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907D893ECFC764742F3D9C97A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"07EFD47F148C8D3E494BF1583580709FD4EF087455CE5C6B21A7BC94C4CED92E": "F90211A0E175FED764A6AFD6409E278E4FC9864B08D98978A575B81A67ACEDD4ADA1A1D9A0D810B833F97D7D44F3860CBB0029762AB47F9F961905ED3E87B779351C0CD59BA0B397BC0DF7FD0A22D76295A00F62045795F891C9A25FF3120E023A0546963EABA038AF824DF7311A71F951B1889338D4991969D734EA1FB7E4628F79450F788556A0A47A21D46960851E8BC7B22304F0EC7DF6CF312295F5915BE44A2EAC9BED4AD1A064C63C0DAB01E2C3577D3BAB301729B01A4AD4D3FC57EE57E4A347DB817EDA1BA01A50B434B0DE774B01EFECB226BBF004E08BED00039534BC98C7631E67C2F2A7A060D649B3AF65B9F6B99A863EE1E31DB01F60EFA42137D1B3F2ADB5021C99E2FBA054A4B4414B3043AA8B62C5CFA1949FF53C13A70CB2185D32F6888C2EB72709D3A0A076C6DD2D2DD88C39454D88566B4E58CD667549890418583A42EE5C040C6DC3A0E9193A2EFF179B7160A4AAEA88DE30794D7B5B766119598DA8AADD6150D31541A0EEC13537A1A289AECF6F14DEA9BBFE218C54A9FEDB081B7E8D7EE69144C04942A01AE8D1A4304048999266835863F26FC2F8BEEDE4BB158F74AE7F45BB2CCAFBB8A0240EF0DE6357DFE026FA665A83C556D2D5E5FFFD682279C304278EB17D786EDEA0F4409A20A12A8B454F297CE0DE52545BF2F56680CDD6D4FD76E203AB35263EE5A0B3DA738B5110644FBC11EF6F314FC25CF4CCCEF37A47BD9E5602F5429C1EE1BB80",
"C5CA151585A699D530EF639F16213484D4F4BF2EF40DB808422E485E97BEA93E": "F871808080A08468B360BE6BBE959AFBD46D42A98D90359466807E04428BFA3A5457F23D770780A0ADD5CD515FCAFA17E6323F88D045AAA105AE9837EA2C6AAD8B5837CB1258E9438080A090E166A1953F7EFDDC7F76B2B43389F338ACE51E173649048A88ABECAB5CB3198080808080808080",
"0E296D624FC893499503837801EFB5D09F5E85377632028B6CABA8C670EE3AEB": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A04C98E9E3F0731DAD25F9F50835EEBEF81BBA0C74E0108EBBC1E8DE0587E05A92A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"A74D2477549F8E41CDCB7C5B82285BD24C298E5B393E3E4C91C10B76EDBCE211": "F7A035D9D894133A730AA651EF62D26B0FFA846233C74177A591A4A896ADFDA97D2295942179987247ABA70DC8A5BB0FEAFD4EF4B8F83797",
"3F681B6C834A3F89F84A114C90DC744F9EB8BFC3A504E607867A62B017A49B4D": "E21BA0ECF4DAAFFFD0AC29D19B72CDCF23457164343E7279B6A424A93F749CBAAD1B6D",
"3A71A4282952F86E0042177B6AA13571C1430D8CD350D1F532927A6B89E0B3DF": "F8679E3FCBF80EAF41A822939A58481153DEEC5EFA1E62B78B6F64E608C872FA08B846F8440680A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"7A00BEC05D6383ACFB97075E1E294C762DC4DD6926B4B6A7C2274B5F96ED3842": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A02710FC0BF0F68F3D6D16033A682A933547A0895B2EE5DB508F2F90E57822AE8AA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"199808CEABE3797CAC3F614AB9D79543FDED178E2DFBD0CE5E18E613F62EFC21": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0688C1A653321B6ADF2BBACAB219349567CFAC0ED54850A84D83B1DF8D1EF16D8A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"553A5450442B1A5988423858534E4668EF0D5DE8B6B173EAE6578FE84FD84CD6": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA06F1F27F5676DEC7A3995F9ED83C30198341296ACEB2A7EE2600BEF7740A1A119A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"688C1A653321B6ADF2BBACAB219349567CFAC0ED54850A84D83B1DF8D1EF16D8": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A0B4583D0A28BE4286E43ADDBF09135FDFA953F9E1778BC617F73F030C504213F4A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"8119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A071CB49DDE3AFA7D3E935A3D39C1B7F81E14BC24F600B273FC9930DD0172DFDCDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA008B34FB80658FAF238BD43B3AE54886ED49E20586A8DBFD4CD90C64F50FB4390A0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"8E15599966B73EA1CD49505605ED56262890B76CDB0A8AE330955C202143C4E6": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA00E296D624FC893499503837801EFB5D09F5E85377632028B6CABA8C670EE3AEBA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"64C63C0DAB01E2C3577D3BAB301729B01A4AD4D3FC57EE57E4A347DB817EDA1B": "F901F1A0114368DFEF1E4D5692DB4DCA2A8338B07E1D161D5D09318355F5EDE4417BADF4A05EED7C37478123B924C8A0DA7580D5750A705DA7AD47406E3A69F0F0062883C2A054C0E86731D6C7EF09EF6FCFBCEFC71EEE20FE3FCD2181C96D5B61EE9B1BC727A016ECD3CDF1F4097925DAE0CE0FD87E6B02646F730F4EFBD701AE0D9184C04E41A0B0ACE3C024FD9AB88F4B8CDF68D74D75E77842F1282F6DC75BF168EA26F30A49A0FFEB2070462E9B3AE114840E586DC8B30C14A1C3F78895C4B0F33DB58AC2BD18A03DE6FBEAAD83C8F482E3EB802079010D4EA2B028AAF225F4BF0BD9DE96C91410A0E2C613837868F1735724BE9C7C6DF056D38F9D687976682C3371889AB07AB868A06CDD17990903BFEED835C0C11F37877472D8F13C2538616754790AA0EE93835EA09B1E0EACC031C7CCC75149D371E5483959F36FD851CA996ED82AB4E3A989F470A02684E7D1ADF2594F65C0D7CFCA8EA6C9FEE988B5E22E7BACFBAB60708525FFA9A00390E0AC108A321209445C78418BEC146BDD2407989B6E3DA4586EDA9DA1078FA00F7D9A0023FC5BB4D8608BF3D2F6733462C2F62876A4635975E95F34B77D36A880A04B7ED8F2C5FD754E4EA4921482C9FA54E1B5DBF3CB63493D6F639AFD02E7AA60A02C33F31D651A3DBCC642037304F035EA8F6705B52344D0DC225CDCDA3BC5A24980",
"608572AE1387C04E15D43A0073CFDD20E1FE7086A055F58A9F7863274175ECE4": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A07496366BF942C665E84FCDD5A948A6B63DA9E03CE5EEDE3EEFAF1FB776AFF551A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"E12CF5D922C575B97AD805E52452EFC9607536F30FEE267C1CDCC08E3874E22F": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80880DE0B6B3A7640000A021A353A407D4160308BB39B09001A7984AAB9A12F1D7A0408BE60850A4E9BEE7A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"96DB48BE872E9D39F6F700998B265F133427ECD7947A2F15F288A5C21FF49627": "F90211A0447DEE683C34DF0CE0DFCB4FD1677FEFD84481A226D5EB2665CBF04B43F7B9CAA0D90B471D135B905B78FA44A779B67539B33D467E22621CCEEDA74DD057D5494BA0D7E619A89827295EEB8D032816A2FD038825A8F16997EBFF4A888430CA339C0CA032E16F6792438603EB73AE6B4247EB8D9CFA35A040C91B38E381D83A634E1AAAA0C35808BF9DF9BE7AD7D4252F720E096867A5214E725A6E683522D5393A10611CA02F86C33967DB8B1EAA2D7DF9CACFF6A994090EC351CE871B579C5D4FB8E23702A09FEE673880FF393E7C878D141FF6B8C22AC4E68D82F9059314915D6AC0807B60A0EE61208AEEF66993F48E8A849950E50583E75D74F54E4F10A51F554E87A88929A0CBE36136C8C2FE36FC718FE0CADD13C59949F6AEEF9E7B169910055ED9AF3A9CA07E9D938823598536FAB6B6AC9D4F401DA7F74CC53248876A0BA0B8B471817806A0B155DED0CFA1FD9B212068F335CDE2A8CAADBAF4B3CDA7B51A87C6EE5C2E5FCBA0CFDFD9A694CCFE41583410A3B627435821880BCD7654C1898172C94AA10E3A23A01F5CCEC99BF55CDE11DE31899FF2A74AF8CB30B2D72C3DDD1DB0BEAFA115C680A07B9C5A04E7DA4183D69621D56E12FA11398948B4AAFA9612C453BCC38C4942EDA0542DA06941623B6BC92B3764025A82FCBA5681C29800A30B5238F2618C81A5ADA0F2488BD7CE87A3D4ECF74209B86F4E7C12A17171516C86FD1586F970E6C7B70E80",
"607E4B938DE06D9619979E4984B3C25C1606F9FC7CD26FF3F0C2BDE86F151091": "F87420B871F86F82907D8504A817C80083015F9094D001962B8DC39C5ABE7AE30832574037E458794A880E2D02C59F650AAC801BA0DE07CEEE75299D6DBE88C8D778CAFF5D0757E7C5EB1E45F4B430EA70E4C9FBB6A022F356134F9C30C659C73C1453D7D74B73CBE46705D263A688B63F07213E32C1",
"BC5FD043FF92512240157F484A1CB631816EFBD68B9DF3D3638775C86115411D": "F90211A01C518734C5F4A4A835723A16B9746527D9A0AE9CB5341D225DE7E0CBFCAD8AF5A0B7E9B24E042B7D39FEED9AD761B859A73F2DE4269CF7CF804359476E9FBA23CFA0E8405CF23F27AD383626DB6B56DB4AFDFBF9E24B90B9B7297356DE3DC082C4A6A0676BAB30C15647B42922472630692A644DC29FA101C96D2257D9808420D205A1A04F2E237B775B899B0017DB3E50484C3730A96AF2602670C817144B1B19115E36A0851A663D2A1E91C55A9A72A31574A9126B3CCE1468FABAF5D41D423704292BE4A0E75AD9D9200E251D8BC7446A4B6AE21C7C356F2843939DF226F287A20427D08EA01AE48438FA7258964852B55ADF4E70268C847C0F849A3F180BB98E3D4B43B5CDA06D2868DE61D5BCEDC988315769B086C24AC10D9A0E18414C3D1CF6730C7717F0A095A6FFA72BCAFF258CA52467B3F15142498C0E2A67AE35702F19EB0157328947A0AE01880E0F688085695326BD43AF2A6678F118AD5E0194453A6D857094414319A0DD55D04438C637006A928D811AB84F220780AFE38AC164925C5AB72EE8A49382A0D760F93547B1E20528A28BABB5A20BC9867FFE4840059EA27D00697F72F9D5FCA0B80641C21BF86B89094FC7DEB8633E9306F43D45EDB9FA2597BBD911B4EFAA24A077410D50F81DA681ACF3E766A23D769290EFBBE6E1C2F445070D315F886042AFA0942FC8B618E83951EC11C90F068F3BDE246C9017D125DA5ED7A7E15634264C1880",
"CF92BC33D5429529098D166B428E1471CCE4B4DE57CB9D9817F37DF7998F934B": "F90211A02582D987B3B41BB04347D424DC3EC964CBB084221A0721ADAD3672256FA75B58A0D7E47B059A8A58798FF47B32FCFEE778433E53255A2C8DDC3DFB04055CE07756A0961902A0F542F4C190FDFEB9952FF1D0C44C0D859A57CD36B552151207DAA9B7A0DA3D98CD70B9F79DB5030BF86FFBE9C142D519A722607A19AA32A2D5FE7C852BA0EF136931E2B7717CADA2897A6D7D347C752D1E53736CE13D0A515407D97502CCA0455BB97BB29A3DF7559367760F63920EC8C4191726E88E7066BA27BA96DDA61FA0881FF337F11AC96D577A8F5B6E9BD81C775DF5169CE61F54262F0D0360FAD16AA0D20AA1CCB5FD9C72E32020FBA7BADEFA7548866785A101C2D61315EE4639D1F4A05DF1F040FD94D60257D840170F8A6ADB40FEF44686E065DB3F5D77BE09389171A08ECA1697198663549420500F42F10CCC8CA26A2CE93F5BCC5DEFF3FBF2C996B7A09275A57A7AC8B03BAAC50A12FF322A0EC10FA5C7250C5B0FF04376DB4A618DEBA0540599E6165CEF638B6189F9FBD953C122A79F8588B7960FE8F76B71C3815A62A04CD6DB7505C4280200A039E0CBE9922D49F59013D7982C25A0A37E3DFC8BF020A07BE01F402710F10F897BF410647864D82CC70050E0CC1B06073E955E1F54EAAFA0B323C97DC50FAC8CAA4A4E9F3ADBEE3F6C73DAEC3E9187B529B8C1A87256BD50A0BC79C0B579394F48DE90C17D6A7A7C8DE66C3443B64C801386AC4D0D12F8533680",
"3272AE4B009F5EC1717FAEFA6A6D88ECF61511B7CE5DA7FE89A6E6F213BDA9FF": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0034075DBF704D156BAEA9672D3BAAF531F073FDFBCD87A3302A4767E2F7ACEFCA0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"A8D4AB3CB91601542C704B85EBEF61CC2A23B06151B6F9177753016E4D21B8FA": "F85180A031E26BFF056B10632EEDAEB546E9F6093A4A0457D12E23A4A16D1D3916E18BEBA0951ED0BB935CEC9149C90A10F09DB807F30AC225E614382088181F06A34B3E2E8080808080808080808080808080",
"3C2A4A5BDEE1D1BF8C08FC481801A748DD2005853389E6B1D4067CAAA9CD7C6C": "F8B18080A0C3C0A601BB66CFD1860ACCE8D1C826EA2EA554EB39A2D272E2DB38E4797822528080808080A06CCDEEA6D6AC74A6A90C05CB824762354A3AD0D5445D6AC9A16E0A39EE49992B8080A0E16C7F78F40CA4378CAD4C020F4B34D5CCD6C5DC90E2DE3E2366F37DC521534E80A0CAE2AC209DEC642E435F89CF30A4B442F948E30FAC076A04D4F64D3D2630344BA0204B8085A0EF02B36D15F9A39ADF018739BE339A66D8AF29C4BA84235AA3588D8080",
"E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566": "F90211A044EA323247F7F062F378D15D91C5949555A0620C617B39A9D3FEDF1A6F3BA8E0A00B952F818BDDA46BBA612D7FF251AFF8F527001EF4C6E4A6B46AFCA22E073CBBA0E5EBFF14809CB3DA1AFF72AF945EB54EF00258F746A8BE7641DDEAB1F4C850D2A07877261E31738FAF94FABD28D570763DE8A1B4DE2135D6B4EBFCBB021D9C38BFA0DC950E8C319C272EF55AC4C8295570003E5AF40090DCD2FFE6C4D139B919CF62A0857A06A13BB99DABF107E8D1FA6596C70FAEB7C42CBB99057C9222B65AE57D55A048EE4497DF7CF758DBE4FE1FA205B05F1682429BF224E0D24E3E2E5FEB84C0EEA0F7E2844DD62A8921F17EC6544416F594D594492D9C14D3B0E06493D6DCA4D3EAA0EC65648B4579A0169ACB30E89DCCC0FA57A8A9DA29C89862F55AECC8284E2F33A0BBEDFF20E684D26D16134BA5A159D750FAD80AB6C4015AB86BB78934680D0762A0587D817F3A9E68A44FD621F8BBD4CDE2C146C489951C9AD63BBC833FD84C2530A0ACA0A9FF3773A0F0A2094A732D80CDFA090CE0CCB91C3EA24B787C0828B6509FA0640FA05B06B8C2CF88044621B584AF30072B21402105D802498359A05A7BAA47A0BB8DF2E9B4AD24AE3E3CE85741942049662719DC13046B09428E00655B9EF39EA0AB9239504B47F445FAD902B81DADA86946D9AFEBE3E78CA7D3B3D20D60C88555A03E49EA629CF82EAF312516C8202D9109490E044098CE726C43C97BBB672F425880",
"8504B6E248E5B727201C9F46B152A05B3E9138334B2EA56E06528F4C74C48209": "F8718080808080808080A0B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B58080A0793AF77F7F02394C883BDF943F61E6917C4E0994AF0641CBDC0CA4A10A864C6F8080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"C75A23A1ACCF76785385FBDEA984836303D17263E332AFD6C50C18C6A4E72CDA": "F901F1A0C980FC34F438E6B14622B920F91DC5FBC0FDAEAC80FD9C0CD041BEAAF5C7513CA05CDD4A7B43788D042B338AC50F0C75CA5A73EC1F06277C1C580AEF5A4FE8A018A0CCE08540402CFA7F120A8794ACE94FB231044616F088EFBB39082BE383FB15FEA0FF33D8629501901CFDC59EC655A1A90F62DF33042871E38A1002F32025CE02B6A05523AB45EC7CF529F4616019A8D6B3CA1BF0EE08025202B261CC5AF50AA7EF73A04D4E714E1BED9C9ED345BDA58E4E32AE564B6F38FAB64DD037F1B1516929689DA0D16BCF7BFFB5C1DED720496239C30EBE71BE9BF861DAA0D6A31535E2EB1FB6E0A0E3A235239997B13000187C4F9D44C2B6551E06D1113E3988EDC0CCEE3789B805A0EEA380DB6D37C55C5946E675BECA27EC21C20301A0B1C16CAFEBEB4311FB91E3A01F315DBBBC90D7E973CBE32369161B142BA746622171747D70652796D4824501A0A1F8A793E2EFB8377BC0339D679C85D4CD11F0D758A17E6B788BD963D9FB0C8CA0C6315EAC5754B33A614C6757B1CCC2D8362902102E5CA9CDB705B5E90E222722A02409E24F8FC764BE852DE4A3608917327A327DBB9DA0CDD5A4F20FDC11066521A09E504C65027857046D11D5DB3C2A4A72F022121934B062CF29828721D1D2CE3BA077A53EE606B6ECF14CD351AA63BC61876C0131418A88C08166EA7D20B0122A0F8080",
"FA80F3EC834C66B1E8D3BE41AC7B5B3193463A2522294615E103CA5263FA6C7A": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A02313012C8C50E4D7B8C09E3E9D6C80AD0659156A45A11E1F8C86B29B9D1DA817A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"7496366BF942C665E84FCDD5A948A6B63DA9E03CE5EEDE3EEFAF1FB776AFF551": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A030F2E97F60AC34F7E63747F43CAAAF0CB755A229C6572AD4897EDD30CE48CFB4A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"AB9239504B47F445FAD902B81DADA86946D9AFEBE3E78CA7D3B3D20D60C88555": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A09FACDAEBD12ECF7B7FF3E45AAB8F389666E52B79C593C7CC83895D5D354499A8A04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"1CDCC338FC9CB9938B4BE9F3DCCF2C52BD24E66BC9A2078B03B46DC2456C5401": "F90211A0AF97E132AE092E881A26AEDD56CA1E3F73C493F01D3B22185DC9AB2F7404DB27A0200EF6ADC7858F7AC139C6BC63A93012FDAE1F3CA3043DDBBF03FE53593547B5A0944A2720A13F14F77D92B73DC975EBBE7A3AADA2C6B65ECD7C6F357F9B009FF8A034C6643EFCB9CBFBEAA306B0A1E946BC5C34BCC9A4438684C42C918D795B58C0A0ABB333D20823723EB28BEA8A4F1DA3FD171CCF6DB739C142A43BED89C967F21DA01BDE81CB691BB4FD7F6435B5CBD87E335E714C1520C3C6E787F3A1A49E93BD9DA01AF476CA41A87DAAF2DFBCB6E2605909B5AC5C21BE6BC50B65E667EBCBBFD96CA0E067701C11F021A02A3DA9F79C88E2D7CBD7EB0B4E10224B51265352D34A3E9AA0DB1059CA151DA5E923EDAA719E5DEEFFC5699ACE507336CA91C25FB7BA7AB55BA02C251E605AEA5AA9A111996BD23D324E3EA2B1DD6431EAB383A02A4A062CFB2AA0D84F3162F7B47ED830936362E6BED693BFD6BEFD46B074F01601E572D9F95D1FA0BAFE8A1605703DFDB4DA53798AEDA73F7B8D36905130F31AD8554F51C43A9AD6A0161372CC99CA5CB12141229D20841E3F9697E24AF1B4EE3D10F8838D780AE7F1A0D70C28667617B85035ADEED1F2BE07680B0614B7CA1DDD0302EA10F6CF063B45A0329F16AF3FF25DEBCD868483ACD1DD8969B2F727A0A8F1ED32892A2E9964CD83A09189441B472F960F3BBB43C5E0A56CA4D80AA9FB91F32FFCCDC652136C50B89B80",
"3D5D46F933E5A84B2B32DA8D0B4ED3C4875D2EF205A9FBFEAD4D1EFC68B2BB75": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A081F74963431B1D7A0876105FA606310B2F3F19C1D7D2A8BD6EDBEC33C7D35C74A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A04BBBD8D04AE91DB649A739AEFCD03EB0438423F64695602FE67E011A37726886A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A09614AB3B2C856B6E66B329B8A1B3F46B88D05FAA5B55C1F49A6C04DE5A0BBD15A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"30F2E97F60AC34F7E63747F43CAAAF0CB755A229C6572AD4897EDD30CE48CFB4": "F90211A06113BF7805481DDCC64AA7081817480B9AD6392342F73C2BDF6AF4F899C1CC6AA024DA8D34EC5490F8CCC02BAC27D3C192CAFAEFF17A0379F2B44C5833551B66DAA0EC3D82D17A4427CD720221231C0E60132191CBDC8F82B0270C9DF5C38E25BB04A02F6536094625913C53C1C3841A4831690ED61187F81D174066C36DD36BDEB107A0260B6339D8E26DF17E49025B869467F4E5159BA8DE1994852DE200B72A4D9D22A0BB2716140A4CF488704E804A79728CDD1FB6295177532D011572295F25AEFA24A05327608B885B0701CED2716AA241021139744D4B967BE753FF485113F43C3C7EA076D8D0F305244D75BBBFD4DB5D28D5A945785CF067D6B8375D116939E5A045DFA0C68828EFB2DBB67F55989089A29B8B2DCFDC51F7B06B7D9237F553CB1952B9C8A01A06A0230A16259D74F47EE96EF7911CC67D73285FD3A97851E0923314E7391EA03DAE3B31903F9F43D7565D4A93FE6E0C8FE644C5FD2C7F480EE2B65E62F62A8CA0FF90C9DE8B58AAC6DD21ADBF8AB87115798553FEE309A921E52DD04C4142210DA09AA4370D3B0C424002C5B4C08AF9A555CA8AD75D426CB644090C144B7F8190ECA00B736A84C469A1A97DC5E6284991AEA9C6EE56C7335131C711CB5CF5FF15FA1AA05F7D3AEDA3AEBAC1A4424A8D3E57254E9395B6AE7FDC0C5AA2D8F6A63B89CE8CA02FF0C2D5DE45FCEA82CBA44305311826B615799167CA6E50B3CDEB4DD1530B4F80",
"FADB50FBC02B1F23382A8F33FF8B0445B1E83487895239791844C96A0C7F4811": "E2A0200E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF602",
"EA645F781888829001B1EEB38C789CDCB693FC5736DE3AE5A58467FEA3D13B20": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A08250E3CC997121CC2F4FCB5FE252F6267B25B684047BCCAAFB5D409CEB9D6BCDA0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"C03326620DE4E2662EF8704A0AF45F2F5F4C69122D84D446F25633D57ACC4A35": "F90211A0AF97E132AE092E881A26AEDD56CA1E3F73C493F01D3B22185DC9AB2F7404DB27A0200EF6ADC7858F7AC139C6BC63A93012FDAE1F3CA3043DDBBF03FE53593547B5A0C706E2C3E5E8045EB34BCEA7207F16ADC6AB2C5820346A1A3DF331C754B3AC5BA034C6643EFCB9CBFBEAA306B0A1E946BC5C34BCC9A4438684C42C918D795B58C0A0ABB333D20823723EB28BEA8A4F1DA3FD171CCF6DB739C142A43BED89C967F21DA01BDE81CB691BB4FD7F6435B5CBD87E335E714C1520C3C6E787F3A1A49E93BD9DA01AF476CA41A87DAAF2DFBCB6E2605909B5AC5C21BE6BC50B65E667EBCBBFD96CA0E067701C11F021A02A3DA9F79C88E2D7CBD7EB0B4E10224B51265352D34A3E9AA0DB1059CA151DA5E923EDAA719E5DEEFFC5699ACE507336CA91C25FB7BA7AB55BA02C251E605AEA5AA9A111996BD23D324E3EA2B1DD6431EAB383A02A4A062CFB2AA0D84F3162F7B47ED830936362E6BED693BFD6BEFD46B074F01601E572D9F95D1FA0BAFE8A1605703DFDB4DA53798AEDA73F7B8D36905130F31AD8554F51C43A9AD6A0161372CC99CA5CB12141229D20841E3F9697E24AF1B4EE3D10F8838D780AE7F1A0D70C28667617B85035ADEED1F2BE07680B0614B7CA1DDD0302EA10F6CF063B45A0329F16AF3FF25DEBCD868483ACD1DD8969B2F727A0A8F1ED32892A2E9964CD83A09189441B472F960F3BBB43C5E0A56CA4D80AA9FB91F32FFCCDC652136C50B89B80",
"8ED7B7D446722508C58F23299689D7F902C2408257D6211096D68B608C44FBCC": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0435AAA27C23DB3BED7065BC33035EE60A3A137478F773BECF37C690416EFE3BAA04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"80B1B3AA2CA78C4635A4133740F50BDFF5FF2EE8148F3E1659EBC7324B98E06C": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A0A47D0814DD8024437439B79A216ED115750C34B4E5D9F79C4E07CB9A66D72E47A09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"963E1677F80175D7EF5BBB1B58113A00ED7EBCF35C33DB6D9C32AE3C92172CB1": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0FC6DBB5C9F854AF2D6D8CB274F60B3E77D2D86261F88CBE597BC2BEC320C8A34A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"885F24EEBA1197CBC46FD80ADB4E3DC8056EA8C615760EC23BD491CD8258B060": "F90211A06AB1A7E60FB3D26C22761082322FAB13A4C361927B6F14B9AD97E6BD3479EC79A049CF9038D44250337A2E3FB9DA3388C8B9811B2FE97DE6C46F7B9660018CFF17A029E625C12EAE6E00290EC0254F3D423515FF811323F07901E9AA6215B3E6381DA0AFA93AE3D07A9CB383905F9C949D61420C8DF20B021B8E5E52120D04FF030B09A0507DBB6F763F1650A5914250D78403E24A8A45C485D23A14A1D0E535CC92028BA0A1689DBCC2F7AE4AB57806FBBCE1FBACADBC4AF0077A10265A75FA765DF3C08AA0F6F6F2213BF23D7914EE04BCA50F87CF58538D68813211CF0E20FADC19C0FE12A03500A6705E2D904B9581AEC2BCC504E89FF69B9EF7ADB6FA9B6E6D0FA8AF90ADA037BC77F861ABCC9663F11F0EE152CAE7AC850495B27A2ACC7C77120832E48C46A09291D8B9F1EAACD406D7055BD0808C791263F36A8450323934D4D8D0B7A6DC67A04C8FCFE8347F67D5B8FCA1E1A3B91BF864859ABD3A124DBA6CE45BE98B353ED0A0F2538016AB5F9C7721892D7A52227DAB47A09927379DE0AE9D46534143DDAE21A018B67FE305ED7D2BD31B124EA82193963EE09D778D5FB070561FBD6FDF461402A00A8F6428DC062DB618885D540FE2B5FC7E6C6CDE7F99B51BF791294E2315FC55A0691002CEDAD9C57C66983903F7ECDE9BE273B8163FD1086F3F832E934CC339EBA0F303CD2456814C4B6D90B742D91E6D37FC9E88AB351146E7E081FCB45AD6189480",
"267F1914245CED633F1945AB8B09526E226B83D5F9FF4C4097697A8322DA1796": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A0E43B6A16C96F6989978FDDD740AB5FF0FCCE450130D379BBC1C3B2EE6AF817B3A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"0A56C67C79D0995CBAA116D282DD76DFCE15378A39A3F10EC554FC5C78C0A157": "F851A0EFC9B77E67E082D5B77BC6BFD7007572DAE40ABB20D94892D9FBDAD55ED2778C80808080808080A0884345191165C6320470BD59DB6890CF4CF82871995429C52D4195C76B4896D48080808080808080",
"AF428917EC39C5FDFC89CEC6252E002930B9F211476B1E5130CA78ABC1A000AE": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA035FA0B8460515DC2F1D528064812BC20A3EC083DD7FD646695BD00661CD7BDA1A0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"96E1032F49C84763F4D3931C0B633DF30782DAFA2F9727A8D2B8EA4BCF446212": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A08E15599966B73EA1CD49505605ED56262890B76CDB0A8AE330955C202143C4E6A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"2F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0B71F4EFD309C8E5AE2405C86901472554DD48215D6D9B79EBB88F1E6904A4592A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"D04C9A5C806264702C4033E7156EEFD23F2812821FC3C0BEF1F4260905BA63E7": "F87120B86EF86C058504A817C80082562294FBB1B73C4F0BDA4F67DCA266CE6EF42F520FBB98880E37AA283A15D400801CA0F9A845763D8D2C5FA66C6F9ABB0DA57542E3F6DE1561A1EA1CFFB44313650111A02559B25BEC2E36F320753ADAA388A72DC6843BDFDAD1E87EE267C30C96BFC93B",
"2BCFEEF130E3A3C037F103EC65AAAB61BE3BB9E7335A1EC1CE19EC0B8CB8B3CE": "F89180A0138E57CE2A0697F664A2BB34D8788A2A604CFC04DD940212D84ADE0859C8EE5CA0607E4B938DE06D9619979E4984B3C25C1606F9FC7CD26FF3F0C2BDE86F151091A0D04C9A5C806264702C4033E7156EEFD23F2812821FC3C0BEF1F4260905BA63E7A02401C9757B66183E978A3623C0AB501DB222024C3EDF40A889A3AE2FF2F53F98808080808080808080808080",
"0400": "A05BA6AB3E387681B5648BBEE04BBA37888FD523F978473EF758BDEA91EFBA3E11",
"3ABBF739D5275267E97A88937A745488F40B23E742A0D26E1988706D5493020B": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C808829A2241AF62C0000A0C9E230D7CEA765A3AB2B6CE627E100CC47045D1A2715F06A87CB3D49D1901309A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"6C86ADA19E4542BB0CC04008CF3C6E8376CFC49D02F7399ADC752D989B361A75": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A09D4B03EAC9217165039AB2FC8A231EDBB1AB01C6A582FDAD1872940C907691B3A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A09614AB3B2C856B6E66B329B8A1B3F46B88D05FAA5B55C1F49A6C04DE5A0BBD15A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"BFF282E152923BE920BCA84DC4DCD7726F14A0968473AF64CA695620F26796FF": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0A1A86191A33928C882D813C9116E86F4B226DB57349977DB7D55A5A602919619808080808080808080808080",
"96D8A854D62C19102CAF4233866E46573931B77A66D308D7C9ADDA9D50A1FF52": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A01ACE5C09CC29768824E1AEA87029C20F2F7EEAF5BA8BFB8BA75BBFF45F8E9361A09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"6D6B392CE4D317E78FAC04570CE9E5EDBE51351DB011C7953F0C34242A575469": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A035E4B2E06E98E87F1F4D5EB485A6BB2DC71CFE42818590E229A5499F508C3428A04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"507DBB6F763F1650A5914250D78403E24A8A45C485D23A14A1D0E535CC92028B": "F891A0443635227CC3EE7F472DB1149C3F8103DF4B74AA6229A9099C09C79CB38C24F48080808080A0762320217942EF12BF2F87EC7B6E1496F4DB214C9DA110AF53BE11E8D9054A93808080A099B0FEB3BAF2BCEA12FC682AF003DF8A09B270BF611833EB4D2F74E6D35E1F0E80A0B5C3A694AB0ECA2AC148CF61FED715ADCDDB42290A429C02E7B3F00E5743615780808080",
"06F8B553FEF0DC26EB2A56EC40A7BF1B6DF23E96BA469A133B9BB463281C467D": "F901F1A0114368DFEF1E4D5692DB4DCA2A8338B07E1D161D5D09318355F5EDE4417BADF4A05EED7C37478123B924C8A0DA7580D5750A705DA7AD47406E3A69F0F0062883C2A054C0E86731D6C7EF09EF6FCFBCEFC71EEE20FE3FCD2181C96D5B61EE9B1BC727A016ECD3CDF1F4097925DAE0CE0FD87E6B02646F730F4EFBD701AE0D9184C04E41A0B0ACE3C024FD9AB88F4B8CDF68D74D75E77842F1282F6DC75BF168EA26F30A49A000BBBE813625E34D75EA693A524935C3075CE4A2C55510F1C1C6E68C10ACCD68A03DE6FBEAAD83C8F482E3EB802079010D4EA2B028AAF225F4BF0BD9DE96C91410A0E2C613837868F1735724BE9C7C6DF056D38F9D687976682C3371889AB07AB868A06CDD17990903BFEED835C0C11F37877472D8F13C2538616754790AA0EE93835EA09B1E0EACC031C7CCC75149D371E5483959F36FD851CA996ED82AB4E3A989F470A02684E7D1ADF2594F65C0D7CFCA8EA6C9FEE988B5E22E7BACFBAB60708525FFA9A00390E0AC108A321209445C78418BEC146BDD2407989B6E3DA4586EDA9DA1078FA00F7D9A0023FC5BB4D8608BF3D2F6733462C2F62876A4635975E95F34B77D36A880A04B7ED8F2C5FD754E4EA4921482C9FA54E1B5DBF3CB63493D6F639AFD02E7AA60A02C33F31D651A3DBCC642037304F035EA8F6705B52344D0DC225CDCDA3BC5A24980",
"38AF013E3B0ED89E5F1F7DF22B7E3A97013071B3116005A0D6934DFCB80C479F": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A096E1032F49C84763F4D3931C0B633DF30782DAFA2F9727A8D2B8EA4BCF446212A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"0D1E2D36872684B7AB0841978D336C41DD5362AD7F2F0210F72533CE4F3C4F6C": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0710E385939C393B6976998A88808C8B0143F6AF418AAD455256DFECC7329D0A6A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"884345191165C6320470BD59DB6890CF4CF82871995429C52D4195C76B4896D4": "F9013030B9012CF90129A0B52525A244FA9D0E486C1E6124FADAF580E44E9699EFBBAF6FA4D96623DC857183012367B9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0",
"445C7004ED0AF57CE4AFF8EA0B3EBFB3EF906DF2453B3B3073D77E8BDF103261": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A0084714686AC19492659863329EEA109D70E4A19EB088D8811378C2371B6D771D80A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"FFB2618915E031F4992C3E3601C23F3049A3D8FBD6551C0D8AD2B71928B1F5DA": "F8709E3D8E6D616D58BB44A2A11F62FB6B71D6A6183F80C10441B26C9305904C05B84FF84D8089037D8CF27D70A3BAF4A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"00BBBE813625E34D75EA693A524935C3075CE4A2C55510F1C1C6E68C10ACCD68": "F85180808080808080808080A0581F7E51C95AC2D943226A96B77D93E59BFA7C86F7E57F985556E763699FED0780808080A04EBCB0F0AF289690C863C0466CB0CFA5D686F1E1A2430E1DF7713A3C84B5C71B80",
"9FACDAEBD12ECF7B7FF3E45AAB8F389666E52B79C593C7CC83895D5D354499A8": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A09C617F5BB06ADD93335941FBDFD7D454EB3F38B87EC9C9CA44F9D86691D89830808080808080808080808080",
"A2C815CFE5FCE8979AEA8ACCB1106751FEEB46E03F9B52D0F71A24B3D5F03363": "F86F9E325B6F2A6454934CE1CB4082282358B64DE7647BEE12B64FB5F486159E04B84EF84C80881BC16D674EC80000A0C9E230D7CEA765A3AB2B6CE627E100CC47045D1A2715F06A87CB3D49D1901309A0EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835",
"ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4": "F90211A06A3DB8A2459E5BE07D01DCA05ED3704196A74D30C1C4BD7B72DFF419E7875835A03A06E4E4BAA5A2A923883402A88779B4CB1213CEAE576ACDED2AC4CAAF5E5075A011C310B1835436351F3515700486974538E696D459D4C57ACD74F09CBA2468B0A03F93C3182D33C5251D4918AA0D255E1D4DF7F34192323297437A5E8C668A5ADAA07912F8F634476A179342260E7C1527052CA2ABDF5E01B31A20D4F13EFA4CAEA7A038B4D1820A8CDC136ECEC8EBB70AA500BF74ABDD32560DA5F23C78401626B072A096DB48BE872E9D39F6F700998B265F133427ECD7947A2F15F288A5C21FF49627A0D0840567DE4ED17ED90ECF9EF7E0527D208DC87C009CBF2C32BE525EB1F87FCEA0A5B27B4D02DC95EE7226557032F8875506C0DD83ECCD17A4B7D44B4A20580F1DA08221CC59AD9C32F6B629752AF077C59AF20F095EFCE64348FF8BBABB830AF36EA068FEECFA8424D680AF77DDD872CD71B8AC8B8E311320F2DF3F9AA6A8701A3B96A0DB2C8E0B6E333DCAFE8AC6840EF10A3BF1A7B24770093DD9D53BDB5E3A8FCA71A001083A73F1721A065C08186411D6D3A96C7B36DB40B1C0151ED0BB1DAC92544BA0066E13AA6C438B39FFA5DD99068684BFC664DB2510DFE0AE455DA11FCFE0E0EAA0B013D4D75B44D8749C0CFABFE963B55CDE33B44F352272D24CE540859978CA23A07652A0F8FB7A1B47698E49E4E077A84932C5B39EF92CAC6559DF6F88427E377880",
"8463C5F680490CD4BA2C43E71A610DD22DD13A1B1DE0099895041676A1ADC27B": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A03FAF13404830BB089F30980DD9F440393CD1FE72D83A924EDEC6E302F8EFEA4CA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"EDDA3EF79063563280F5411092E759D781642C860F76CA2A2D052A050146FEEF": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A0961E90FAC75E7C667B3EF806F516B3F561A3C43CF55584C3251A90966615D9A5A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"8D5EC39DFB950FF4A6ABF986504AC36F908DAA2251F1D422574798A2CDF2075C": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A084EC0F2B8FF16B103266502E73DBF4B0D75EF0FD7A742BA6FA7DBD5781CF6DEAA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"3FAF13404830BB089F30980DD9F440393CD1FE72D83A924EDEC6E302F8EFEA4C": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A0349ECC6ACFC29E6E286414FAB31A20DD8B1C5FDB5278A278F23D6AF5F546EF0AA0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"72001C40EB3FD844FB714ABCDC0935CDE18F1746986EC73531EA873189727349": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A0A2C815CFE5FCE8979AEA8ACCB1106751FEEB46E03F9B52D0F71A24B3D5F0336380A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"9D4B03EAC9217165039AB2FC8A231EDBB1AB01C6A582FDAD1872940C907691B3": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A0EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA0B6F91BAB210CF2E2FA552EA5AC85F58F08F90A8F173FF3E25EF4E273E8DAE405A0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"81F74963431B1D7A0876105FA606310B2F3F19C1D7D2A8BD6EDBEC33C7D35C74": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A0EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA0823D0D0D095CAECF6D3B0770EA7D9C9BA3DD88A70DF01ED3142DB00821A3E8B7A0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"42C3C676E160B0BDE4D8FA5186F4B5D5FC065F6CFFB11106EBB8695815F722E0": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A07FC0452058D253D0A3B99A04271C6DEFF9A107F822B9047B4A0DCF96801165B2A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"F183C3380E62EEA2FCBC619658C5574145864CE95E08BD3AB3A4E763714AC57E": "F90211A06AB1A7E60FB3D26C22761082322FAB13A4C361927B6F14B9AD97E6BD3479EC79A049CF9038D44250337A2E3FB9DA3388C8B9811B2FE97DE6C46F7B9660018CFF17A029E625C12EAE6E00290EC0254F3D423515FF811323F07901E9AA6215B3E6381DA0AFA93AE3D07A9CB383905F9C949D61420C8DF20B021B8E5E52120D04FF030B09A0C4105C218F20E496863D0D174AA3A1E4C70A5EB9CB83B43D2DB481F459BB49D0A0A1689DBCC2F7AE4AB57806FBBCE1FBACADBC4AF0077A10265A75FA765DF3C08AA0F6F6F2213BF23D7914EE04BCA50F87CF58538D68813211CF0E20FADC19C0FE12A03500A6705E2D904B9581AEC2BCC504E89FF69B9EF7ADB6FA9B6E6D0FA8AF90ADA037BC77F861ABCC9663F11F0EE152CAE7AC850495B27A2ACC7C77120832E48C46A09291D8B9F1EAACD406D7055BD0808C791263F36A8450323934D4D8D0B7A6DC67A04C8FCFE8347F67D5B8FCA1E1A3B91BF864859ABD3A124DBA6CE45BE98B353ED0A0F2538016AB5F9C7721892D7A52227DAB47A09927379DE0AE9D46534143DDAE21A018B67FE305ED7D2BD31B124EA82193963EE09D778D5FB070561FBD6FDF461402A00A8F6428DC062DB618885D540FE2B5FC7E6C6CDE7F99B51BF791294E2315FC55A0691002CEDAD9C57C66983903F7ECDE9BE273B8163FD1086F3F832E934CC339EBA0F303CD2456814C4B6D90B742D91E6D37FC9E88AB351146E7E081FCB45AD6189480",
"944A2720A13F14F77D92B73DC975EBBE7A3AADA2C6B65ECD7C6F357F9B009FF8": "F901F1A0988F93A3FBC63D4B15DCFAF248C857EECB735A2CE027644CE382E1A259945B47A093F2E1C5BD414C950B4BE942BD1DFD4ED0F9E37FB2DDE855E011A463AE609988A03A38897E73E53753897A169E7FC91766257439D799B8082CC164C0DC827C479EA00A69157725728D6D0E30E5A8395AD0C0BB1687DA434C6A5E7742A51A6395CA6CA04EE1944DA4C1DE19F2302F9EA03C1023F72A6F54C680609AAD4C09F82F426477A0BDDDA7CC57A26C131738ED1A6E2D6E2833A7A68EA9021427342FBD7DB2C4FECFA007C7C70A5B703AF319B4475FE485F8C4122ED8791B7E11C7775FC8958D0013E9A09A9DF02A9E3C29AFB7E11441D976BCD091DED94A087F6E4028CF2A4F1918F585A0C30C8A124CB2E60E484447C8A0B13A6988722A845B75227A997B57C55F7B4A10A0B1B0512FFE34E4D15D855E4ADE5151FE280D6092A0D452306CFF76A6429F4F89A05D4238276794CBC1C9E35A5200BE3AD1CBF8C188AE988F29A44063B31BD786E2A01AFE8BD3D2F5BF2A109BF013E5E36D5EB1030B06A486189F38937B92C5C8578FA03B4DD618950E9C0FF3F8CC7E95655AA9F04C629047140DCC047A5A5187AC2350A0F15602E15D0B7ABCFB5E846A1CF97EB83E977BCB317F51AEFA0492DC9DEA960DA0711D4C70272EA1460E0819D2B45F29982068F11ACF1F4D7CACCAB61C8B92D5518080",
"914803A3A239FF7760D8347503578196A4589C0AE58ED59DE276BB49057E33DE": "F8B18080A0C3C0A601BB66CFD1860ACCE8D1C826EA2EA554EB39A2D272E2DB38E4797822528080808080A06CCDEEA6D6AC74A6A90C05CB824762354A3AD0D5445D6AC9A16E0A39EE49992B8080A03EACCEAB9F98D5A9E189CC0202B77699BDCAD1B614D62043405AC2C00D9FFAF980A0CAE2AC209DEC642E435F89CF30A4B442F948E30FAC076A04D4F64D3D2630344BA0204B8085A0EF02B36D15F9A39ADF018739BE339A66D8AF29C4BA84235AA3588D8080",
"21A353A407D4160308BB39B09001A7984AAB9A12F1D7A0408BE60850A4E9BEE7": "F8518080A04FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB288080808080808080808080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"3267B71B9DAA9AA5FF4FB6060562A15E74EDAF043ECD4550485C09815D2DCED5": "F8749F20D22C718C78D005078A67495F59893D2948FE4F8796794437901123E3E90DB852F8508307314C89FD7BDB5AFC0C6C86E2A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"C0F6379959230EA0A989483F496579E4F8D6AC7E66854E68C7B154142979EF4F": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0AF428917EC39C5FDFC89CEC6252E002930B9F211476B1E5130CA78ABC1A000AEA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0D23682648F2B166284F080C545481DAF401F6812890077CB9D4494A4A76917EDA09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"2460F4719B9D265C1800FDDFA3AFF0278BED95051BE5E9C1EDE0B631EC216318": "F90211A01C518734C5F4A4A835723A16B9746527D9A0AE9CB5341D225DE7E0CBFCAD8AF5A0B7E9B24E042B7D39FEED9AD761B859A73F2DE4269CF7CF804359476E9FBA23CFA0E8405CF23F27AD383626DB6B56DB4AFDFBF9E24B90B9B7297356DE3DC082C4A6A0676BAB30C15647B42922472630692A644DC29FA101C96D2257D9808420D205A1A04F2E237B775B899B0017DB3E50484C3730A96AF2602670C817144B1B19115E36A0851A663D2A1E91C55A9A72A31574A9126B3CCE1468FABAF5D41D423704292BE4A0E75AD9D9200E251D8BC7446A4B6AE21C7C356F2843939DF226F287A20427D08EA01AE48438FA7258964852B55ADF4E70268C847C0F849A3F180BB98E3D4B43B5CDA06D2868DE61D5BCEDC988315769B086C24AC10D9A0E18414C3D1CF6730C7717F0A095A6FFA72BCAFF258CA52467B3F15142498C0E2A67AE35702F19EB0157328947A0AE01880E0F688085695326BD43AF2A6678F118AD5E0194453A6D857094414319A0DD55D04438C637006A928D811AB84F220780AFE38AC164925C5AB72EE8A49382A08BA6868BC6E5ADF8E3D6914A69BD98F7A1472BE2F3C02EA163E59C7671998B6BA0B80641C21BF86B89094FC7DEB8633E9306F43D45EDB9FA2597BBD911B4EFAA24A077410D50F81DA681ACF3E766A23D769290EFBBE6E1C2F445070D315F886042AFA0942FC8B618E83951EC11C90F068F3BDE246C9017D125DA5ED7A7E15634264C1880",
"1C6FB19E1DA45324AF849A4715613B5844EA87FCF395D93627DF9D4F4E96FE6E": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893EC193FC97674011EBA056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"8F13C32996B8D6BA7B9B24170AD1C897CCF3D288C3F4B4F7795E11159155DEC8": "F85180A0FADB50FBC02B1F23382A8F33FF8B0445B1E83487895239791844C96A0C7F4811808080A0D873BC1B0CE2143DE69B2F95495ADB686222E8CC8CCC96217B8369ADCF1FD6D68080808080808080808080",
"E3FCC729605EFBA27968346C8109CCDBBD3DC575A993E2F19694EB91C4EFB538": "F86F9E3FCBF80EAF41A822939A58481153DEEC5EFA1E62B78B6F64E608C872FA08B84EF84C06880E393B3E8A6E6400A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"F03223C4F9C359334D013DD455DD6DCA31E5364B27F10D545579D931A9844C8D": "F9013020B9012CF90129A03D5D46F933E5A84B2B32DA8D0B4ED3C4875D2EF205A9FBFEAD4D1EFC68B2BB7583026B87B9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0",
"E43B6A16C96F6989978FDDD740AB5FF0FCCE450130D379BBC1C3B2EE6AF817B3": "F8518080808080808080A0B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B58080A0ECF4DAAFFFD0AC29D19B72CDCF23457164343E7279B6A424A93F749CBAAD1B6D8080808080",
"1EB560332A0EB4D51661FF8DEFE6AB7C3E564621AA58CBA16A580E73AA839B63": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"6ED3890387A18775471F6CE46CCD075A79CDEB28015233D82A89F579B163CEE5": "F851A0C3761834E2F993272736966EAC1ADA9F9478B981BA36B8D410C3CC8F804C95CE80808080808080A0E07B7A1B1EDDCE798A5A0AE27AEE294D2EDC4C4906C01BB33D2490AAD39CE2E58080808080808080",
"7CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464": "F90211A06A3DB8A2459E5BE07D01DCA05ED3704196A74D30C1C4BD7B72DFF419E7875835A03A06E4E4BAA5A2A923883402A88779B4CB1213CEAE576ACDED2AC4CAAF5E5075A011C310B1835436351F3515700486974538E696D459D4C57ACD74F09CBA2468B0A03F93C3182D33C5251D4918AA0D255E1D4DF7F34192323297437A5E8C668A5ADAA07912F8F634476A179342260E7C1527052CA2ABDF5E01B31A20D4F13EFA4CAEA7A038B4D1820A8CDC136ECEC8EBB70AA500BF74ABDD32560DA5F23C78401626B072A030037303A7BA8C1EA6796A99C133C2B016DA912C3BE111BD5A0C37C78E139C73A0D0840567DE4ED17ED90ECF9EF7E0527D208DC87C009CBF2C32BE525EB1F87FCEA0A5B27B4D02DC95EE7226557032F8875506C0DD83ECCD17A4B7D44B4A20580F1DA08221CC59AD9C32F6B629752AF077C59AF20F095EFCE64348FF8BBABB830AF36EA068FEECFA8424D680AF77DDD872CD71B8AC8B8E311320F2DF3F9AA6A8701A3B96A0DB2C8E0B6E333DCAFE8AC6840EF10A3BF1A7B24770093DD9D53BDB5E3A8FCA71A001083A73F1721A065C08186411D6D3A96C7B36DB40B1C0151ED0BB1DAC92544BA0066E13AA6C438B39FFA5DD99068684BFC664DB2510DFE0AE455DA11FCFE0E0EAA0B013D4D75B44D8749C0CFABFE963B55CDE33B44F352272D24CE540859978CA23A07652A0F8FB7A1B47698E49E4E077A84932C5B39EF92CAC6559DF6F88427E377880",
"8250E3CC997121CC2F4FCB5FE252F6267B25B684047BCCAAFB5D409CEB9D6BCD": "F8918080A04FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB288080808080A0B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B58080A0793AF77F7F02394C883BDF943F61E6917C4E0994AF0641CBDC0CA4A10A864C6F8080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"E8E427707BCBDD6676DB6CCC8152B2DF4E042232EE8B8DD91623689C20925828": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A0EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA0CF92BC33D5429529098D166B428E1471CCE4B4DE57CB9D9817F37DF7998F934BA0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"78BE21DD90A34101FE08A0E7C5E5AADEB0D437696628A6A1CCDACFF9953B9E8D": "F90211A0F7B0D3DFCAD41F143554A658DCADAD3212A3D30C962AB41E331F473FB9062A06A05C0754ACBA09681388571F87DDD8DAF7E3D46B2A46BF4A2D5410DE9309CA8802A05B8A30EC6C293AFA1CE958583185D3A384C1FC16852D75F80EDB05C1A38FAADCA08F7B80C3B34069E28F4DCB1A39B3C1243A9BF3009DCE1C0F9FFAB2F6A80568D4A062002948A7B8AEC5388F4FA4FA21F40443E72BF8350B6EE3901D912B6311E120A0EC897B2ED8C4E5AF259D7B391BB248853D67A38DF1F56236FBDBE142DFA3A5FDA0929098327FECD5DF6E6C4971720D7E02E0C5EF80C593D4E4137AFAD21D8C6337A00499838D443F464FFC99F5783F0A559DA32779D85A4A4EC0861D978A6149C088A013C68FC2E55145B31012213578792F7B984A36CF1ACD6B0E101B61F6DDB69075A00546CE4AB417BD758BD4071AE5742E302C7967B5C24FB209C5170C0AC7AF92BEA0AC96926616C6CCC426334A727AB6A78902792528DD6E8BBF6D191084F1247671A0B077DC12093025EA35747D4C469FE541092F3DF2F2D5B4CD61F59D3E58409C1EA0E133A23B2CE246727A74651E3E1DCA1F60870CD3573ED5955EA2B7C11CB52D33A012D26DD27A8CC1FCFB1A3F654D3F63C83AB6267F6AAA7BE615FD69766F7B85A7A0BD9BA635527B04A98EFE57BE0181D2011C6419B8BF5EC59E141FD36E52C24788A0E9035DFC8DC8E6362D6CE371ABB785BDAB451EC16A012FE966FE9C08438B70AC80",
"D618806B80212CDCBF5E3F2F309FD74E83B0D42376F7EC7C99A8BB4D5A23DAC4": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907D893ECFC5E677506F5C97A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"005BA6AB3E387681B5648BBEE04BBA37888FD523F978473EF758BDEA91EFBA3E11": "F90218A0A0CDCB8EBD1E5A7ED2975A9D27F74C4E6F3A7084467E33C893047AAB15486920A01DCC4DE8DEC75D7AAB85B567B6CCD41AD312451B948A7413F0A142FD40D4934794EA674FDDE714FD979DE3EDF0F56AA9716B898EC8A017B9BDEDB77B2EA6C0429B03528A85D6C5B41AF46C748013DEC140804BF54E50A0CB1FF7E1D9C50537ECE0475DA907EAE87F1B698B1CC747BBE59D6A9FF2C50F8FA002E5ADA570CC10B9988C24BB9C0D321BDFDBCC4CB41BF529D0D91C830227FC0CB9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000861AA2932F944A8314E3028347E7C483026B87845716F29E98D783010400844765746887676F312E352E31856C696E7578A0369A59133FC3FF19AF27A1736014E25BCC14540357F46B2E499D32D762858C4B88080BC775A2C6066A",
"F52D81384DD59E6444B6530C2C6CEE4A4ADB2327B30AA0D6B0B8BB4B0144F488": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A07CA999B559A523488AF53AC55656F678CB1C86C2E6C9AB8FBFB523B07D6CEB88A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"06EE4A613385FF3455B98CABCF1E4E31D5CA18CC259C7E76C6E5AD9657A3B95835": "606060405236156100355760E060020A600035046325EA269E811461008C5780636068955714610139578063AF769EFF14610146575B610153670DE0B6B3A7640000341061015557604051600160A060020A03331690600090670DE0B6B3A763FFFF1934019082818181858883F150506002805460FF191660011790555061015591506003904208610095565B61015361018660025B34670DE0B6B3A7640000141580156100B0575060025460FF16155B156100D657604051600160A060020A03331690600090349082818181858883F150505050505B34670DE0B6B3A764000014806100EE575060025460FF165B156101C557600160A060020A033316600090815260036020526040902080546001810180835582818380158290116102FA578183600052602060002091820191016102FA91906102E6565B6101536101866000610095565B6101536101866001610095565B005B670DE0B6B3A764000034101561018657604051600160A060020A03331690600090349082818181858883F150505050505B565B5050506000928352506020822001805473FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF191633179055805460FF81161560FF19919091161790555B60005460FF161561035757610357600060006003600050600060016000506000815481101561000257505060008051602061061983398151915254600160A060020A0316815260209190915250604081208054829081101561000257908152602081209050546001805491935060039160009190819081101561000257505060008051602061063983398151915254600160A060020A031681526040812080549092508110156100025790815260208120905054600180549192506003916000919082908110156100025752600080516020610619833981519152819054906101000A9004600160A060020A0316600160A060020A031681526020019081526020016000206000508054600082559060005260206000209081019061036491905B8082111561035357600081556001016102E6565B5050506000928352506020918290206040805193840190529183905201819055600180548082018083558281838015829011610188576000839052610188906000805160206106198339815191529081019083016102E6565B5090565B6002805460FF1916905550565B5060018054600391600091819081101561000257505060008051602061063983398151915254600160A060020A0316815260209182526040812080548282559082529190206103B5918101906102E6565B508082141561049157600180546000908110156100025790815260405160008051602061061983398151915254600160A060020A03169190670DE0B6B3A76400009082818181858883F19350505050506001600050600181548110156100025750600090815260405160008051602061063983398151915254600160A060020A03169190670DE0B6B3A76400009082818181858883F150506001805483825592525061048F9150600080516020610619833981519152908101908082111561035357600090556000805160206106398339815191526102E6565B505B8181036001141561054457610544600160005060008154811015610002575260008051602061061983398151915254600160A060020A03165B604051600160A060020A03821690600090671B7A5F826F4600009082818181858883F15050604051732179987247ABA70DC8A5BB0FEAFD4EF4B8F83797935066470DE4DF820000915082818181858883F15050600180548382559252506106159150600080516020610619833981519152908101906102E6565B8082036001141561058457610584600160005060018154811015610002575060005260008051602061063983398151915254600160A060020A03166104CA565B8160001480156105945750806002145B156105CE576105CE600160005060018154811015610002575060005260008051602061063983398151915254600160A060020A03166104CA565B8060001480156105DE5750816002145B1561061557610615600160005060008154811015610002575260008051602061061983398151915254600160A060020A03166104CA565B505056B10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF6B10E2D527612073B26EECDFD717E6A320CF44B4AFAC2B0732D9FCBE2B7FA0CF7",
"FFEB2070462E9B3AE114840E586DC8B30C14A1C3F78895C4B0F33DB58AC2BD18": "F85180808080808080808080A0903E56C58B7AD72C1EBB51BC24E726BD64348BFFAF8AD75CD69446A201AA85E480808080A04EBCB0F0AF289690C863C0466CB0CFA5D686F1E1A2430E1DF7713A3C84B5C71B80",
"B52525A244FA9D0E486C1E6124FADAF580E44E9699EFBBAF6FA4D96623DC8571": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"69684BB95DED8A102A7FE66951379728B6F61F1A09970359D760D58D53B42A46": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A078BE21DD90A34101FE08A0E7C5E5AADEB0D437696628A6A1CCDACFF9953B9E8DA0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0D4D8B4A38189A9A6599305DD2458316063A413419BF18FA535AB442D76C2E3C5A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"05290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E563": "80",
"40E1D2BF3A52F50BCE7D94949C0D5F6D500D7BA495937E5B0CD81528029900C2": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0199808CEABE3797CAC3F614AB9D79543FDED178E2DFBD0CE5E18E613F62EFC21A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"0A69157725728D6D0E30E5A8395AD0C0BB1687DA434C6A5E7742A51A6395CA6C": "F871808080A08468B360BE6BBE959AFBD46D42A98D90359466807E04428BFA3A5457F23D770780A0ADD5CD515FCAFA17E6323F88D045AAA105AE9837EA2C6AAD8B5837CB1258E9438080A015D06F6D9F91F2B3EE2E50AD456A0BD8088B1899D079D74BA88224472A4130CD8080808080808080",
"7CA999B559A523488AF53AC55656F678CB1C86C2E6C9AB8FBFB523B07D6CEB88": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0466FD4EE33B7DCABA3F959E1EEEDA5CD417A20BD439C3A937FC65DEC733D520AA0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"E7D4FD6123D856EF53F048E83AD4A46F7A75ACCE57AE81407FDA42DA55EFA2CF": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A0BD2B8FCCC681487B72A003BE9AB456E8F2287D53554A15C59DBB27F3C17CF8BC80A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"476939F917BE7F673C2A3D49A32639F28A4BC344286A507BCF6DADFEAA4822C6": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0BCC49050355790904F1CD53E54FB4C46A423C35B27CEF7D41461558F660E8B11808080808080808080808080",
"18D839CF9FD49D89103791AE713013EFEB799F692E28DA3DF9A2F97D81174A3E": "F90211A0095959665C78D5AFA7C9EC7E68C830F7150A3BF0263DD838A4A4422C49133F92A0163A037FF4781F3006527CB115BD7A9B98D3DE9A525E10F40BE8F894B8C6C9FCA028ACF5E7B7DAC6CD5E73A6B4F21D24945D80EAA5706D002A03A25474CA417964A0B6690DDEA82E777B9ABC3D73B0ABB64DE323D8F8854AAA917AB55D882F559D54A050C573F21CFAB33D0F6128F194ED2D494A4696DC267740A6D6AB88E35D934CD0A01321AFBD1E7F6F2D8D5377B5701BEE4E27DE254A3BFF649ED2A6BD7F1578C587A0B7D190E5FD4E7556D0D13365AA89C9DB0915061A2006D89C5CC40FD8253267FAA0545C497BB1AF1B7DAF1FC1ACC9D302E40C5A3B4A5655C6C5A6202AD251B4D238A05EC585962450E3CF44C39D467A21BF0907660C4DE6026C8E0014274D443E74AFA04B034F87657ED21A90F495D9E4248DCF136947AE98262C82282083AD0F2AE733A067F6F1E5E9B84B334658380AE128727A9806AC9E6687E5CDA06B495A80E3BA34A0135585232907F7D1658A6C20AA67C1C01BA45F3A4DF2511983E978BEEA69FAD5A030D68D82C33933998C559EB0C042732C6691ACD5EE024450F9E14880E4AB7393A02CF85556E492BA31C9B4041DB934EB8843B429D9408204A2BDDA13E8B8490D48A07FCAE615ED228BCEE3E36A0A41AB43F5F2EE28BFC64E2A993A3A4A9128F5C6FEA042A094DD33572048293F2A17CEF4E8BD2DC1EB8D082DB3C61FBD4AC05DB0DAC680",
"7FC0452058D253D0A3B99A04271C6DEFF9A107F822B9047B4A0DCF96801165B2": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA028B7791729C9253835847BF4370D7F52EAC432C346E44C2D9D41AD27C75D5064A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"951ED0BB935CEC9149C90A10F09DB807F30AC225E614382088181F06A34B3E2E": "F9013020B9012CF90129A09803620F2800A2DF7F0A56601343B941F03B40A67E7E223EEED11C5C2EF057B18301C777B9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0",
"A1A86191A33928C882D813C9116E86F4B226DB57349977DB7D55A5A602919619": "F8729E349AACED683B3CA8826910182E66444F16DA575D9751B28A59F44E70D0B1B851F84F82907E893ECFC764742F3D9C97A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"66C4D90A2563BCF1E8B8150631EB3C080C3D82EAF241AB7EA4F559DE9F66DF14": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0B2F32F0B5EF4A6FB6D7AF413F82155F8A25DEF1D352C6949D8A4A0069EF6F623A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0D3C41ABAEA04AC98FB5027A2E3E1E74CEA4831E1C10B1B5E37142AEA05A7F5D3A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"BD2B8FCCC681487B72A003BE9AB456E8F2287D53554A15C59DBB27F3C17CF8BC": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C278861C61FFA3DE74810A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"F0BA7A5AC5303E9BF3E821D9603F743193B8B13C520E65AD563636E426AFA0B4": "F90211A0CB6D0BA36B187F7FC2207E1C8A2439C8400C9F54D505A23CA394E107F6C5D184A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0DC0B563E206D55F4142861CCB34119566163F1C90A29D13B97437181A7B62B76A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"59687C1DF4ECF635C50FB0E35F7AB5306EF4A5BE50ADD1A828C2D77E74EA62D9": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A06C1BD575A4F6B6A1462D3162EC8D585FBA088A497153EFD773658FAD92CDC9E7A070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"B45ED4D7715B27966AADC2C57B78DED03D97261DBFBEEBA36D11CA539EF383C2": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A083D4BEF85C7551C4646D079D38B29731CBAAD45A176A01809A4331E5AA4705DF80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"2313012C8C50E4D7B8C09E3E9D6C80AD0659156A45A11E1F8C86B29B9D1DA817": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A08654051C4F02FCFC4108B05EEFE8CF2051ABBCBBCBDC5A95329701CDF93909C480A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"7BD3ADD1129A1404ED80C95CFA5A31B47A1AE3BE12D9DBE5BA87DEDE88497785": "F87180A096455EE1D857C707946176FA5A0637D94A029274CC114CAA338517ED6E5EE05E808080A0D873BC1B0CE2143DE69B2F95495ADB686222E8CC8CCC96217B8369ADCF1FD6D680A0FAEBA75BD2C4E71C642DBBA1FDFD73AD15B16567AAA17524BD7ECBFA4B47B29B808080808080808080",
"87CA2F6088132EA990817037B27015EB09AD6DF95BF33CC637598CD9C1969A44": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A0DA461E61C107CD278F170309ECDB9B9C2B8E815BE71F19CDBA9C56F995446F84A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"B58E9EC2A436919B5D65A8C9EE9604D05E7511DEE26936926C78BD486572F988": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C27886F9A6EBDF1D4D010A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"821E2556A290C86405F8160A2D662042A431BA456B9DB265C79BB837C04BE5F0": "E3A120290DECD9548B62A8D60345A988386FC84BA6BC95484008F6362F93160EF3E56301",
"CA74E981966E9CE01B1C1ED836AB1E0B5892E28543DFEC7049BEE0D67EC66B6D": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A04F33B480F073533172BF07B143D642EA954E42DAA80DD3D8F3C92D182998B79BA0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"35AEEF7CA362868EBB43DA5B3081CA23B62C879F2EA01002A3AA37CE6C51D376": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A047B4B4E4E7C21B08B75E7804CC3F37A17599BE3BB2C2D2247FE2AA2E7AFD48EDA0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"AA4D739A353A00387C73BE98C6D52B5F18641B5E7599A85C4FE1376B0A0464DB": "F87180A0138E57CE2A0697F664A2BB34D8788A2A604CFC04DD940212D84ADE0859C8EE5CA0607E4B938DE06D9619979E4984B3C25C1606F9FC7CD26FF3F0C2BDE86F151091A0D04C9A5C806264702C4033E7156EEFD23F2812821FC3C0BEF1F4260905BA63E780808080808080808080808080",
"57A0FBBB64E72F09E5840E67C444579F1E1D1F472466DB860984010A40A359E5": "F90211A01C518734C5F4A4A835723A16B9746527D9A0AE9CB5341D225DE7E0CBFCAD8AF5A0B7E9B24E042B7D39FEED9AD761B859A73F2DE4269CF7CF804359476E9FBA23CFA0E8405CF23F27AD383626DB6B56DB4AFDFBF9E24B90B9B7297356DE3DC082C4A6A0676BAB30C15647B42922472630692A644DC29FA101C96D2257D9808420D205A1A04F2E237B775B899B0017DB3E50484C3730A96AF2602670C817144B1B19115E36A0851A663D2A1E91C55A9A72A31574A9126B3CCE1468FABAF5D41D423704292BE4A0E75AD9D9200E251D8BC7446A4B6AE21C7C356F2843939DF226F287A20427D08EA01AE48438FA7258964852B55ADF4E70268C847C0F849A3F180BB98E3D4B43B5CDA06D2868DE61D5BCEDC988315769B086C24AC10D9A0E18414C3D1CF6730C7717F0A095A6FFA72BCAFF258CA52467B3F15142498C0E2A67AE35702F19EB0157328947A0AE01880E0F688085695326BD43AF2A6678F118AD5E0194453A6D857094414319A0DD55D04438C637006A928D811AB84F220780AFE38AC164925C5AB72EE8A49382A060E7B7F34CD15CFFEBB996D1F357ABE44528279FA8B37CFB7F1F505A665893C0A0B80641C21BF86B89094FC7DEB8633E9306F43D45EDB9FA2597BBD911B4EFAA24A077410D50F81DA681ACF3E766A23D769290EFBBE6E1C2F445070D315F886042AFA0942FC8B618E83951EC11C90F068F3BDE246C9017D125DA5ED7A7E15634264C1880",
"32268D3A610FAECF7E263523F917AAA179183C59A56419D44CCAB33FF87CD69C": "F9013020B9012CF90129A0AA2BAE2A5A5479E195781EE24FE1CE50E6E8DE25C0839AB5B0A17FB82ABC2CBF8302197FB9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0",
"F8B2D39AC21409A9FAEDD125271D6AF836662973363A23A9767654928AC9E231": "F8918080A04FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB288080808080A0B435BB0F45DD19B8887DEBB909BBE09082EF845D471487144797723BADCC31B58080A08F13C32996B8D6BA7B9B24170AD1C897CCF3D288C3F4B4F7795E11159155DEC88080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"6F1F27F5676DEC7A3995F9ED83C30198341296ACEB2A7EE2600BEF7740A1A119": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A072001C40EB3FD844FB714ABCDC0935CDE18F1746986EC73531EA873189727349A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"581F7E51C95AC2D943226A96B77D93E59BFA7C86F7E57F985556E763699FED07": "F8709E325D8BCB57BD0A8FA674E4FED3A158CD5C7A2B20CF48D634F2F095378035B84FF84D0189017A813B1F970E1138A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"8089AE854BF42EAEFF13BF8E32ED479DDA1C177052565A841627CD87AA017217": "F901F1A00C73DED10D875E104C19C2CDC90F48F43711F5918739EC9F01648E720DE04673A0C6F1F250442B542E69C6315BF5BAD886B43DE6E0C80FFDDB8BC29FD0EF9B5D0DA0F268A6D802C7F8637B284826280DA7DB9F92FE4C1C2B0B40B8B57EACCB5CF1ADA00D658F9171CD0BD81E3C18A547114DD430FB0597A56F94C40AF31C4B682558ADA004A24982D514D7F6B6D21A2E361B0F4102B104CBE19AF28C8532550672E2DFEEA056BF3DFDE97FB5E4FAB992119411F189A15053F0C762E8AFC64C0FF0D9E2FEF7A0ABF2D337F223D007080B33E0422984DE96D220B2F221A14C94B3FDC5C142FB27A0668AA46AFD8B3E5F51B6554CE2165498D84B5DE4B43E42518D3D6EA98E2D6846A04A6418984C064C28F4CC3982A35C4DDB9EFB5EB4D1F767B57D4E4AAC98356F30A06C0C946666842E841AFDC1E0A9A2D0851CBD9B3B2B39271DDCB2995AC4F03492A0197B48EF4AAD2BF4C3912A0D7C9F95F8A1CC56200BE0716D6016C01C175DC85DA0B38E9E7FE80DF6F1A05694B4098AE66634C1FB098FE301A577368F8D603AA93C80A0340A76B64382DAE5A0C4C424C4060DBF8B1C699D9B477A659A0250722486314CA0CB131A7CB5B5475495DAF953CE4A423A6BDFE2D3384BB475471B5719C8025D9EA0C18E32248A5C45DC010DD48EFEB4CED3A102BE41506BEFA48EED3D2960DCC3FE80",
"793AF77F7F02394C883BDF943F61E6917C4E0994AF0641CBDC0CA4A10A864C6F": "F87180A0FADB50FBC02B1F23382A8F33FF8B0445B1E83487895239791844C96A0C7F4811808080A0D873BC1B0CE2143DE69B2F95495ADB686222E8CC8CCC96217B8369ADCF1FD6D680A08976B9918B3E568108C345D4996A206A819C97B481492B88FE2361E385A0C6C7808080808080808080",
"73CDAF825410DB33B84B2C0F6F4002F4BBE9B53C4C9AD99056F1E62CB38780E9": "F8718080A04FC5F13AB2F9BA0C2DA88B0151AB0E7CF4D85D08CCA45CCD923C6AB76323EB288080808080808080A08F13C32996B8D6BA7B9B24170AD1C897CCF3D288C3F4B4F7795E11159155DEC88080A0C987968526645F98E2A77747405B19A590425DE304F781EEA95E7FEE7A18DE398080",
"668AA46AFD8B3E5F51B6554CE2165498D84B5DE4B43E42518D3D6EA98E2D6846": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0524AB71E61E4F5B3C2B56583EA507582FC0FD3081B233819978C122A5E2B3892808080808080808080808080",
"455BB97BB29A3DF7559367760F63920EC8C4191726E88E7066BA27BA96DDA61F": "F90211A06AB1A7E60FB3D26C22761082322FAB13A4C361927B6F14B9AD97E6BD3479EC79A049CF9038D44250337A2E3FB9DA3388C8B9811B2FE97DE6C46F7B9660018CFF17A029E625C12EAE6E00290EC0254F3D423515FF811323F07901E9AA6215B3E6381DA0AFA93AE3D07A9CB383905F9C949D61420C8DF20B021B8E5E52120D04FF030B09A04A39581DE3EFE69CD181DCE97F5D7A240275AC425448A42C526CF4234D2969EBA0A1689DBCC2F7AE4AB57806FBBCE1FBACADBC4AF0077A10265A75FA765DF3C08AA0F6F6F2213BF23D7914EE04BCA50F87CF58538D68813211CF0E20FADC19C0FE12A03500A6705E2D904B9581AEC2BCC504E89FF69B9EF7ADB6FA9B6E6D0FA8AF90ADA037BC77F861ABCC9663F11F0EE152CAE7AC850495B27A2ACC7C77120832E48C46A09291D8B9F1EAACD406D7055BD0808C791263F36A8450323934D4D8D0B7A6DC67A04C8FCFE8347F67D5B8FCA1E1A3B91BF864859ABD3A124DBA6CE45BE98B353ED0A0F2538016AB5F9C7721892D7A52227DAB47A09927379DE0AE9D46534143DDAE21A018B67FE305ED7D2BD31B124EA82193963EE09D778D5FB070561FBD6FDF461402A00A8F6428DC062DB618885D540FE2B5FC7E6C6CDE7F99B51BF791294E2315FC55A0691002CEDAD9C57C66983903F7ECDE9BE273B8163FD1086F3F832E934CC339EBA0F303CD2456814C4B6D90B742D91E6D37FC9E88AB351146E7E081FCB45AD6189480",
"C9E230D7CEA765A3AB2B6CE627E100CC47045D1A2715F06A87CB3D49D1901309": "E21BA07BD3ADD1129A1404ED80C95CFA5A31B47A1AE3BE12D9DBE5BA87DEDE88497785",
"1B9D179B0F2BC9F7F55BB5930893D6121F4C2D031BC1507ED13AB96AB64101C4": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A07BD2EC3E62D7298B5DD3E5D9D9E7113F2B31A526ED02733B12C471848406240E80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"00A0CDCB8EBD1E5A7ED2975A9D27F74C4E6F3A7084467E33C893047AAB15486920": "F90217A0CBE79064C75B0589E571FEBD00A1A603219F4373E0F779C96937B1D482A05F0EA01DCC4DE8DEC75D7AAB85B567B6CCD41AD312451B948A7413F0A142FD40D49347942A65ACA4D5FC5B5C859090A6C34D164135398226A0EE5DF3FE26C0CB16AD8EA555E4DAF6AA596F389FD13959DA8E49897D9604B84EA09F1420A6083B62A5A53AEA1609F85143D657040B745BBA6EA15C86613DFEA63CA08FD959B66A0FBC4A360A4D078BF1871901447362D10F8DB390771BFBB20EAA85B9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000861AA93D7EEC048314E3018347E7C482A410845716F27E98D783010306844765746887676F312E352E31856C696E7578A0CE214FF333B9FDC5652DDA90A4223E846C631B02B6C8A4FFA2BA9F6FF39BF77B8848CF85634F19109D",
"640118DB46C50B79225DFFC3BB40294002C76C63A8B69E203FBDCB51D3F35281": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A01B9D179B0F2BC9F7F55BB5930893D6121F4C2D031BC1507ED13AB96AB64101C4A055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"02FAEA90CFF0346746A96D220E14C8D6856802E95E6B06B8027B8F50D48997F8": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0D668561AD7A4DBD70AF2104126C06D8A57B01FFB6B528D0CD215AB71132847EEA070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"B5948F9B4313D9452BC6C6F2292198E87F663DE4C269530D026EC0259AF2D086": "F90211A0813107267B2CD2455F8C9C0D73D7D4802A1E10277096CB5590A091A4113FD2EFA0F8C992570061750F8F397D402631B8DCD7A966C7173E1B893E4D4868C239A5C3A0C7814EE81BE54921CA2A011BBB8DD692C3F25C2A751D149EADCDA3E0B5BCC4A6A0A4770A2C3CDA4E32D46A02A0D0255D9294CED91826851E56D4F0766889B96359A08D3AD727FF251D5061C5A43C8CEBBE25EE1ECE2C9F6D94B57DF1A6990520D53FA06C71DF8BC3E1EDA164F8F5B50D5D81768F8F660971B336ADEF9842CE59765891A0309EAB30451B73C3C25E3F1E37C49FDAA113DB3BD1B1DC3E5E352278B9030700A0830806CC87DA347BE751A427A13EB01737003E3CCD0FF67BE2FE21A3645BEFF1A028EDCC2F757F626CD60BCDA10BB3A34D3CBCA987FCDE42BC248FCC6EABDE8197A0D9B6B54F49E72EFE4FBF4F9267CC347AB9A7B0DE45D38076F657C5A41DF3917EA04FA5A2509026F4CB1B65D14F20D6D85E2239420C64BE82308BE0BF284CB67026A01F2784FF1EA394DA2F7BD282BE14D18C6A3339EFD2E5F5CEA16D4CAE7E024DB5A0A949F16C80F916E958B66412B2E15F1E9CC6CE9288591385CE6B6B85C45BB652A0064125612CCC715F8A62D7EE60EED2E2CD752ABCEAB0E19404440678A2B35DA3A06CBB08391A34B88FB54F6674045E8BD39CBFB5D607DB8801BCD6E5065AE50890A08B4946F01E4F045CE600482FDF64B4CCB7F9FEE17CC1FE3AA23069B29AD39D2B80",
"CB6D0BA36B187F7FC2207E1C8A2439C8400C9F54D505A23CA394E107F6C5D184": "F90211A05C8CBF0EBBE76708941A69E20DA484182FFC39431C40DDDF910AD02EFE6BD505A0102D75E96D9FA17159B1666EBCDAC3F6504BDA58D2D0AA4BB2D751AD427B388EA0F95C483E0C4D8D0925933D1BAB2ECAC0FF1A32A642A65E88A30592D8992B79C4A0998F4ADFD3BD6E9A226CB50262E9CDF7F0B90E3C743AA69CE76E1C4E5680EA3EA0ED6E0D08188F1D0B526BEF679AAA4B99AF59F7F97F856C007798A3DBADD23A80A0EC8AFA87BC9D730B86136A9C21F60DBE27CD9C77A4BC4CE1A35196E2C6B2FB63A0C1151924D6344D38D611D2D778FC5C82C0B22588CD848B47BDCC63FB496421F6A0AF8EC4A81D83B50D1D856CAFBA9D142B87AFE8E9A0BBCD51F646438D5ECB46B7A0AFF446348BA7A646A869EE756DB63619777571368109812890B4E00EDEDF8488A0503FB3D91903A59F1E1C622B5C065921B36B4C946248657D44C2DAFF50484A3EA094B1D3EB1A810B52A5BE467F11DEB3C16EBE259E264501AFDDB4690922CB0861A0D5ED81666337019D267E550D03D0710C671BCDF6D5A4D1E1EE5F8F11F67F2830A0C435516BA3BC7C5D3C183D448F3BC27D4BAE8F747DF45AA21BFAD2AD501A80C4A05B01E8D5218AF2C6138DC3F677C9AB632166F95737118D0C2CEA7C24CB07CD2FA078C037AD287133FAC939FF29AD28EBADE210B9462CE5A6FA0B75135B507769E6A02885C44925DF926954B5E8EF1D68AADAE93FE5F049D92C629F9A1C607D63D0E680",
"B031819ABA78F93C88CC042296DA4E470A0DD1C3726024F6CEADE88B2E1AE559": "F90211A0C487E065ED63386CF0ABE89B9D408F7CA359256473B1AC7490A75C5B577601F9A07D9F52E663CD27CA88EF191585A20EECF138200647700EC791E2C981F2AC2C0BA0F33E3357780A6EBEE3E9899BF9C87F7A2A99FCFA95FDA6478CCBBD7207893ACEA0D638C4195049EA4934DF6AFB3B75D83B12F110B70B58B2B903D7E8EA4DD828C6A0391036F52396CDB81D96E9F742A5B6D645A0BDA820E7B49CD0B304E7747DC144A09230A3334B84FF1472C9EAD0086433BF51673AD5E42208383C813281EEBCFD23A00E31F449C3452FE57879FA39106BE774FFDE6F69A1815DCE03F6092250B1CBAEA088147816AFBCA0DC03AA4307B749507946AB49D3C5E40B1C79C28848D1DD91BDA0B39A0DC286CF1F140E3501C19CC725D44BCFE5F2B34C888DE258EB40F3D22D7CA0DFAE8EFB7B6004C526A23E5ADED7B3DF3C9E52DD9488F47036AF2B76A0593531A02E696A07C34BD378715A3F380B9387BEC404B805A4F9A2879366D79B7D59F69CA0D26F957DC20DA63CFF55138083A1F5D5C958EA34424C7D54E69F9F862D3806C4A02EAD58E3AD1B3E72BC267AC07FD148B5C83F250CD89FB7FE3FD7B1124521B317A0F9C7CF2D4C4E30DF91CB12CE936A2985207E20C1BAF575E75EB86D65DD8C774AA080FC8749C53658C0EB65ABDF8AD82FC4AF5EF5A42E7F0C9A1685185B59D22C42A08DBA56AC4523BD9F450E71EBBD1EEDA1E549CC13EA3173D14024BF4732C804C780",
"2B18FC2DE4FFDB1C8FB0225DF5F1623CE650BE7AF93497B4F6E30D2040037871": "F90211A03DDF2B0C69F7B1ADFE68A274D8292BBA1E470BC275B55286072803FFD6E6D8ACA0D7CE7BFDDE393D05053B5AF32A855385674EE00DF819B7C7D9E01A3DB0941CBEA0A79E51B0416DC4BEA164B56377E4BD2A62127A1016134DD74ED9211EC4B646AAA0FB8FCE9BB3004C416D437A754BAE3241F1373305B3275C766D069796F2765E41A0E5CBA4A4145BBA3EEDF79A9D673C4B0CA5CC2BEAD3C6E388CB6D573A6DDAA0BCA0B771BDE50A5476D80BEB428BE01F199FA4E393A55D08EECA9129DA83061A476FA0059108C82B2F832A18DC7F5D9088D62D5CB9D3B1FE9C0684C494EB30BE3AE6B0A0EFF6E100B22BCCB7D0225B4CBBBDD645D6B6687BFA4A31663494233B64B2E3C3A0CFB8C7904CBD2579053077E714356F10E5F1AE59CEA6A386E32F91B1349F1E24A0A679EFC463E58A032EB4B92764461ABDFD002506DBDF4827325736BD29C14836A0C6A569D90A285CA02E6EAAB24BCCF2C5145A46721DDEB9AB8863AB0524CE5DF7A0759091B0B7CA00DFC26DB386879D20ADAFBBAFB6E57085A4CB8CD8E0BBAE1302A0858D5E450E2639F5318D77B840539C91A352D6C52C83E35BE72260D9822C6462A034DE4A33B9A0F68ED0C88D98CED9FCB6D7350493670FBF9185A9A49D3A3B8546A05C7796EE14086CC550AAFD0D9472E53664F92A0236EC6E2B77236CF9D64A666BA0D57A88F2F591090C477E6EFC86A55F3A4A333165EA08FF6B9AC55C1670D847E980",
"C553F7BE7B7728A68C6594D27A8FED634F0E3D1B06906F3BF586692DD7E12A02": "F89180808080808080A0DCE26601CC33FF992396CA49289E4CDD614C4999CCFEA1FF0E04A0A97BC810C9A09C9E5024A622081B5C083B10E468144E6BED485793F9808BDC97A11166A96E2280A037E3CCDCC7E689C01C8CDFE86D3C9FD1C6A8EA6BA650E1156298EB2F9C1856AB8080A03F0363C1B2CB3FD7930419D8E7831DF22860C8157367AF09D71FF60B02938CE6808080",
"8976B9918B3E568108C345D4996A206A819C97B481492B88FE2361E385A0C6C7": "E2A020B9F2095DEC8E91FCF0A19722C0F18353FE5952E9BC6D988B36AC328C0C176C02",
"B71F4EFD309C8E5AE2405C86901472554DD48215D6D9B79EBB88F1E6904A4592": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA0640118DB46C50B79225DFFC3BB40294002C76C63A8B69E203FBDCB51D3F35281A09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180",
"2710FC0BF0F68F3D6D16033A682A933547A0895B2EE5DB508F2F90E57822AE8A": "F851A045157169BEE7C6AB1E808E1D8191716F23A6A0FF7BFDC4789CDF7B9DBF877626808080A0D618806B80212CDCBF5E3F2F309FD74E83B0D42376F7EC7C99A8BB4D5A23DAC4808080808080808080808080",
"CB1FF7E1D9C50537ECE0475DA907EAE87F1B698B1CC747BBE59D6A9FF2C50F8F": "F851A02BCFEEF130E3A3C037F103EC65AAAB61BE3BB9E7335A1EC1CE19EC0B8CB8B3CE80808080808080A0E07B7A1B1EDDCE798A5A0AE27AEE294D2EDC4C4906C01BB33D2490AAD39CE2E58080808080808080",
"4C98E9E3F0731DAD25F9F50835EEBEF81BBA0C74E0108EBBC1E8DE0587E05A92": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A08394291AA2F1D003A5473C6546C4657D3F1C49F1C8D1EAF94180D8E0FC13DF5980A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"0102E3140000000000000000000000000000000000000000000000000000000000": "A05BA6AB3E387681B5648BBEE04BBA37888FD523F978473EF758BDEA91EFBA3E11",
"60E7B7F34CD15CFFEBB996D1F357ABE44528279FA8B37CFB7F1F505A665893C0": "F90211A03DDF2B0C69F7B1ADFE68A274D8292BBA1E470BC275B55286072803FFD6E6D8ACA0D7CE7BFDDE393D05053B5AF32A855385674EE00DF819B7C7D9E01A3DB0941CBEA0A79E51B0416DC4BEA164B56377E4BD2A62127A1016134DD74ED9211EC4B646AAA0FB8FCE9BB3004C416D437A754BAE3241F1373305B3275C766D069796F2765E41A0E5CBA4A4145BBA3EEDF79A9D673C4B0CA5CC2BEAD3C6E388CB6D573A6DDAA0BCA0B771BDE50A5476D80BEB428BE01F199FA4E393A55D08EECA9129DA83061A476FA03F0EAB5DB7BBECDFBC01C17B85B404F3767744BF961574375359E8995D8E4ED8A0EFF6E100B22BCCB7D0225B4CBBBDD645D6B6687BFA4A31663494233B64B2E3C3A0CFB8C7904CBD2579053077E714356F10E5F1AE59CEA6A386E32F91B1349F1E24A0A679EFC463E58A032EB4B92764461ABDFD002506DBDF4827325736BD29C14836A0C6A569D90A285CA02E6EAAB24BCCF2C5145A46721DDEB9AB8863AB0524CE5DF7A0759091B0B7CA00DFC26DB386879D20ADAFBBAFB6E57085A4CB8CD8E0BBAE1302A0858D5E450E2639F5318D77B840539C91A352D6C52C83E35BE72260D9822C6462A034DE4A33B9A0F68ED0C88D98CED9FCB6D7350493670FBF9185A9A49D3A3B8546A05C7796EE14086CC550AAFD0D9472E53664F92A0236EC6E2B77236CF9D64A666BA0D57A88F2F591090C477E6EFC86A55F3A4A333165EA08FF6B9AC55C1670D847E980",
"6DD092701AB5792278B7717E22E6C016B846637127ED291C6C622D1C605F0900": "F8B1A03995767C9823D0B3F3AFC6BE335DF0B908294781CD9DC58D8CAC8C6F647C605480A04A69D4DE7A0529286BC362ADEEBBC1AAF854DF69277A58AC53691E3FD81209D8808080A0BA1FE805A7B3C61BFBCDCC6E9394ADB3B5691DDF2E24EF1DB98DE3CD5498854A80A0F30E3B842411F54E4455C088EE27AEF9165DEC993F8351573C6DE1B0DEF80A9F808080A026BDDE8A1905B9E705C1EB585BBECE6F8F66F3036CD152AE65415EBABFF8CA3C80808080",
"24DE1593875653C7D99E076365BCE26886E04681F446A0BA8F1D9FAE5159E32A": "F90211A03A506868DD62D2472D66B33BFB18C77326D8D05F2B4C0C424EA7451312276B57A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A08119A17E04CE509EFD0744298E3FCD0A2DD32A11CB33ED4DDDC2ABAF95E94F17A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A0AF428917EC39C5FDFC89CEC6252E002930B9F211476B1E5130CA78ABC1A000AEA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA0ABC8750C5E72EF7B8031DF117B5139DEB705C3B6A39A2B6EEFD8029F000480D4A05E91F20EBBB661290AD93344FFDE56647A9C27ABB39B50F02CDD1B0B0A1E3EA7A0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A0B5948F9B4313D9452BC6C6F2292198E87F663DE4C269530D026EC0259AF2D086A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"4D4E714E1BED9C9ED345BDA58E4E32AE564B6F38FAB64DD037F1B1516929689D": "F87180A052D1D3EE2C5AD785F0289B9AF55C2B4FCD566EDFED1D5BC24711EF09408AF62880A0C5C8032A72869225512117D1DBA5EF05E46BDDCC7D652004D23567FEA87B6C0880808080A058E83573749FD7FA531EDE492EC9019E9891ABE34050EEE485202A39139032408080808080808080",
"084714686AC19492659863329EEA109D70E4A19EB088D8811378C2371B6D771D": "F86F9E3D33CB2DB6BE8DC81312EC716A23C0A99BE02D3679DA744C4570889CE7E9B84EF84C27886FA189BB3B61D010A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"0CCE39AA40E5A9C125C4F2270AEFE1426C62D6AF492806CD00850B1B6B83527A": "F8709E3D8E6D616D58BB44A2A11F62FB6B71D6A6183F80C10441B26C9305904C05B84FF84D8089038BB9F5431008C5A0A056E81F171BCC55A6FF8345E692C0F86E5B48E01B996CADC001622FB5E363B421A0C5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470",
"74B23BFD62748AADC2CE36697B892643F830D583BE268A2BB0C736116C6E499C": "F901F1A0673E846918F5D5A7315CBF4BBF4A8BC217DBD99BC6E962424E238C46EACEFC9480A0A0B391479DDF852642A360F0C902290496BB809D1F89BDE7EEEC9BEDA087A384A0D0DADB6DD2603F3922F167168001AD23F54E19CDF97BD858BABA662100F26005A0F37595D612C39275AEDE3D0900899B82BAB167F64EA78147147EF21AD0B1A442A0E0A4F86313BBBC80B9BDEA97B36539565FB6852F122D0C7E2461F38D9994B620A0E0DD54A39A9207F0248E55137C0EDF832DD517C8CD7896A0194C5923AA8C4AC6A01DE98F7F7AFA8B9E1C37E85EE857D5F18FB948CB4838BA876FE15CBDE00AE981A04771E8E4B5EC0F34BB76E916EFA53D31C8D0AEF28473CB711B013A117E3B4FCAA055BBA9E033883538E8C83A589EBBAB0C2A09B2927FE2DC6DA080ED8BA603DB5CA03714F4D08D5686DEAA8FDA777CAFD96FE8A65A6D9CDF8AFD70E4D34088FA101DA016B9FA6755937B534D90898A6579D097EE847BB8D759E22C6F0EE04C40718F3CA0C4FA9D75AA36E605D4A3C10991593237AC61857371EC88726FA1F63610F255D1A07C7DCB0B107B63A9E3F1B46F50102F36DBB8A12E4B9A555F095556EF602D3F2EA0DA722BF905D005A6CBE13A0BFC3D03FD07DD53858659C1E26135A1DF6ADDB9D1A07B42B6D88184E91D9C355598E50AC75C3600679AA798CD0AA33ADD25F851C98680",
"B9B5FFC5D5C03767222DF6F4AA9648C666A332373389DA3BC6B234C72BEAFDD8": "F90211A06113BF7805481DDCC64AA7081817480B9AD6392342F73C2BDF6AF4F899C1CC6AA0C75A23A1ACCF76785385FBDEA984836303D17263E332AFD6C50C18C6A4E72CDAA0EC3D82D17A4427CD720221231C0E60132191CBDC8F82B0270C9DF5C38E25BB04A02F6536094625913C53C1C3841A4831690ED61187F81D174066C36DD36BDEB107A0260B6339D8E26DF17E49025B869467F4E5159BA8DE1994852DE200B72A4D9D22A0BB2716140A4CF488704E804A79728CDD1FB6295177532D011572295F25AEFA24A05327608B885B0701CED2716AA241021139744D4B967BE753FF485113F43C3C7EA076D8D0F305244D75BBBFD4DB5D28D5A945785CF067D6B8375D116939E5A045DFA0C68828EFB2DBB67F55989089A29B8B2DCFDC51F7B06B7D9237F553CB1952B9C8A01A06A0230A16259D74F47EE96EF7911CC67D73285FD3A97851E0923314E7391EA03DAE3B31903F9F43D7565D4A93FE6E0C8FE644C5FD2C7F480EE2B65E62F62A8CA0FF90C9DE8B58AAC6DD21ADBF8AB87115798553FEE309A921E52DD04C4142210DA09AA4370D3B0C424002C5B4C08AF9A555CA8AD75D426CB644090C144B7F8190ECA00B736A84C469A1A97DC5E6284991AEA9C6EE56C7335131C711CB5CF5FF15FA1AA05F7D3AEDA3AEBAC1A4424A8D3E57254E9395B6AE7FDC0C5AA2D8F6A63B89CE8CA02FF0C2D5DE45FCEA82CBA44305311826B615799167CA6E50B3CDEB4DD1530B4F80",
"8200A1CE814B2BC5CF33DE391A2054D073D436EC4382ECB333DF175A19DC564B": "F90211A06AB1A7E60FB3D26C22761082322FAB13A4C361927B6F14B9AD97E6BD3479EC79A049CF9038D44250337A2E3FB9DA3388C8B9811B2FE97DE6C46F7B9660018CFF17A029E625C12EAE6E00290EC0254F3D423515FF811323F07901E9AA6215B3E6381DA0AFA93AE3D07A9CB383905F9C949D61420C8DF20B021B8E5E52120D04FF030B09A084EB01632A5C4055E7E2C67955E6D468C1209D5B0B553D0E43D31B8673CCF240A0A1689DBCC2F7AE4AB57806FBBCE1FBACADBC4AF0077A10265A75FA765DF3C08AA0F6F6F2213BF23D7914EE04BCA50F87CF58538D68813211CF0E20FADC19C0FE12A03500A6705E2D904B9581AEC2BCC504E89FF69B9EF7ADB6FA9B6E6D0FA8AF90ADA037BC77F861ABCC9663F11F0EE152CAE7AC850495B27A2ACC7C77120832E48C46A09291D8B9F1EAACD406D7055BD0808C791263F36A8450323934D4D8D0B7A6DC67A04C8FCFE8347F67D5B8FCA1E1A3B91BF864859ABD3A124DBA6CE45BE98B353ED0A0F2538016AB5F9C7721892D7A52227DAB47A09927379DE0AE9D46534143DDAE21A018B67FE305ED7D2BD31B124EA82193963EE09D778D5FB070561FBD6FDF461402A00A8F6428DC062DB618885D540FE2B5FC7E6C6CDE7F99B51BF791294E2315FC55A0691002CEDAD9C57C66983903F7ECDE9BE273B8163FD1086F3F832E934CC339EBA0F303CD2456814C4B6D90B742D91E6D37FC9E88AB351146E7E081FCB45AD6189480",
"A7EB1CF491A96A9C7C54ACDEE82BE1F14EA3DFF7EB24DED1975F41E6DF0E48C7": "F90211A00245F4D7A39E9D722A3A1AF6A74062D79C2079349D1781A2EB3A6B63AF372CABA023E3B56D3970AFD307B6BACFBC201BD7E5F9E04D21679E3F92C2FCB753EF1987A022DF49419379CB31C8C8192A8FEDF683BE0363203BB391D3F7CDCE583A32AAC5A0F25091AD4D79A20DB241E3E70FC30A16DF3B4928E6F5AAD054E27A74A59006AAA0281E78A8F5B5DE753157B085B069C3C8A5A0E78E47279E9ACDE951F59B467632A0C8812927FFCCC589CA920AE1DB33403CB371A7F832E90F28BA4E49BCF149375EA0092C0852EBFCA844462965E77A8E834826EB853039E3C571CAC2C80AF6A12FC1A08CCEB5087D12DA67465DE473C2487876355330DA5A077F3751DF3E1C7F976F97A01E75105F3F024C0C6D5334DB6BD2A143BFADAC44FD9D0379CF2A7EBAE54128DFA0E58666C6F5297F465E0760C949307DC8E563D0BD4AAA6D2C52F55D66AC632566A070E92405A8966E08994F7E4B87F6330E1E4072C6AD8B0D253958A24CEFA2A8D0A002F0A021F88E7B541170A644FAB1674E8C9E870E80663755DC1058708A6B30B2A0478D0615514195A860228A8FF074A0DB5BDABA6C75B92D1D314653BA9DAB6F0AA011210CBD19C678E32F4BC454A0B490F2579713188BA68554F6737E32BE87AF5FA0677662CE4D1BE8ACFCECC1E530E94A3EC6F2D2B11DAF0C0A2438B312A81E714BA0D50A7EA2FBF980D676CB6B472EFA76324FA0D0D1A869364DEEB0517A9A8D8BF580",
"0C770A64ABC949BC958929F46FDD47E8ED43BEA9FB2A96879ABF2E42C67B3141": "F90211A003DF694355AB8054A6923695EDAD8E64593C151ED5F2EADF089544C6790F7612A07C13681DA269AF5D8B58A0D10DA4A04FC78AAD4AD341E44F13366EEC51937B05A0BD4537374E503D2DE1E6B5F1694D8F2266307EC821E52E49D32BA529B8478368A0658400EB96E4FCF716A720E035E6DF625F4BE4F8B4763F90DEFE5D79A7D18E39A0E5863206312CDFEEA56B50F70EB22829C8D7F9EF0B9BDD07623C18C7B1D9F255A03FAF13404830BB089F30980DD9F440393CD1FE72D83A924EDEC6E302F8EFEA4CA070BD7FDD98199BEB6D66ADE34CF77A259D58A9048C07A5E38648B397576EC785A06C7F5707B2C516C9E7F3F93D03621EBF2F721F2B586F692F863D79E50A479F9FA0F727176FAE2689E051E396490CBA5C6233668DAF221A78BB6AAA5AF154CD43F2A0A88944A7AE2F8F55C760D40D3D9FAC717531329110B7A5AB89BF12D239ACD78BA001E68EF8D1B9506307AA9A63811542C6BB74A1A798456B915E3EA0780ABE233DA07CC1BD713A476071E063DB0C79450B6B4FC7BC45C8AC551C24ADB75C38F8D464A01E2CCA16E7BF9EACA69C677D124019D07EF9D9543F06E832038197CF74FD5D4DA0841E4F2C97A5FD7749239FE0527C30BAF63FBBA040085BF183F7B66291A151E6A02F8F90A468EE5120AFB967863861A8DD248618F49808494B9F816055A467D9C4A09D30514FEAC86804F4A4C0C208A6E59C5BF2545664FB810C9E2D828945B0567980",
"1AAEF8107A5927BC70D10C2A74EEDA28FA17703F6466AD127E0FDF4EF0380AF8": "F90211A04B773A1903718F77C426B4B58EF2AF8D56C9C8A2E03345262E783D17DE4DABB1A04FD31332F9D58567265245AEA7C4619E23A1EEDC13DC444EB4C305938D9D0E4CA0A1EC4F74D11B4A62853867DC915FCE8DFA6BEDA545783F06773DF4CE414A38A4A073AD436B71348098C994CC690BF1FFDFA738D1C1302E257373FFF0227403317FA03CE86CA031177A3907BF67E3227FA550ACE3C70E165A4DE45501941FD7850F0BA05FCB451B7702D76CEF97751FBB62119685DCABEA022423DEEAC5CCDE966C409FA0237D0BA40E74798383B190A3DEDECED5CC2C8FB32E4AEFD0C6E1B92DD8EC920FA06C7BB096926B0012474935B78237A5C4E49E8AE856B9D9BC360F6D8625A9A0FEA09823F67B8A1FFDF1D2049C38F128D07F57758E3F5A8B2AC8282CD115020475B8A0A813EB2CB14844BFC744FF9DBFBC86D985B78C8A24BC9D055289B2BFEC5ADFA5A0ABB7161B6AAAC115EA37CE6626216E27F06E5C3868875F46414989585609D0F6A09DE3DF38A61D8E9810715E47D43FA55700E1557A328C8B3C1566E8857D0661C7A079E367D661E1E5944F349FC9681806119F2E9053D016A793FB271D62C1BBCE2BA0DE7BE56B483D67921AE749976905FDA51B8AC85D144C3A81275D8A034C2DC028A0B8CF976C826D47ADE951C437B28BDFC76EE85B1F1FF62AA5522AD677F63EFDA8A0CF1431D571570CD74AAA3B8823F74D081D6D4905BD3AF442AE4CE43751A98FC180"
}
}

File diff suppressed because one or more lines are too long

View File

@ -283,7 +283,7 @@
"0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000060" "0000000000000000000000000000000000000000000000000000000000000060"
], ],
"error": "Invalid instruction, received an opcode not implemented in the current fork." "error": ""
} }
], ],
"stateDiff": { "stateDiff": {
@ -704,7 +704,7 @@
"0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000",
"0000000000000000000000000000000000000000000000000000000000000060" "0000000000000000000000000000000000000000000000000000000000000060"
], ],
"error": "Invalid instruction, received an opcode not implemented in the current fork." "error": ""
} }
] ]
}, },

View File

@ -87,6 +87,8 @@ proc main() =
chainDB.dumpTest(1149150) # need to swallow precompiles errors chainDB.dumpTest(1149150) # need to swallow precompiles errors
chainDB.dumpTest(1155095) # homestead codeCost OOG chainDB.dumpTest(1155095) # homestead codeCost OOG
chainDB.dumpTest(1317742) # CREATE childmsg sender chainDB.dumpTest(1317742) # CREATE childmsg sender
chainDB.dumpTest(1368834) # writepadded regression padding len
chainDB.dumpTest(1417555) # writepadded regression zero len
when isMainModule: when isMainModule:
var message: string var message: string

49
tests/test_config.nim Normal file
View File

@ -0,0 +1,49 @@
import
parseopt, strutils,
../nimbus/vm/interpreter/vm_forks
type
ConfigStatus* = enum
## Configuration status flags
Success, ## Success
EmptyOption, ## No options in category
ErrorUnknownOption, ## Unknown option in command line found
ErrorParseOption, ## Error in parsing command line option
ErrorIncorrectOption, ## Option has incorrect value
Error ## Unspecified error
Configuration = ref object
testSubject*: string
fork*: Fork
var testConfig {.threadvar.}: Configuration
proc initConfiguration(): Configuration =
result = new Configuration
result.fork = FkFrontier
proc getConfiguration*(): Configuration {.gcsafe.} =
if isNil(testConfig):
testConfig = initConfiguration()
result = testConfig
proc processArguments*(msg: var string): ConfigStatus =
var
opt = initOptParser()
config = getConfiguration()
result = Success
for kind, key, value in opt.getopt():
case kind
of cmdArgument:
config.testSubject = key
of cmdLongOption, cmdShortOption:
case key.toLowerAscii()
of "fork": config.fork = parseEnum[Fork](strip(value))
else:
msg = "Unknown option " & key
if value.len > 0: msg = msg & " : " & value
result = ErrorUnknownOption
break
of cmdEnd:
doAssert(false)

View File

@ -13,104 +13,16 @@
# being mostly used for short-term regression prevention. # being mostly used for short-term regression prevention.
func allowedFailingGeneralStateTest*(folder, name: string): bool = func allowedFailingGeneralStateTest*(folder, name: string): bool =
let allowedFailingGeneralStateTests = @[ let allowedFailingGeneralStateTests = @[
"callcallcallcode_001.json",
"callcallcallcode_001.json",
"callcallcode_01.json",
"callcallcodecall_010.json",
"callcallcodecallcode_011.json",
"callcodecallcall_100.json",
"callcodecallcallcode_101.json",
"callcodecallcode_11.json",
"callcodecallcodecall_110.json",
"callcodecallcodecallcode_111.json",
"CREATE_EContractCreateEContractInInit_Tr.json",
"CREATE_EContract_ThenCALLToNonExistentAcc.json",
"CREATE_EmptyContract.json",
"CREATE_EmptyContractAndCallIt_0wei.json",
"CREATE_EmptyContractAndCallIt_1wei.json",
"CREATE_EmptyContractWithBalance.json",
"TransactionCollisionToEmptyButCode.json",
"TransactionCollisionToEmptyButNonce.json",
"CallLoseGasOOG.json",
"CallcodeLoseGasOOG.json",
"callOutput1.json",
"callOutput2.json",
"callOutput3.json",
"callOutput3Fail.json",
"callOutput3partial.json",
"callOutput3partialFail.json",
"callcodeOutput1.json",
"callcodeOutput2.json",
"callcodeOutput3.json",
"callcodeOutput3Fail.json",
"callcodeOutput3partial.json",
"callcodeOutput3partialFail.json",
"deleagateCallAfterValueTransfer.json",
"delegatecallInInitcodeToEmptyContract.json",
"delegatecallInInitcodeToExistingContract.json",
"delegatecallSenderCheck.json",
"delegatecallValueCheck.json",
"delegatecodeDynamicCode.json",
"delegatecodeDynamicCode2SelfCall.json",
"RawCreateFailGasValueTransfer2.json",
"RawCreateGasMemory.json",
"RawCreateGasValueTransferMemory.json",
"createContractViaContractOOGInitCode.json",
"CallContractToCreateContractWhichWouldCreateContractIfCalled.json",
"CallContractToCreateContractWhichWouldCreateContractInInitCode.json",
"CallTheContractToCreateEmptyContract.json",
"OutOfGasContractCreation.json",
"OutOfGasPrefundedContractCreation.json",
"callDataCopyOffset.json",
"codeCopyOffset.json",
"CALLCODEEcrecoverV_prefixedf0.json",
"randomStatetest14.json", "randomStatetest14.json",
"randomStatetest184.json",
"randomStatetest85.json", "randomStatetest85.json",
"randomStatetest646.json",
"randomStatetest248.json",
"RevertOpcodeCalls.json",
"RevertOpcodeDirectCall.json",
"RevertOpcodeInCallsOnNonEmptyReturnData.json",
"RevertOpcodeInInit.json",
"RevertOpcodeMultipleSubCalls.json",
"RevertOpcodeReturn.json",
"RevertOpcodeWithBigOutputInInit.json",
"RevertPrefound.json",
"RevertPrefoundEmpty.json",
"tx_e1c174e2.json", "tx_e1c174e2.json",
"CreateHashCollision.json",
"suicideCoinbase.json",
"testRandomTest.json",
"Opcodes_TransactionInit.json",
"SuicidesMixingCoinbase.json",
"TransactionFromCoinbaseHittingBlockGasLimit1.json",
"createNameRegistratorPerTxsNotEnoughGasAfter.json",
"createNameRegistratorPerTxsNotEnoughGasAt.json",
"createNameRegistratorPerTxsNotEnoughGasBefore.json",
"delegatecallAfterTransition.json",
"delegatecallAtTransition.json",
"delegatecallBeforeTransition.json",
# 2018-12-07:
# 2019-02-07:
# 2019-02-15:
"randomStatetest101.json",
"randomStatetest116.json",
"randomStatetest237.json",
"randomStatetest7.json",
# 2019-02-17: # 2019-02-17:
"NewGasPriceForCodes.json",
"NewGasPriceForCodesWithMemExpandingCalls.json",
"NonZeroValue_CALLCODE_ToNonNonZeroBalance.json",
"pairingTest.json", "pairingTest.json",
"pointAdd.json", "pointAdd.json",
"pointAddTrunc.json", "pointAddTrunc.json",
"pointMulAdd.json", "pointMulAdd.json",
"pointMulAdd2.json", "pointMulAdd2.json",
# most likely to crash: # Homestead recursives
"createNameRegistratorOOG_MemExpansionOOV.json",
"createNameRegistratorOutOfMemoryBonds0.json",
"createNameRegistratorOutOfMemoryBonds1.json",
"ContractCreationSpam.json", "ContractCreationSpam.json",
"Call1024OOG.json", "Call1024OOG.json",
"Call1024PreCalls.json", "Call1024PreCalls.json",
@ -129,6 +41,15 @@ func allowedFailingGeneralStateTest*(folder, name: string): bool =
"CallRecursiveBomb2.json", "CallRecursiveBomb2.json",
"CallRecursiveBombLog.json", "CallRecursiveBombLog.json",
"CallRecursiveBombLog2.json", "CallRecursiveBombLog2.json",
"Call1024BalanceTooLow.json" "Call1024BalanceTooLow.json",
# Frontier recursives
"Callcode1024OOG.json",
"callcallcodecall_ABCB_RECURSIVE.json",
"callcallcodecallcode_ABCB_RECURSIVE.json",
"callcodecallcall_ABCB_RECURSIVE.json",
"callcodecallcallcode_ABCB_RECURSIVE.json",
"callcodecallcodecall_ABCB_RECURSIVE.json",
"callcodecallcodecallcode_ABCB_RECURSIVE.json",
"callcallcallcode_ABCB_RECURSIVE.json",
] ]
result = name in allowedFailingGeneralStateTests result = name in allowedFailingGeneralStateTests

View File

@ -6,63 +6,129 @@
# at your option. This file may not be copied, modified, or distributed except according to those terms. # at your option. This file may not be copied, modified, or distributed except according to those terms.
import import
unittest, strformat, strutils, tables, json, ospaths, times, unittest, strformat, strutils, tables, json, ospaths, times, os,
byteutils, ranges/typedranges, nimcrypto, options, byteutils, ranges/typedranges, nimcrypto, options,
eth/[rlp, common, keys], eth/trie/db, chronicles, eth/[rlp, common], eth/trie/[db, trie_defs], chronicles,
./test_helpers, ../nimbus/p2p/executor, ./test_helpers, ../nimbus/p2p/executor, test_config,
../nimbus/[constants, errors, transaction], ../nimbus/[constants, errors, transaction],
../nimbus/[vm_state, vm_types, vm_state_transactions, utils], ../nimbus/[vm_state, vm_types, vm_state_transactions, utils],
../nimbus/vm/interpreter, ../nimbus/vm/interpreter,
../nimbus/db/[db_chain, state_db] ../nimbus/db/[db_chain, state_db]
proc hashLogEntries(logs: seq[Log]): string = type
toLowerAscii("0x" & $keccakHash(rlp.encode(logs))) Tester = object
name: string
header: BlockHeader
pre: JsonNode
tx: Transaction
expectedHash: string
expectedLogs: string
fork: Fork
debugMode: bool
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) GST_VMState = ref object of BaseVMState
suite "generalstate json tests": proc toBytes(x: string): seq[byte] =
jsonTest("GeneralStateTests", testFixture) result = newSeq[byte](x.len)
for i in 0..<x.len: result[i] = x[i].byte
proc testFixtureIndexes(prevStateRoot: Hash256, header: BlockHeader, pre: JsonNode, tx: Transaction, proc newGST_VMState(prevStateRoot: Hash256, header: BlockHeader, chainDB: BaseChainDB, tracerFlags: set[TracerFlags]): GST_VMState =
expectedHash, expectedLogs: string, testStatusIMPL: var TestStatus, fork: Fork) = new result
when enabledLogLevel <= TRACE: result.init(prevStateRoot, header, chainDB, tracerFlags)
let tracerFlags = {TracerFlags.EnableTracing}
method getAncestorHash*(vmState: GST_VMState, blockNumber: BlockNumber): Hash256 {.gcsafe.} =
if blockNumber >= vmState.blockNumber:
return
elif blockNumber < 0:
return
elif blockNumber < vmState.blockNumber - 256:
return
else: else:
let tracerFlags: set[TracerFlags] = {} return keccakHash(toBytes($blockNumber))
var vmState = newBaseVMState(prevStateRoot, header, newBaseChainDB(newMemoryDb()), tracerFlags)
proc dumpAccount(accountDb: ReadOnlyStateDB, address: EthAddress, name: string): JsonNode =
result = %{
"name": %name,
"address": %($address),
"nonce": %toHex(accountDb.getNonce(address)),
"balance": %accountDb.getBalance(address).toHex(),
"codehash": %($accountDb.getCodeHash(address)),
"storageRoot": %($accountDb.getStorageRoot(address))
}
proc dumpDebugData(tester: Tester, vmState: BaseVMState, sender: EthAddress, gasUsed: GasInt) =
let recipient = tester.tx.getRecipient()
let miner = tester.header.coinbase
var accounts = newJObject()
accounts[$miner] = dumpAccount(vmState.readOnlyStateDB, miner, "miner")
accounts[$sender] = dumpAccount(vmState.readOnlyStateDB, sender, "sender")
accounts[$recipient] = dumpAccount(vmState.readOnlyStateDB, recipient, "recipient")
let accountList = [sender, miner, recipient]
var i = 0
for ac, _ in tester.pre:
let account = ethAddressFromHex(ac)
if account notin accountList:
accounts[$account] = dumpAccount(vmState.readOnlyStateDB, account, "pre" & $i)
inc i
let debugData = %{
"gasUsed": %gasUsed,
"structLogs": vmState.getTracingResult(),
"accounts": accounts
}
writeFile("debug_" & tester.name & ".json", debugData.pretty())
proc testFixtureIndexes(tester: Tester, testStatusIMPL: var TestStatus) =
var tracerFlags: set[TracerFlags] = if tester.debugMode: {TracerFlags.EnableTracing} else : {}
var vmState = newGST_VMState(emptyRlpHash, tester.header, newBaseChainDB(newMemoryDb()), tracerFlags)
vmState.mutateStateDB: vmState.mutateStateDB:
setupStateDB(pre, db) setupStateDB(tester.pre, db)
defer: defer:
#echo vmState.readOnlyStateDB.dumpAccount("c94f5374fce5edbc8e2a8697c15331677e6ebf0b")
let obtainedHash = "0x" & `$`(vmState.readOnlyStateDB.rootHash).toLowerAscii let obtainedHash = "0x" & `$`(vmState.readOnlyStateDB.rootHash).toLowerAscii
check obtainedHash == expectedHash check obtainedHash == tester.expectedHash
let logEntries = vmState.getAndClearLogEntries() let logEntries = vmState.getAndClearLogEntries()
let actualLogsHash = hashLogEntries(logEntries) let actualLogsHash = hashLogEntries(logEntries)
let expectedLogsHash = toLowerAscii(expectedLogs) let expectedLogsHash = toLowerAscii(tester.expectedLogs)
check(expectedLogsHash == actualLogsHash) check(expectedLogsHash == actualLogsHash)
let sender = tx.getSender() let sender = tester.tx.getSender()
if not validateTransaction(vmState, tx, sender): if not validateTransaction(vmState, tester.tx, sender):
vmState.mutateStateDB: vmState.mutateStateDB:
# pre-EIP158 (e.g., Byzantium) should ensure currentCoinbase exists # pre-EIP158 (e.g., Byzantium) should ensure currentCoinbase exists
# in later forks, don't create at all # in later forks, don't create at all
db.addBalance(header.coinbase, 0.u256) db.addBalance(tester.header.coinbase, 0.u256)
return return
var gasUsed: GasInt
if gasUsed + tester.tx.gasLimit <= tester.header.gasLimit:
vmState.mutateStateDB: vmState.mutateStateDB:
let gasUsed = tx.processTransaction(sender, vmState, some(fork)) gasUsed = tester.tx.processTransaction(sender, vmState, some(tester.fork))
db.addBalance(header.coinbase, gasUsed.u256 * tx.gasPrice.u256) db.addBalance(tester.header.coinbase, gasUsed.u256 * tester.tx.gasPrice.u256)
else:
debug "invalid tx: block header gasLimit reached",
blockGasLimit=tester.header.gasLimit,
gasUsed=gasUsed,
txGasLimit=tester.tx.gasLimit
vmState.mutateStateDB:
db.addBalance(tester.header.coinbase, 0.u256)
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) = if tester.debugMode:
tester.dumpDebugData(vmState, sender, gasUsed)
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus,
debugMode = false, supportedForks: set[Fork] = supportedForks) =
var tester: Tester
var fixture: JsonNode var fixture: JsonNode
for label, child in fixtures: for label, child in fixtures:
fixture = child fixture = child
tester.name = label
break break
let fenv = fixture["env"] let fenv = fixture["env"]
var emptyRlpHash = keccak256.digest(rlp.encode("")) tester.header = BlockHeader(
let header = BlockHeader(
coinbase: fenv["currentCoinbase"].getStr.ethAddressFromHex, coinbase: fenv["currentCoinbase"].getStr.ethAddressFromHex,
difficulty: fromHex(UInt256, fenv{"currentDifficulty"}.getStr), difficulty: fromHex(UInt256, fenv{"currentDifficulty"}.getStr),
blockNumber: fenv{"currentNumber"}.getHexadecimalInt.u256, blockNumber: fenv{"currentNumber"}.getHexadecimalInt.u256,
@ -71,18 +137,57 @@ proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) =
stateRoot: emptyRlpHash stateRoot: emptyRlpHash
) )
tester.debugMode = debugMode
let ftrans = fixture["transaction"] let ftrans = fixture["transaction"]
var testedInFork = false
for fork in supportedForks: for fork in supportedForks:
if fixture["post"].hasKey(forkNames[fork]): if fixture["post"].hasKey(forkNames[fork]):
# echo "[fork: ", forkNames[fork], "]" testedInFork = true
for expectation in fixture["post"][forkNames[fork]]: for expectation in fixture["post"][forkNames[fork]]:
tester.expectedHash = expectation["hash"].getStr
tester.expectedLogs = expectation["logs"].getStr
let let
expectedHash = expectation["hash"].getStr
expectedLogs = expectation["logs"].getStr
indexes = expectation["indexes"] indexes = expectation["indexes"]
dataIndex = indexes["data"].getInt dataIndex = indexes["data"].getInt
gasIndex = indexes["gas"].getInt gasIndex = indexes["gas"].getInt
valueIndex = indexes["value"].getInt valueIndex = indexes["value"].getInt
let transaction = ftrans.getFixtureTransaction(dataIndex, gasIndex, valueIndex) tester.tx = ftrans.getFixtureTransaction(dataIndex, gasIndex, valueIndex)
testFixtureIndexes(emptyRlpHash, header, fixture["pre"], transaction, tester.pre = fixture["pre"]
expectedHash, expectedLogs, testStatusIMPL, fork) tester.fork = fork
testFixtureIndexes(tester, testStatusIMPL)
if not testedInFork:
echo "test subject '", tester.name, "' not tested in any forks"
proc main() =
if paramCount() == 0:
# run all test fixtures
suite "generalstate json tests":
jsonTest("GeneralStateTests", testFixture)
else:
# execute single test in debug mode
let config = getConfiguration()
if config.testSubject.len == 0:
echo "missing test subject"
quit(QuitFailure)
let path = "tests" / "fixtures" / "GeneralStateTests"
let n = json.parseFile(path / config.testSubject)
var testStatusIMPL: TestStatus
var forks: set[Fork] = {}
forks.incl config.fork
testFixture(n, testStatusIMPL, true, forks)
when isMainModule:
var message: string
## Processing command line arguments
if processArguments(message) != Success:
echo message
quit(QuitFailure)
else:
if len(message) > 0:
echo message
quit(QuitSuccess)
main()

View File

@ -7,10 +7,10 @@
import import
os, macros, json, strformat, strutils, parseutils, ospaths, tables, os, macros, json, strformat, strutils, parseutils, ospaths, tables,
byteutils, eth/[common, keys], ranges/typedranges, byteutils, eth/[common, keys, rlp], ranges/typedranges,
../nimbus/[vm_state, constants], ../nimbus/[vm_state, constants],
../nimbus/db/[db_chain, state_db], ../nimbus/db/[db_chain, state_db],
../nimbus/transaction, ../nimbus/[transaction, utils],
../nimbus/vm/interpreter/[gas_costs, vm_forks], ../nimbus/vm/interpreter/[gas_costs, vm_forks],
../tests/test_generalstate_failing ../tests/test_generalstate_failing
@ -24,7 +24,7 @@ const
FkByzantium: "Byzantium", FkByzantium: "Byzantium",
}.toTable }.toTable
supportedForks* = [FkHomestead] supportedForks* = {FkFrontier, FkHomestead}
type type
Status* {.pure.} = enum OK, Fail, Skip Status* {.pure.} = enum OK, Fail, Skip
@ -119,10 +119,10 @@ func validTest*(folder: string, name: string): bool =
not slowTest(folder, name) and not slowTest(folder, name) and
not allowedFailInCurrentBuild(folder, name) not allowedFailInCurrentBuild(folder, name)
proc lacksSupportedForks*(filename: string): bool = proc lacksSupportedForks*(fixtures: JsonNode): bool =
# XXX: Until Nimbus supports Byzantine or newer forks, as opposed # XXX: Until Nimbus supports Byzantine or newer forks, as opposed
# to Homestead, ~1k of ~2.5k GeneralStateTests won't work. # to Homestead, ~1k of ~2.5k GeneralStateTests won't work.
let fixtures = parseJSON(readFile(filename))
var fixture: JsonNode var fixture: JsonNode
for label, child in fixtures: for label, child in fixtures:
fixture = child fixture = child
@ -131,10 +131,10 @@ proc lacksSupportedForks*(filename: string): bool =
# not all fixtures make a distinction between forks, so default to accepting # not all fixtures make a distinction between forks, so default to accepting
# them all, until we find the ones that specify forks in their "post" section # them all, until we find the ones that specify forks in their "post" section
result = false result = false
if fixture.kind == JObject and fixture.has_key("transaction") and fixture.has_key("post"): if fixture.kind == JObject and fixture.hasKey("transaction") and fixture.hasKey("post"):
result = true result = true
for fork in supportedForks: for fork in supportedForks:
if fixture["post"].has_key(forkNames[fork]): if fixture["post"].hasKey(forkNames[fork]):
result = false result = false
break break
@ -158,15 +158,19 @@ macro jsonTest*(s: static[string], handler: untyped): untyped =
if not status.hasKey(last): if not status.hasKey(last):
status[last] = initOrderedTable[string, Status]() status[last] = initOrderedTable[string, Status]()
status[last][name] = Status.Skip status[last][name] = Status.Skip
if last.validTest(name) and not filename.lacksSupportedForks: if last.validTest(name):
filenames.add((filename, last, name)) filenames.add((filename, last, name))
for child in filenames: for child in filenames:
let (filename, folder, name) = child let (filename, folder, name) = child
# we set this here because exceptions might be raised in the handler: # we set this here because exceptions might be raised in the handler:
status[folder][name] = Status.Fail status[folder][name] = Status.Fail
let fixtures = parseJSON(readFile(filename))
if fixtures.lacksSupportedForks:
status[folder][name] = Status.Skip
continue
test filename: test filename:
echo folder / name echo folder / name
`handler`(parseJSON(readFile(filename)), `testStatusIMPL`) `handler`(fixtures, `testStatusIMPL`)
if `testStatusIMPL` == OK: if `testStatusIMPL` == OK:
status[folder][name] = Status.OK status[folder][name] = Status.OK
@ -286,3 +290,6 @@ proc getFixtureTransaction*(j: JsonNode, dataIndex, gasIndex, valueIndex: int):
result.R = fromBytesBE(Uint256, raw[0..31]) result.R = fromBytesBE(Uint256, raw[0..31])
result.S = fromBytesBE(Uint256, raw[32..63]) result.S = fromBytesBE(Uint256, raw[32..63])
result.V = raw[64] + 27.byte result.V = raw[64] + 27.byte
proc hashLogEntries*(logs: seq[Log]): string =
toLowerAscii("0x" & $keccakHash(rlp.encode(logs)))

View File

@ -16,15 +16,11 @@ import
../nimbus/vm/interpreter, ../nimbus/vm/interpreter,
../nimbus/db/[db_chain, state_db] ../nimbus/db/[db_chain, state_db]
proc hashLogEntries(logs: seq[Log]): string =
toLowerAscii("0x" & $keccakHash(rlp.encode(logs)))
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus)
suite "vm json tests": suite "vm json tests":
jsonTest("VMTests", testFixture) jsonTest("VMTests", testFixture)
proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) = proc testFixture(fixtures: JsonNode, testStatusIMPL: var TestStatus) =
var fixture: JsonNode var fixture: JsonNode
for label, child in fixtures: for label, child in fixtures: