Commit 73da687e authored by Kelvin Fichter's avatar Kelvin Fichter

Integrated more tests

parent 8214c09c
......@@ -51,6 +51,29 @@ contract OVM_FraudVerifier is iOVM_FraudVerifier, Proxy_Resolver {
}
/***************************************
* Public Functions: Transition Status *
***************************************/
/**
* Retrieves the state transitioner for a given root.
* @param _preStateRoot State root to query a transitioner for.
* @return _transitioner Corresponding state transitioner contract.
*/
function getStateTransitioner(
bytes32 _preStateRoot
)
override
public
view
returns (
iOVM_StateTransitioner _transitioner
)
{
return transitioners[_preStateRoot];
}
/****************************************
* Public Functions: Fraud Verification *
****************************************/
......
......@@ -5,11 +5,21 @@ pragma experimental ABIEncoderV2;
/* Library Imports */
import { Lib_OVMCodec } from "../../libraries/codec/Lib_OVMCodec.sol";
/* Interface Imports */
import { iOVM_StateTransitioner } from "./iOVM_StateTransitioner.sol";
/**
* @title iOVM_FraudVerifier
*/
interface iOVM_FraudVerifier {
/***************************************
* Public Functions: Transition Status *
***************************************/
function getStateTransitioner(bytes32 _preStateRoot) external view returns (iOVM_StateTransitioner _transitioner);
/****************************************
* Public Functions: Fraud Verification *
****************************************/
......
......@@ -109,7 +109,7 @@ library Lib_OVMCodec {
function encodeTransaction(
Transaction memory _transaction
)
public
internal
pure
returns (
bytes memory _encoded
......@@ -129,7 +129,7 @@ library Lib_OVMCodec {
function hashTransaction(
Transaction memory _transaction
)
public
internal
pure
returns (
bytes32 _hash
......
......@@ -7,7 +7,7 @@
"build": "yarn run build:contracts",
"build:contracts": "buidler compile",
"test": "yarn run test:contracts",
"test:contracts": "buidler test \"test/contracts/OVM/chain/OVM_StateCommitmentChain.spec.ts\""
"test:contracts": "buidler test \"test/contracts/OVM/verification/OVM_FraudVerifier.spec.ts\""
},
"devDependencies": {
"@nomiclabs/buidler": "^1.4.4",
......
import { expect } from '../../../setup'
/* External Imports */
import { ethers } from '@nomiclabs/buidler'
import { Contract } from 'ethers'
/* Internal Imports */
import { SAFETY_CHECKER_TEST_JSON } from '../../../helpers'
describe('OVM_SafetyChecker', () => {
let OVM_SafetyChecker: Contract
before(async () => {
const Factory__OVM_SafetyChecker = await ethers.getContractFactory(
'OVM_SafetyChecker'
)
OVM_SafetyChecker = await Factory__OVM_SafetyChecker.deploy()
})
describe('isBytecodeSafe()', () => {
for (const testName of Object.keys(SAFETY_CHECKER_TEST_JSON)) {
const test = SAFETY_CHECKER_TEST_JSON[testName]
it(`should correctly classify: ${testName}`, async () => {
expect(
await OVM_SafetyChecker.isBytecodeSafe(test.in)
).to.equal(test.out)
})
}
})
})
import { expect } from '../../../setup'
/* External Imports */
import { ethers } from '@nomiclabs/buidler'
import { ContractFactory, Contract, Signer, BigNumber } from 'ethers'
/* Internal Imports */
import { getProxyManager, getMockContract, MockContract, ZERO_ADDRESS, NULL_BYTES32, NON_NULL_BYTES32, setProxyTarget} from '../../../helpers'
const DUMMY_BATCH_HEADER = {
batchIndex: 0,
batchRoot: NULL_BYTES32,
batchSize: 0,
prevTotalElements: 0,
extraData: NULL_BYTES32
}
const DUMMY_BATCH_PROOF = {
index: 0,
siblings: [NULL_BYTES32]
}
const DUMMY_OVM_TRANSACTION = {
timestamp: 0,
queueOrigin: 0,
entrypoint: ZERO_ADDRESS,
origin: ZERO_ADDRESS,
msgSender: ZERO_ADDRESS,
gasLimit: 0,
data: NULL_BYTES32
}
describe('OVM_FraudVerifier', () => {
let Proxy_Manager: Contract
before(async () => {
Proxy_Manager = await getProxyManager()
})
let Mock__OVM_StateCommitmentChain: MockContract
let Mock__OVM_CanonicalTransactionChain: MockContract
let Mock__OVM_StateTransitioner: MockContract
let Mock__OVM_StateTransitionerFactory: MockContract
before(async () => {
Mock__OVM_StateCommitmentChain = await getMockContract(
await ethers.getContractFactory('OVM_StateCommitmentChain')
)
Mock__OVM_CanonicalTransactionChain = await getMockContract(
await ethers.getContractFactory('OVM_CanonicalTransactionChain')
)
Mock__OVM_StateTransitioner = await getMockContract(
await ethers.getContractFactory('OVM_StateTransitioner')
)
Mock__OVM_StateTransitionerFactory = await getMockContract(
await ethers.getContractFactory('OVM_StateTransitionerFactory')
)
await setProxyTarget(
Proxy_Manager,
'OVM_StateCommitmentChain',
Mock__OVM_StateCommitmentChain
)
await setProxyTarget(
Proxy_Manager,
'OVM_CanonicalTransactionChain',
Mock__OVM_CanonicalTransactionChain
)
await setProxyTarget(
Proxy_Manager,
'OVM_StateTransitioner',
Mock__OVM_StateTransitioner
)
await setProxyTarget(
Proxy_Manager,
'OVM_StateTransitionerFactory',
Mock__OVM_StateTransitionerFactory
)
Mock__OVM_StateTransitionerFactory.setReturnValues('create', [
Mock__OVM_StateTransitioner.address
])
})
let Factory__OVM_FraudVerifier: ContractFactory
before(async () => {
Factory__OVM_FraudVerifier = await ethers.getContractFactory('OVM_FraudVerifier')
})
let OVM_FraudVerifier: Contract
beforeEach(async () => {
OVM_FraudVerifier = await Factory__OVM_FraudVerifier.deploy(Proxy_Manager.address)
})
describe('initializeFraudVerification', () => {
describe('when provided an invalid pre-state root inclusion proof', () => {
before(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [false])
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.initializeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
DUMMY_OVM_TRANSACTION,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF
)
).to.be.revertedWith('Invalid pre-state root inclusion proof.')
})
})
describe('when provided a valid pre-state root inclusion proof', () => {
before(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [true])
})
describe('when provided an invalid transaction inclusion proof', () => {
before(() => {
Mock__OVM_CanonicalTransactionChain.setReturnValues('verifyElement', [false])
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.initializeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
DUMMY_OVM_TRANSACTION,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF
)
).to.be.revertedWith('Invalid transaction inclusion proof.')
})
})
describe('when provided a valid transaction inclusion proof', () => {
before(() => {
Mock__OVM_CanonicalTransactionChain.setReturnValues('verifyElement', [true])
})
it('should deploy a new state transitioner', async () => {
await expect(
OVM_FraudVerifier.initializeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
DUMMY_OVM_TRANSACTION,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF
)
).to.not.be.reverted
expect(
await OVM_FraudVerifier.getStateTransitioner(NULL_BYTES32)
).to.equal(Mock__OVM_StateTransitioner.address)
})
})
})
})
describe('finalizeFraudVerification', () => {
beforeEach(async () => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [true])
Mock__OVM_CanonicalTransactionChain.setReturnValues('verifyElement', [true])
await OVM_FraudVerifier.initializeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
DUMMY_OVM_TRANSACTION,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF
)
})
describe('when the transition process is not complete', () => {
before(() => {
Mock__OVM_StateTransitioner.setReturnValues('isComplete', [false])
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF
)
).to.be.revertedWith('State transition process must be completed prior to finalization.')
})
})
describe('when the transition process is complete', () => {
before(() => {
Mock__OVM_StateTransitioner.setReturnValues('isComplete', [true])
})
describe('when provided an invalid post-state root index', () => {
const batchProof = {
...DUMMY_BATCH_PROOF,
index: DUMMY_BATCH_PROOF.index + 2
}
it('should revert', async () => {
await expect(
OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
batchProof
)
).to.be.revertedWith('Invalid post-state root index.')
})
})
describe('when provided a valid post-state root index', () => {
const batchProof = {
...DUMMY_BATCH_PROOF,
index: DUMMY_BATCH_PROOF.index + 1
}
describe('when provided an invalid pre-state root inclusion proof', () => {
beforeEach(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [false])
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
batchProof
)
).to.be.revertedWith('Invalid pre-state root inclusion proof.')
})
})
describe('when provided a valid pre-state root inclusion proof', () => {
before(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [true])
})
describe('when provided an invalid post-state root inclusion proof', () => {
beforeEach(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', (stateRoot: string, ...args: any) => {
return [stateRoot !== NON_NULL_BYTES32]
})
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
batchProof
)
).to.be.revertedWith('Invalid post-state root inclusion proof.')
})
})
describe('when provided a valid post-state root inclusion proof', () => {
before(() => {
Mock__OVM_StateCommitmentChain.setReturnValues('verifyElement', [true])
})
describe('when the provided post-state root does not differ from the computed one', () => {
before(() => {
Mock__OVM_StateTransitioner.setReturnValues('getPostStateRoot', [NON_NULL_BYTES32])
})
it('should revert', async () => {
await expect(
OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
batchProof
)
).to.be.revertedWith('State transition has not been proven fraudulent.')
})
})
describe('when the provided post-state root differs from the computed one', () => {
before(() => {
Mock__OVM_StateTransitioner.setReturnValues('getPostStateRoot', [NULL_BYTES32])
})
it('should succeed and attempt to delete a state batch', async () => {
await OVM_FraudVerifier.finalizeFraudVerification(
NULL_BYTES32,
DUMMY_BATCH_HEADER,
DUMMY_BATCH_PROOF,
NON_NULL_BYTES32,
DUMMY_BATCH_HEADER,
batchProof
)
expect(
Mock__OVM_StateCommitmentChain.getCallData('deleteStateBatch', 0)
).to.deep.equal([Object.values(DUMMY_BATCH_HEADER).map((value) => {
return Number.isInteger(value) ? BigNumber.from(value) : value
})])
})
})
})
})
})
})
})
})
import { create2Tests } from './json/create2.test.json'
import { rlpTests } from './json/rlp.test.json'
import { safetyCheckerTests } from './json/safety-checker.test.json'
export const RLP_TEST_JSON = rlpTests
export const CREATE2_TEST_JSON = create2Tests
export const SAFETY_CHECKER_TEST_JSON = safetyCheckerTests
\ No newline at end of file
{
"source": "https://eips.ethereum.org/EIPS/eip-1014",
"notes": "added additional tests with more bytecode",
"date": "2020-01-10",
"create2Tests": {
"all zero values": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0x4D1A2e2bB4F88F0250f26Ffff098B0b30B26BF38"
},
"non-zero address": {
"address": "0xdeadbeef00000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0xB928f69Bb1D91Cd65274e3c79d8986362984fDA3"
},
"non-zero address and salt": {
"address": "0xdeadbeef00000000000000000000000000000000",
"salt": "0x000000000000000000000000feed000000000000000000000000000000000000",
"init_code": "0x00",
"result": "0xD04116cDd17beBE565EB2422F2497E06cC1C9833"
},
"non-zero init code": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0xdeadbeef",
"result": "0x70f2b2914A2a4b783FaEFb75f459A580616Fcb5e"
},
"non-zero address, salt, and short init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0xdeadbeef",
"result": "0x60f3f640a8508fC6a86d45DF051962668E1e8AC7"
},
"non-zero address, salt, and medium init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef",
"result": "0x1d8bfDC5D46DC4f61D6b6115972536eBE6A8854C"
},
"non-zero address, salt, and long init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0x61309c56600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a0526366d38203600051141561013b57602060046101403734156100b457600080fd5b60043560205181106100c557600080fd5b506000610140511415600654156007541516166100e157600080fd5b33600755610140516006557f556e6973776170205631000000000000000000000000000000000000000000006000557f554e492d563100000000000000000000000000000000000000000000000000006001556012600255005b63422f104360005114156105ab5760606004610140376000341160006101605111164261018051111661016d57600080fd5b6003546101a05260006101a051111561043e576000610140511161019057600080fd5b343031101561019e57600080fd5b343031036103a0526006543b6101b357600080fd5b6006543014156101c257600080fd5b602061046060246370a082316103e05230610400526103fc6006545afa6101e857600080fd5b600050610460516103c0526103a05161020057600080fd5b6103a05134151561021257600061022f565b6103c051346103c0513402041461022857600080fd5b6103c05134025b0460016103a05161023f57600080fd5b6103a05134151561025157600061026e565b6103c051346103c0513402041461026757600080fd5b6103c05134025b0401101561027b57600080fd5b60016103a05161028a57600080fd5b6103a05134151561029c5760006102b9565b6103c051346103c051340204146102b257600080fd5b6103c05134025b0401610480526103a0516102cc57600080fd5b6103a0513415156102de5760006102fb565b6101a051346101a051340204146102f457600080fd5b6101a05134025b046104a052610140516104a0511015610480516101605110151661031e57600080fd5b60043360e05260c052604060c02080546104a051825401101561034057600080fd5b6104a0518154018155506101a0516104a0516101a05101101561036257600080fd5b6104a0516101a051016003556006543b61037b57600080fd5b60065430141561038a57600080fd5b602061058060646323b872dd6104c052336104e052306105005261048051610520526104dc60006006545af16103bf57600080fd5b600050610580516103cf57600080fd5b6104805134337f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca60006000a46104a0516105a0523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206105a0a36104a05160005260206000f36105a9565b633b9aca003410156000600654141560006007541415161661045f57600080fd5b306007543b61046d57600080fd5b60075430141561047c57600080fd5b602061024060246306f2bf626101c0526006546101e0526101dc6007545afa6104a457600080fd5b60005061024051146104b557600080fd5b6101605161026052303161028052610280516003556102805160043360e05260c052604060c020556006543b6104ea57600080fd5b6006543014156104f957600080fd5b602061036060646323b872dd6102a052336102c052306102e05261026051610300526102bc60006006545af161052e57600080fd5b6000506103605161053e57600080fd5b6102605134337f06239653922ac7bea6aa2b19dc486b9361821d37712eb796adfd38d81de278ca60006000a461028051610380523360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610380a36102805160005260206000f35b005b63f88bf15a600051141561084a57608060046101403734156105cc57600080fd5b600061018051116000610160511116426101a051116000610140511116166105f357600080fd5b6003546101c05260006101c0511161060a57600080fd5b6006543b61061757600080fd5b60065430141561062657600080fd5b602061028060246370a0823161020052306102205261021c6006545afa61064c57600080fd5b600050610280516101e0526101c05161066457600080fd5b6101c051610140511515610679576000610699565b30316101405130316101405102041461069157600080fd5b303161014051025b046102a0526101c0516106ab57600080fd5b6101c0516101405115156106c05760006106e6565b6101e051610140516101e051610140510204146106dc57600080fd5b6101e05161014051025b046102c052610180516102c0511015610160516102a05110151661070957600080fd5b60043360e05260c052604060c020610140518154101561072857600080fd5b61014051815403815550610140516101c051101561074557600080fd5b610140516101c0510360035560006000600060006102a051336000f161076a57600080fd5b6006543b61077757600080fd5b60065430141561078657600080fd5b6020610380604463a9059cbb6102e05233610300526102c051610320526102fc60006006545af16107b657600080fd5b600050610380516107c657600080fd5b6102c0516102a051337f0fbf06c058b90cb038a618f8c2acbf6145f8b3570fd1fa56abb8f0f3f05b36e860006000a4610140516103a0526000337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206103a0a360406103c0526103e06102a05181526102c0518160200152506103c0516103e0f3005b6000156109c6575b6101a05261014052610160526101805260006101805111600061016051111661087a57600080fd5b61014051151561088b5760006108ae565b6103e5610140516103e5610140510204146108a557600080fd5b6103e561014051025b6101c0526101c05115156108c35760006108e9565b610180516101c051610180516101c0510204146108df57600080fd5b610180516101c051025b6101e0526101605115156108fe576000610921565b6103e8610160516103e86101605102041461091857600080fd5b6103e861016051025b6101c051610160511515610936576000610959565b6103e8610160516103e86101605102041461095057600080fd5b6103e861016051025b01101561096557600080fd5b6101c05161016051151561097a57600061099d565b6103e8610160516103e86101605102041461099457600080fd5b6103e861016051025b0161020052610200516109af57600080fd5b610200516101e051046000526000516101a0515650005b600015610bf3575b6101a0526101405261016052610180526000610180511160006101605111166109f657600080fd5b610160511515610a07576000610a2d565b61014051610160516101405161016051020414610a2357600080fd5b6101405161016051025b1515610a3a576000610af6565b6103e8610160511515610a4e576000610a74565b61014051610160516101405161016051020414610a6a57600080fd5b6101405161016051025b6103e8610160511515610a88576000610aae565b61014051610160516101405161016051020414610aa457600080fd5b6101405161016051025b020414610aba57600080fd5b6103e8610160511515610ace576000610af4565b61014051610160516101405161016051020414610aea57600080fd5b6101405161016051025b025b6101c05261014051610180511015610b0d57600080fd5b6101405161018051031515610b23576000610b8e565b6103e561014051610180511015610b3957600080fd5b6101405161018051036103e561014051610180511015610b5857600080fd5b610140516101805103020414610b6d57600080fd5b6103e561014051610180511015610b8357600080fd5b610140516101805103025b6101e0526101e051610b9f57600080fd5b6101e0516101c0510460016101e051610bb757600080fd5b6101e0516101c05104011015610bcc57600080fd5b60016101e051610bdb57600080fd5b6101e0516101c05104016000526000516101a0515650005b600015610df4575b6101e0526101405261016052610180526101a0526101c0526000610160511160006101405111164261018051101516610c3357600080fd5b6006543b610c4057600080fd5b600654301415610c4f57600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa610c7557600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516389f2a8716102e05261014051610300526101405130311015610cd657600080fd5b6101405130310361032052610200516103405261034051610320516103005160065801610852565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c052610160516102c0511015610d5157600080fd5b6006543b610d5e57600080fd5b600654301415610d6d57600080fd5b6020610460604463a9059cbb6103c0526101c0516103e0526102c051610400526103dc60006006545af1610da057600080fd5b60005061046051610db057600080fd5b6102c051610140516101a0517fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60006000a46102c0516000526000516101e0515650005b63f39b5b9b6000511415610e715760406004610140376101405161016051638c717a3361018052346101a052610140516101c052610160516101e0523361020052336102205261022051610200516101e0516101c0516101a05160065801610bfb565b6102805261016052610140526102805160005260206000f3005b63ad65d76d6000511415610f245760606004610140376044356020518110610e9857600080fd5b5060006101805114153061018051141516610eb257600080fd5b610140516101605161018051638c717a336101a052346101c052610140516101e0526101605161020052336102205261018051610240526102405161022051610200516101e0516101c05160065801610bfb565b6102a0526101805261016052610140526102a05160005260206000f3005b60001561116c575b6101e0526101405261016052610180526101a0526101c0526000610160511160006101405111164261018051101516610f6457600080fd5b6006543b610f7157600080fd5b600654301415610f8057600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa610fa657600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163fd11c2236102e0526101405161030052610160513031101561100757600080fd5b61016051303103610320526102005161034052610340516103205161030051600658016109ce565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c05260016102c051026103e0526103e05161016051101561108d57600080fd5b6103e05161016051036103c05260006103c05111156110c35760006000600060006103c0516101a0516000f16110c257600080fd5b5b6006543b6110d057600080fd5b6006543014156110df57600080fd5b60206104a0604463a9059cbb610400526101c05161042052610140516104405261041c60006006545af161111257600080fd5b6000506104a05161112257600080fd5b6101405160016102c051026101a0517fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f60006000a460016102c051026000526000516101e0515650005b636b1d4db760005114156111e95760406004610140376101405161016051632dff394e61018052610140516101a052346101c052610160516101e0523361020052336102205261022051610200516101e0516101c0516101a05160065801610f2c565b6102805261016052610140526102805160005260206000f3005b630b573638600051141561129c576060600461014037604435602051811061121057600080fd5b506000610180511415306101805114151661122a57600080fd5b610140516101605161018051632dff394e6101a052610140516101c052346101e0526101605161020052336102205261018051610240526102405161022051610200516101e0516101c05160065801610f2c565b6102a0526101805261016052610140526102a05160005260206000f3005b6000156114b3575b6101e0526101405261016052610180526101a0526101c05260006101605111600061014051111642610180511015166112dc57600080fd5b6006543b6112e957600080fd5b6006543014156112f857600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa61131e57600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516389f2a8716102e0526101405161030052610200516103205230316103405261034051610320516103005160065801610852565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c05260016102c051026103c052610160516103c05110156113ef57600080fd5b60006000600060006103c0516101c0516000f161140b57600080fd5b6006543b61141857600080fd5b60065430141561142757600080fd5b60206104a060646323b872dd6103e0526101a05161040052306104205261014051610440526103fc60006006545af161145f57600080fd5b6000506104a05161146f57600080fd5b6103c051610140516101a0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46103c0516000526000516101e0515650005b6395e3c50b600051141561154657606060046101403734156114d457600080fd5b61014051610160516101805163fa1bb7be6101a052610140516101c052610160516101e0526101805161020052336102205233610240526102405161022051610200516101e0516101c051600658016112a4565b6102a0526101805261016052610140526102a05160005260206000f3005b637237e031600051141561160f576080600461014037341561156757600080fd5b606435602051811061157857600080fd5b5060006101a0511415306101a05114151661159257600080fd5b6101405161016051610180516101a05163fa1bb7be6101c052610140516101e0526101605161020052610180516102205233610240526101a05161026052610260516102405161022051610200516101e051600658016112a4565b6102c0526101a0526101805261016052610140526102c05160005260206000f3005b600015611813575b6101e0526101405261016052610180526101a0526101c05260006101405111426101805110151661164757600080fd5b6006543b61165457600080fd5b60065430141561166357600080fd5b60206102a060246370a0823161022052306102405261023c6006545afa61168957600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c05163fd11c2236102e05261014051610300526102005161032052303161034052610340516103205161030051600658016109ce565b6103a0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103a0516102c0526102c05161016051101561174f57600080fd5b6000600060006000610140516101c0516000f161176b57600080fd5b6006543b61177857600080fd5b60065430141561178757600080fd5b602061048060646323b872dd6103c0526101a0516103e05230610400526102c051610420526103dc60006006545af16117bf57600080fd5b600050610480516117cf57600080fd5b610140516102c0516101a0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46102c0516000526000516101e0515650005b63013efd8b60005114156118a6576060600461014037341561183457600080fd5b61014051610160516101805163984fe8f66101a052610140516101c052610160516101e0526101805161020052336102205233610240526102405161022051610200516101e0516101c05160065801611617565b6102a0526101805261016052610140526102a05160005260206000f3005b63d4e4841d600051141561196f57608060046101403734156118c757600080fd5b60643560205181106118d857600080fd5b5060006101a0511415306101a0511415166118f257600080fd5b6101405161016051610180516101a05163984fe8f66101c052610140516101e0526101605161020052610180516102205233610240526101a05161026052610260516102405161022051610200516101e05160065801611617565b6102c0526101a0526101805261016052610140526102c05160005260206000f3005b600015611c0a575b610220526101405261016052610180526101a0526101c0526101e0526102005260006101805111600061016051111660006101405111426101a051101516166119bf57600080fd5b600061020051141530610200511415166119d857600080fd5b6006543b6119e557600080fd5b6006543014156119f457600080fd5b60206102e060246370a0823161026052306102805261027c6006545afa611a1a57600080fd5b6000506102e051610240526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e051610300516389f2a871610320526101405161034052610240516103605230316103805261038051610360516103405160065801610852565b6103e052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05161030052600161030051026104005261018051610400511015611afb57600080fd5b6006543b611b0857600080fd5b600654301415611b1757600080fd5b60206104e060646323b872dd610420526101c051610440523061046052610140516104805261043c60006006545af1611b4f57600080fd5b6000506104e051611b5f57600080fd5b610200513b611b6d57600080fd5b61020051301415611b7d57600080fd5b60206105e0606463ad65d76d6105205261016051610540526101a051610560526101e0516105805261053c61040051610200515af1611bbb57600080fd5b6000506105e0516105005261040051610140516101c0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a461050051600052600051610220515650005b63ddf7e1a76000511415611d575760a06004610140373415611c2b57600080fd5b6084356020518110611c3c57600080fd5b506007543b611c4a57600080fd5b600754301415611c5957600080fd5b602061028060246306f2bf62610200526101c0516102205261021c6007545afa611c8257600080fd5b600050610280516101e0526101405161016051610180516101a0516101c0516101e051610200516102205161024051610260516102805163204ea33b6102a052610140516102c052610160516102e05261018051610300526101a05161032052336103405233610360526101e0516103805261038051610360516103405161032051610300516102e0516102c05160065801611977565b6103e05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05160005260206000f3005b63f552d91b6000511415611ec15760c06004610140373415611d7857600080fd5b6084356020518110611d8957600080fd5b5060a4356020518110611d9b57600080fd5b506007543b611da957600080fd5b600754301415611db857600080fd5b60206102a060246306f2bf62610220526101e0516102405261023c6007545afa611de157600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a05163204ea33b6102c052610140516102e052610160516103005261018051610320526101a0516103405233610360526101c05161038052610200516103a0526103a05161038051610360516103405161032051610300516102e05160065801611977565b610400526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104005160005260206000f3005b6000156121d7575b610220526101405261016052610180526101a0526101c0526101e05261020052600061018051116000610140511116426101a051101516611f0957600080fd5b60006102005114153061020051141516611f2257600080fd5b610200513b611f3057600080fd5b61020051301415611f4057600080fd5b60206102e060246359e9486261026052610140516102805261027c610200515afa611f6a57600080fd5b6000506102e051610240526006543b611f8257600080fd5b600654301415611f9157600080fd5b60206103a060246370a0823161032052306103405261033c6006545afa611fb757600080fd5b6000506103a051610300526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c05163fd11c2236103e05261024051610400526103005161042052303161044052610440516104205161040051600658016109ce565b6104a0526103c0526103a05261038052610360526103405261032052610300526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104a0516103c052610240516101805110156103c051610160511015166120c857600080fd5b6006543b6120d557600080fd5b6006543014156120e457600080fd5b602061058060646323b872dd6104c0526101c0516104e05230610500526103c051610520526104dc60006006545af161211c57600080fd5b6000506105805161212c57600080fd5b610200513b61213a57600080fd5b6102005130141561214a57600080fd5b60206106806064630b5736386105c052610140516105e0526101a051610600526101e051610620526105dc61024051610200515af161218857600080fd5b600050610680516105a052610240516103c0516101c0517f7f4091b46c33e918a0f3aa42307641d17bb67029427a5369e54b35398423870560006000a46103c051600052600051610220515650005b63b040d54560005114156123245760a060046101403734156121f857600080fd5b608435602051811061220957600080fd5b506007543b61221757600080fd5b60075430141561222657600080fd5b602061028060246306f2bf62610200526101c0516102205261021c6007545afa61224f57600080fd5b600050610280516101e0526101405161016051610180516101a0516101c0516101e0516102005161022051610240516102605161028051631a7b28f26102a052610140516102c052610160516102e05261018051610300526101a05161032052336103405233610360526101e0516103805261038051610360516103405161032051610300516102e0516102c05160065801611ec9565b6103e05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e05160005260206000f3005b63f3c0efe9600051141561248e5760c0600461014037341561234557600080fd5b608435602051811061235657600080fd5b5060a435602051811061236857600080fd5b506007543b61237657600080fd5b60075430141561238557600080fd5b60206102a060246306f2bf62610220526101e0516102405261023c6007545afa6123ae57600080fd5b6000506102a051610200526101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a051631a7b28f26102c052610140516102e052610160516103005261018051610320526101a0516103405233610360526101c05161038052610200516103a0526103a05161038051610360516103405161032051610300516102e05160065801611ec9565b610400526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526104005160005260206000f3005b63b1cb43bf600051141561255b5760a060046101403734156124af57600080fd5b60843560205181106124c057600080fd5b506101405161016051610180516101a0516101c05163204ea33b6101e0526101405161020052610160516102205261018051610240526101a051610260523361028052336102a0526101c0516102c0526102c0516102a051610280516102605161024051610220516102005160065801611977565b610320526101c0526101a0526101805261016052610140526103205160005260206000f3005b63ec384a3e60005114156126555760c0600461014037341561257c57600080fd5b608435602051811061258d57600080fd5b5060a435602051811061259f57600080fd5b50306101c05114156125b057600080fd5b6101405161016051610180516101a0516101c0516101e05163204ea33b610200526101405161022052610160516102405261018051610260526101a05161028052336102a0526101c0516102c0526101e0516102e0526102e0516102c0516102a0516102805161026051610240516102205160065801611977565b610340526101e0526101c0526101a0526101805261016052610140526103405160005260206000f3005b63ea650c7d60005114156127225760a0600461014037341561267657600080fd5b608435602051811061268757600080fd5b506101405161016051610180516101a0516101c051631a7b28f26101e0526101405161020052610160516102205261018051610240526101a051610260523361028052336102a0526101c0516102c0526102c0516102a051610280516102605161024051610220516102005160065801611ec9565b610320526101c0526101a0526101805261016052610140526103205160005260206000f3005b63981a1327600051141561281c5760c0600461014037341561274357600080fd5b608435602051811061275457600080fd5b5060a435602051811061276657600080fd5b50306101c051141561277757600080fd5b6101405161016051610180516101a0516101c0516101e051631a7b28f2610200526101405161022052610160516102405261018051610260526101a05161028052336102a0526101c0516102c0526101e0516102e0526102e0516102c0516102a0516102805161026051610240516102205160065801611ec9565b610340526101e0526101c0526101a0526101805261016052610140526103405160005260206000f3005b63cd7724c36000511415612918576020600461014037341561283d57600080fd5b6000610140511161284d57600080fd5b6006543b61285a57600080fd5b60065430141561286957600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa61288f57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e051610200516389f2a871610220526101405161024052303161026052610160516102805261028051610260516102405160065801610852565b6102e052610200526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f3005b6359e948626000511415612a27576020600461014037341561293957600080fd5b6000610140511161294957600080fd5b6006543b61295657600080fd5b60065430141561296557600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa61298b57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e051610200516102205163fd11c223610240526101405161026052303161028052610160516102a0526102a0516102805161026051600658016109ce565b6103005261022052610200526101e0526101c0526101a05261018052610160526101405261030051610220526001610220510260005260206000f3005b6395b68fe76000511415612b365760206004610140373415612a4857600080fd5b60006101405111612a5857600080fd5b6006543b612a6557600080fd5b600654301415612a7457600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa612a9a57600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e05161020051610220516389f2a871610240526101405161026052610160516102805230316102a0526102a051610280516102605160065801610852565b6103005261022052610200526101e0526101c0526101a05261018052610160526101405261030051610220526001610220510260005260206000f3005b632640f62c6000511415612c325760206004610140373415612b5757600080fd5b60006101405111612b6757600080fd5b6006543b612b7457600080fd5b600654301415612b8357600080fd5b602061020060246370a0823161018052306101a05261019c6006545afa612ba957600080fd5b60005061020051610160526101405161016051610180516101a0516101c0516101e0516102005163fd11c2236102205261014051610240526101605161026052303161028052610280516102605161024051600658016109ce565b6102e052610200526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f3005b639d76ea586000511415612c58573415612c4b57600080fd5b60065460005260206000f3005b63966dae0e6000511415612c7e573415612c7157600080fd5b60075460005260206000f3005b6370a082316000511415612ccd5760206004610140373415612c9f57600080fd5b6004356020518110612cb057600080fd5b5060046101405160e05260c052604060c0205460005260206000f3005b63a9059cbb6000511415612d985760406004610140373415612cee57600080fd5b6004356020518110612cff57600080fd5b5060043360e05260c052604060c0206101605181541015612d1f57600080fd5b6101605181540381555060046101405160e05260c052604060c0208054610160518254011015612d4e57600080fd5b61016051815401815550610160516101805261014051337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6020610180a3600160005260206000f3005b6323b872dd6000511415612eb35760606004610140373415612db957600080fd5b6004356020518110612dca57600080fd5b506024356020518110612ddc57600080fd5b5060046101405160e05260c052604060c0206101805181541015612dff57600080fd5b6101805181540381555060046101605160e05260c052604060c0208054610180518254011015612e2e57600080fd5b6101805181540181555060056101405160e05260c052604060c0203360e05260c052604060c0206101805181541015612e6657600080fd5b61018051815403815550610180516101a05261016051610140517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206101a0a3600160005260206000f3005b63095ea7b36000511415612f485760406004610140373415612ed457600080fd5b6004356020518110612ee557600080fd5b506101605160053360e05260c052604060c0206101405160e05260c052604060c02055610160516101805261014051337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9256020610180a3600160005260206000f3005b63dd62ed3e6000511415612fb85760406004610140373415612f6957600080fd5b6004356020518110612f7a57600080fd5b506024356020518110612f8c57600080fd5b5060056101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f3005b6306fdde036000511415612fde573415612fd157600080fd5b60005460005260206000f3005b6395d89b416000511415613004573415612ff757600080fd5b60015460005260206000f3005b63313ce567600051141561302a57341561301d57600080fd5b60025460005260206000f3005b6318160ddd600051141561305057341561304357600080fd5b60035460005260206000f3005b638c717a33610140523461016052600161018052426101a052336101c052336101e0526101e0516101c0516101a051610180516101605160065801610bfb565b610240526102405b61000461309c0361000460003961000461309c036000f3",
"result": "0x27ff8bbb55a2b5cfd4fb7c350ed6a6a2cdbed5d9"
},
"non-zero address, salt, and very long init code": {
"address": "0x00000000000000000000000000000000deadbeef",
"salt": "0x00000000000000000000000000000000000000000000000000000000cafebabe",
"init_code": "0x60806040526016805460a060020a61ffff02191675010000000000000000000000000000000000000000001790553480156200003a57600080fd5b5060405161016080620062768339810160408181528251602080850151838601516060870151608088015160a089015160c08a015160e08b01516101008c01516101208d0151610140909d01518b8d018c5260178d527f53796e746865746978204e6574776f726b20546f6b656e0000000000000000008a8e01528b51808d01909c5260038c527f534e580000000000000000000000000000000000000000000000000000000000998c0199909952989b969a9599949893979296919590949192918c918c918460128d86818080600160a060020a03811615156200018057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f776e657220616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b60008054600160a060020a031916600160a060020a038316908117825560408051928352602083019190915280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a150600160a060020a03811615156200025157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f776e6572206d757374206e6f74206265207a65726f00000000000000000000604482015290519081900360640190fd5b60038054600160a060020a038316610100810261010060a860020a03199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a15060048054600160a060020a038416600160a060020a0319909116811790915560408051918252517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e9181900360200190a15050600160075560088054600160a060020a031916600160a060020a038816179055845162000333906009906020880190620003f0565b5083516200034990600a906020870190620003f0565b5050600b91909155600c805460ff191660ff909216919091179055505060148054600160a060020a0319908116600160a060020a039d8e16179091556013805482169a8d169a909a179099555050601080548816968a16969096179095556015805487169489169490941790935560128054861692881692909217909155601180548516918716919091179055601680549093169416939093179055506200049592505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043357805160ff191683800117855562000463565b8280016001018555821562000463579182015b828111156200046357825182559160200191906001019062000446565b506200047192915062000475565b5090565b6200049291905b808211156200047157600081556001016200047c565b90565b615dd180620004a56000396000f30060806040526004361061031e5763ffffffff60e060020a60003504166306fdde03811461032357806309231602146103ad578063095ea7b3146103c75780630b887dae146103ff5780631249c58b14610417578063131b0ae71461042c5780631627540c1461044d57806316b2213f1461046e57806317c70de4146104a157806318160ddd146104b657806319db2228146104cb5780631a5c6095146104ec5780631c8aa5fa1461050757806320714f881461052857806323b872dd14610549578063295da87d14610573578063313ce5671461058b57806332608039146105b65780633278c960146105ea5780633fc6df6e146105ff5780634ffcd9df1461061457806353a47bb71461062957806356e449541461063e578063654a60ac1461065f5780636ac0bf9c1461067d5780636b4dff1f1461069e57806370a08231146106b657806372cb051f146106d757806379ba50971461073c5780638357ce3614610751578063835e119c1461077557806383d625d41461078d578063849cf588146107a55780638a290014146107c65780638da5cb5b146107de57806394524096146107f357806395d89b411461080d578063961a929c1461082257806397107d6d146108375780639cb8a26a146108585780639cbdaeb61461086d5780639f76980714610882578063a311c7c2146108a3578063a430be6c146108c4578063a461fc82146108d9578063a5fdc5de146108ee578063a8913cdb1461090f578063a9059cbb14610933578063ab3e337d14610957578063ab67aa581461098a578063ae2e933b146109f9578063af086c7e14610a0e578063b8225dec14610a23578063bc67f83214610a38578063bd32aa4414610a59578063be45fd6214610a6e578063c40dd66f14610ad7578063c58aaae614610aec578063c9df6df514610b01578063d37c4d8b14610b1b578063d67bdd2514610b3f578063dbd4a42214610b54578063dbf6334014610b69578063dd62ed3e14610b7e578063e2fdcc1714610ba5578063e90dd9e214610bba578063ec55688914610bcf578063ee52a2f314610be4578063f534375214610c02578063fe7f7bc314610c17575b600080fd5b34801561032f57600080fd5b50610338610c2c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561037257818101518382015260200161035a565b50505050905090810190601f16801561039f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103b957600080fd5b506103c5600435610cba565b005b3480156103d357600080fd5b506103eb600160a060020a0360043516602435610d79565b604080519115158252519081900360200190f35b34801561040b57600080fd5b506103c5600435610e7f565b34801561042357600080fd5b506103eb61128f565b34801561043857600080fd5b506103c5600160a060020a036004351661179c565b34801561045957600080fd5b506103c5600160a060020a0360043516611822565b34801561047a57600080fd5b5061048f600160a060020a03600435166118da565b60408051918252519081900360200190f35b3480156104ad57600080fd5b5061048f6118ec565b3480156104c257600080fd5b5061048f6118f2565b3480156104d757600080fd5b506103c5600160a060020a03600435166118f8565b3480156104f857600080fd5b5061048f6004356024356119c5565b34801561051357600080fd5b506103c5600160a060020a0360043516611b91565b34801561053457600080fd5b506103c5600160a060020a0360043516611c5e565b34801561055557600080fd5b506103eb600160a060020a0360043581169060243516604435611d8b565b34801561057f57600080fd5b506103c5600435611da4565b34801561059757600080fd5b506105a0611f89565b6040805160ff9092168252519081900360200190f35b3480156105c257600080fd5b506105ce600435611f92565b60408051600160a060020a039092168252519081900360200190f35b3480156105f657600080fd5b506103c5611fad565b34801561060b57600080fd5b506105ce61204b565b34801561062057600080fd5b506105ce61205a565b34801561063557600080fd5b506105ce612069565b34801561064a57600080fd5b506103c5600160a060020a0360043516612078565b34801561066b57600080fd5b5061048f600435602435604435612145565b34801561068957600080fd5b5061048f600160a060020a03600435166121ef565b3480156106aa57600080fd5b506103c5600435612444565b3480156106c257600080fd5b5061048f600160a060020a03600435166124a1565b3480156106e357600080fd5b506106ec612528565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610728578181015183820152602001610710565b505050509050019250505060405180910390f35b34801561074857600080fd5b506103c56125cc565b34801561075d57600080fd5b5061048f600160a060020a03600435166024356126c7565b34801561078157600080fd5b506105ce60043561270b565b34801561079957600080fd5b5061048f600435612733565b3480156107b157600080fd5b506103c5600160a060020a0360043516612a57565b3480156107d257600080fd5b506103c5600435612cc2565b3480156107ea57600080fd5b506105ce612e38565b3480156107ff57600080fd5b506103c56004351515612e47565b34801561081957600080fd5b50610338612f34565b34801561082e57600080fd5b5061048f612f8f565b34801561084357600080fd5b506103c5600160a060020a0360043516612f95565b34801561086457600080fd5b506103c561304d565b34801561087957600080fd5b506105ce6131c6565b34801561088e57600080fd5b506103c5600160a060020a03600435166131d5565b3480156108af57600080fd5b5061048f600160a060020a03600435166132a4565b3480156108d057600080fd5b506105ce6132f3565b3480156108e557600080fd5b5061048f613302565b3480156108fa57600080fd5b5061048f600160a060020a0360043516613309565b34801561091b57600080fd5b5061048f600160a060020a03600435166024356134a0565b34801561093f57600080fd5b506103eb600160a060020a0360043516602435613558565b34801561096357600080fd5b506103eb600160a060020a0360043581169060243590604435906064359060843516613567565b34801561099657600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526103eb94600160a060020a0381358116956024803590921695604435953695608494019181908401838280828437509497506136f99650505050505050565b348015610a0557600080fd5b506105ce6137d6565b348015610a1a57600080fd5b506103c56137e5565b348015610a2f57600080fd5b506103eb6138e4565b348015610a4457600080fd5b506103c5600160a060020a03600435166138ed565b348015610a6557600080fd5b506103c5613988565b348015610a7a57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103eb948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750613a359650505050505050565b348015610ae357600080fd5b506105ce613b1c565b348015610af857600080fd5b506105ce613b2b565b348015610b0d57600080fd5b506103c56004351515613b3f565b348015610b2757600080fd5b5061048f600160a060020a0360043516602435613c5d565b348015610b4b57600080fd5b506105ce613e89565b348015610b6057600080fd5b506105ce613e98565b348015610b7557600080fd5b5061048f613ea7565b348015610b8a57600080fd5b5061048f600160a060020a0360043581169060243516613eae565b348015610bb157600080fd5b506105ce613f54565b348015610bc657600080fd5b506105ce613f63565b348015610bdb57600080fd5b506105ce613f72565b348015610bf057600080fd5b506103eb600435602435604435613f81565b348015610c0e57600080fd5b506103eb61416e565b348015610c2357600080fd5b506105ce614190565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb25780601f10610c8757610100808354040283529160200191610cb2565b820191906000526020600020905b815481529060010190602001808311610c9557829003601f168201915b505050505081565b601854600160a060020a03163314610d1c576040805160e560020a62461bcd02815260206004820152601d60248201527f4f6e6c7920676173206c696d6974206f7261636c6520616c6c6f776564000000604482015290519081900360640190fd5b60008111610d74576040805160e560020a62461bcd02815260206004820152601a60248201527f4e6565647320746f2062652067726561746572207468616e2030000000000000604482015290519081900360640190fd5b601755565b6004546000908190600160a060020a03163314801590610da45750600554600160a060020a03163314155b8015610dbb5750600654600160a060020a03163314155b15610dd35760068054600160a060020a031916331790555b50600654600854604080517fda46098c000000000000000000000000000000000000000000000000000000008152600160a060020a0393841660048201819052878516602483015260448201879052915191939092169163da46098c91606480830192600092919082900301818387803b158015610e5057600080fd5b505af1158015610e64573d6000803e3d6000fd5b50505050610e7381858561419f565b600191505b5092915050565b6004546000908190600160a060020a03163314801590610eaa5750600554600160a060020a03163314155b8015610ec15750600654600160a060020a03163314155b15610ed95760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614610f2f576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b6000838152600e6020526040902054600160a060020a03161515610f9d576040805160e560020a62461bcd02815260206004820152601460248201527f53796e746820646f6573206e6f74206578697374000000000000000000000000604482015290519081900360640190fd5b6000838152600e602090815260408083205481517f18160ddd0000000000000000000000000000000000000000000000000000000081529151600160a060020a03909116936318160ddd93600480850194919392918390030190829087803b15801561100857600080fd5b505af115801561101c573d6000803e3d6000fd5b505050506040513d602081101561103257600080fd5b505115611089576040805160e560020a62461bcd02815260206004820152601360248201527f53796e746820737570706c792065786973747300000000000000000000000000604482015290519081900360640190fd5b60e960020a622c2229028314156110ea576040805160e560020a62461bcd02815260206004820152601760248201527f43616e6e6f742072656d6f7665205844522073796e7468000000000000000000604482015290519081900360640190fd5b60e260020a631cd554d10283141561114c576040805160e560020a62461bcd02815260206004820152601860248201527f43616e6e6f742072656d6f766520735553442073796e74680000000000000000604482015290519081900360640190fd5b50506000818152600e6020526040812054600160a060020a0316905b600d5481101561124f5781600160a060020a0316600d8281548110151561118b57fe5b600091825260209091200154600160a060020a0316141561124757600d8054829081106111b457fe5b60009182526020909120018054600160a060020a0319169055600d805460001981019081106111df57fe5b600091825260209091200154600d8054600160a060020a03909216918390811061120557fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600d805490611241906000198301615cfe565b5061124f565b600101611168565b50506000818152600e602081815260408084208054600160a060020a03168552600f83529084208490559390925290528054600160a060020a0319169055565b601654600090819081908190600160a060020a031615156112fa576040805160e560020a62461bcd02815260206004820152601b60248201527f52657761726473446973747269627574696f6e206e6f74207365740000000000604482015290519081900360640190fd5b601560009054906101000a9004600160a060020a0316600160a060020a031663cc5c095c6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561134d57600080fd5b505af1158015611361573d6000803e3d6000fd5b505050506040513d602081101561137757600080fd5b50519250600083116113d3576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f20737570706c79206973206d696e7461626c650000000000000000000000604482015290519081900360640190fd5b601554604080517f7e7961d7000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a0390921691637e7961d7916024808201926020929091908290030181600087803b15801561143a57600080fd5b505af115801561144e573d6000803e3d6000fd5b505050506040513d602081101561146457600080fd5b5050601554604080517f9bdd7ac70000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691639bdd7ac7916004808201926020929091908290030181600087803b1580156114c657600080fd5b505af11580156114da573d6000803e3d6000fd5b505050506040513d60208110156114f057600080fd5b50519150611504838363ffffffff61430716565b6008546016546040805160e060020a6370a08231028152600160a060020a03928316600482018190529151949550919092169263b46310f692916115a691869186916370a08231916024808201926020929091908290030181600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b505050506040513d602081101561159857600080fd5b50519063ffffffff61431e16565b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156115f857600080fd5b505af115801561160c573d6000803e3d6000fd5b50506016546116289250309150600160a060020a031683614330565b601654604080517f59974e38000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a03909216916359974e389160248082019260009290919082900301818387803b15801561168e57600080fd5b505af11580156116a2573d6000803e3d6000fd5b50506008546040805160e060020a6370a0823102815233600482018190529151600160a060020a03909316945063b46310f69350909161170791879186916370a082319160248083019260209291908290030181600087803b15801561156e57600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b15801561175957600080fd5b505af115801561176d573d6000803e3d6000fd5b5050505061177c303384614330565b600b5461178f908463ffffffff61431e16565b600b556001935050505090565b600054600160a060020a03163314611800576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a03163314611886576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60018054600160a060020a038316600160a060020a0319909116811790915560408051918252517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229181900360200190a150565b600f6020526000908152604090205481565b60025481565b600b5481565b600454600160a060020a0316331480159061191e5750600554600160a060020a03163314155b80156119355750600654600160a060020a03163314155b1561194d5760068054600160a060020a031916331790555b600054600654600160a060020a039081169116146119a3576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60108054600160a060020a031916600160a060020a0392909216919091179055565b6000806000601060009054906101000a9004600160a060020a0316600160a060020a0316630f9b49556040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611a1d57600080fd5b505af1158015611a31573d6000803e3d6000fd5b505050506040513d6020811015611a4757600080fd5b50519150600190507f7300000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600088901a0216148015611a9c575060e260020a631cd554d1028514155b8015611adb57507f6900000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600087901a0216145b80611b6d57507f6900000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600088901a0216148015611b2e575060e260020a631cd554d1028414155b8015611b6d57507f7300000000000000000000000000000000000000000000000000000000000000600160f860020a031960f860020a600087901a0216145b15611b76575060025b611b86828263ffffffff61443216565b92505b505092915050565b600454600160a060020a03163314801590611bb75750600554600160a060020a03163314155b8015611bce5750600654600160a060020a03163314155b15611be65760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614611c3c576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60188054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a03163314611cc2576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b600160a060020a0381161515611d22576040805160e560020a62461bcd02815260206004820152601c60248201527f42656e6566696369617279206d757374206e6f74206265207a65726f00000000604482015290519081900360640190fd5b60038054600160a060020a038316610100810274ffffffffffffffffffffffffffffffffffffffff00199092169190911790915560408051918252517fd5da63a0b864b315bc04128dedbc93888c8529ee6cf47ce664dc204339228c539181900360200190a150565b60006060611d9b858585846136f9565b95945050505050565b60045460009081908190819081908190600160a060020a03163314801590611dd75750600554600160a060020a03163314155b8015611dee5750600654600160a060020a03163314155b15611e065760068054600160a060020a031916331790555b60e260020a631cd554d1029550611e27868860e960020a622c222902612145565b600654909550611e4990600160a060020a031660e960020a622c222902613c5d565b600654909450611e6290600160a060020a031687613c5d565b925060008411611ebc576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f206465627420746f20666f72676976650000000000000000000000000000604482015290519081900360640190fd5b848410611ec95784611ecb565b835b9150611ed78285614460565b868310611ee45786611ee6565b825b6000878152600e60205260408082205460065482517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810186905292519495501692639dc29fac9260448084019391929182900301818387803b158015611f6057600080fd5b505af1158015611f74573d6000803e3d6000fd5b50505050611f806147be565b50505050505050565b600c5460ff1681565b600e60205260009081526040902054600160a060020a031681565b600054600160a060020a03163314612011576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b600060028190556003805460ff191690556040517f6adcc7125002935e0aa31697538ebbd65cfddf20431eb6ecdcfc3e238bfd082c9190a1565b601654600160a060020a031681565b601354600160a060020a031681565b600154600160a060020a031681565b600454600160a060020a0316331480159061209e5750600554600160a060020a03163314155b80156120b55750600654600160a060020a03163314155b156120cd5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612123576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60138054600160a060020a031916600160a060020a0392909216919091179055565b601354604080517f654a60ac0000000000000000000000000000000000000000000000000000000081526004810186905260248101859052604481018490529051600092600160a060020a03169163654a60ac91606480830192602092919082900301818787803b1580156121b957600080fd5b505af11580156121cd573d6000803e3d6000fd5b505050506040513d60208110156121e357600080fd5b505190505b9392505050565b601354604080517e9919c000000000000000000000000000000000000000000000000000000000815260eb60020a620a69cb02600482018190529151600093849384939092600160a060020a0390921691629919c09160248082019260209290919082900301818887803b15801561226657600080fd5b505af115801561227a573d6000803e3d6000fd5b505050506040513d602081101561229057600080fd5b5051156122e7576040805160e560020a62461bcd02815260206004820152601960248201527f52617465207374616c65206f72206e6f7420612073796e746800000000000000604482015290519081900360640190fd5b6008546040805160e060020a6370a08231028152600160a060020a038881166004830152915191909216916370a082319160248083019260209291908290030181600087803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505050506040513d602081101561236357600080fd5b5051601454604080517fb410a034000000000000000000000000000000000000000000000000000000008152905192955061241792600160a060020a039092169163b410a034916004808201926020929091908290030181600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d60208110156123f657600080fd5b505161240b8760eb60020a620a69cb02613c5d565b9063ffffffff6148f116565b9150828210612429576000935061243c565b612439838363ffffffff61430716565b93505b505050919050565b60175481111561249e576040805160e560020a62461bcd02815260206004820152601560248201527f4761732070726963652061626f7665206c696d69740000000000000000000000604482015290519081900360640190fd5b50565b6008546040805160e060020a6370a08231028152600160a060020a038481166004830152915160009392909216916370a082319160248082019260209290919082900301818787803b1580156124f657600080fd5b505af115801561250a573d6000803e3d6000fd5b505050506040513d602081101561252057600080fd5b505192915050565b6060806000600d8054905060405190808252806020026020018201604052801561255c578160200160208202803883390190505b509150600090505b600d548110156125c657600f6000600d8381548110151561258157fe5b6000918252602080832090910154600160a060020a0316835282019290925260400190205482518390839081106125b457fe5b60209081029091010152600101612564565b50919050565b600154600160a060020a03163314612654576040805160e560020a62461bcd02815260206004820152603560248201527f596f75206d757374206265206e6f6d696e61746564206265666f726520796f7560448201527f2063616e20616363657074206f776e6572736869700000000000000000000000606482015290519081900360840190fd5b60005460015460408051600160a060020a03938416815292909116602083015280517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c9281900390910190a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60008060006126d68585613c5d565b91506126e285856134a0565b90508082106126f45760009250611b89565b612704818363ffffffff61430716565b9250611b89565b600d80548290811061271957fe5b600091825260209091200154600160a060020a0316905081565b601354604080517fac82f60800000000000000000000000000000000000000000000000000000000815260048101849052905160009283928392606092849283928392600160a060020a03169163ac82f60891602480830192602092919082900301818787803b1580156127a657600080fd5b505af11580156127ba573d6000803e3d6000fd5b505050506040513d60208110156127d057600080fd5b5051601354909550600160a060020a031663babcb4236127ee612528565b6040518263ffffffff1660e060020a0281526004018080602001828103825283818151815260200191508051906020019060200280838360005b83811015612840578181015183820152602001612828565b5050505090500192505050600060405180830381600087803b15801561286557600080fd5b505af1158015612879573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160409081528110156128a257600080fd5b8101908080516401000000008111156128ba57600080fd5b820160208101848111156128cd57600080fd5b81518560208202830111640100000000821117156128ea57600080fd5b505060209091015190965094505083159050612950576040805160e560020a62461bcd02815260206004820152600f60248201527f526174657320617265207374616c650000000000000000000000000000000000604482015290519081900360640190fd5b600091505b600d54821015612a3b57612a1c848381518110151561297057fe5b90602001906020020151600d8481548110151561298957fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b505050506040513d6020811015612a0e57600080fd5b50519063ffffffff61490616565b9050612a2e868263ffffffff61431e16565b9550600190910190612955565b612a4b868663ffffffff6148f116565b98975050505050505050565b600454600090600160a060020a03163314801590612a805750600554600160a060020a03163314155b8015612a975750600654600160a060020a03163314155b15612aaf5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612b05576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b81600160a060020a031663dbd06c856040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015612b4357600080fd5b505af1158015612b57573d6000803e3d6000fd5b505050506040513d6020811015612b6d57600080fd5b50516000818152600e6020526040902054909150600160a060020a031615612bdf576040805160e560020a62461bcd02815260206004820152601460248201527f53796e746820616c726561647920657869737473000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382166000908152600f602052604090205415612c4d576040805160e560020a62461bcd02815260206004820152601c60248201527f53796e7468206164647265737320616c72656164792065786973747300000000604482015290519081900360640190fd5b600d8054600181019091557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a03909316600160a060020a031993841681179091556000828152600e6020908152604080832080549096168417909555918152600f9091529190912055565b600454600090600160a060020a03163314801590612ceb5750600554600160a060020a03163314155b8015612d025750600654600160a060020a03163314155b15612d1a5760068054600160a060020a031916331790555b5060065460e260020a631cd554d10290612d3d90600160a060020a0316826126c7565b821115612d94576040805160e560020a62461bcd02815260206004820152601060248201527f416d6f756e7420746f6f206c6172676500000000000000000000000000000000604482015290519081900360640190fd5b612d9e818361491b565b6000818152600e60205260408082205460065482517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101879052925191169263867904b4926044808201939182900301818387803b158015612e1457600080fd5b505af1158015612e28573d6000803e3d6000fd5b50505050612e346147be565b5050565b600054600160a060020a031681565b600454600160a060020a03163314801590612e6d5750600554600160a060020a03163314155b8015612e845750600654600160a060020a03163314155b15612e9c5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614612ef2576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b6016805491151575010000000000000000000000000000000000000000000275ff00000000000000000000000000000000000000000019909216919091179055565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb25780601f10610c8757610100808354040283529160200191610cb2565b60175481565b600054600160a060020a03163314612ff9576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60048054600160a060020a038316600160a060020a0319909116811790915560408051918252517ffc80377ca9c49cc11ae6982f390a42db976d5530af7c43889264b13fbbd7c57e9181900360200190a150565b60008054600160a060020a031633146130b2576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b60035460ff16151561310e576040805160e560020a62461bcd02815260206004820152601f60248201527f53656c66204465737472756374206e6f742079657420696e6974696174656400604482015290519081900360640190fd5b426224ea006002540110151561316e576040805160e560020a62461bcd02815260206004820152601b60248201527f53656c662064657374727563742064656c6179206e6f74206d65740000000000604482015290519081900360640190fd5b5060035460408051600160a060020a0361010090930492909216808352905190917f8a09e1677ced846cb537dc2b172043bd05a1a81ad7e0033a7ef8ba762df990b7919081900360200190a180600160a060020a0316ff5b600554600160a060020a031681565b600454600160a060020a031633148015906131fb5750600554600160a060020a03163314155b80156132125750600654600160a060020a03163314155b1561322a5760068054600160a060020a031916331790555b600054600654600160a060020a03908116911614613280576040805160e560020a62461bcd0281526020600482015260136024820152600080516020615d86833981519152604482015290519081900360640190fd5b60088054600160a060020a031916600160a060020a03831617905561249e81614d82565b60008060006132b284613309565b91508115156132c457600092506132ec565b6132d78460eb60020a620a69cb02613c5d565b90506132e9818363ffffffff6148f116565b92505b5050919050565b601254600160a060020a031681565b6224ea0081565b6008546040805160e060020a6370a08231028152600160a060020a0384811660048301529151600093849316916370a0823191602480830192602092919082900301818787803b15801561335c57600080fd5b505af1158015613370573d6000803e3d6000fd5b505050506040513d602081101561338657600080fd5b5051601154909150600160a060020a03161561342f576011546040805160e060020a6370a08231028152600160a060020a038681166004830152915161342c9392909216916370a08231916024808201926020929091908290030181600087803b1580156133f357600080fd5b505af1158015613407573d6000803e3d6000fd5b505050506040513d602081101561341d57600080fd5b5051829063ffffffff61431e16565b90505b601254600160a060020a03161561349a576012546040805160e060020a6370a08231028152600160a060020a03868116600483015291516134979392909216916370a08231916024808201926020929091908290030181600087803b1580156133f357600080fd5b90505b92915050565b6000806134bf60eb60020a620a69cb026134b986613309565b85612145565b9050613550601460009054906101000a9004600160a060020a0316600160a060020a031663b410a0346040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561351757600080fd5b505af115801561352b573d6000803e3d6000fd5b505050506040513d602081101561354157600080fd5b5051829063ffffffff614ec916565b949350505050565b60006060613550848483613a35565b600454600090600160a060020a031633148015906135905750600554600160a060020a03163314155b80156135a75750600654600160a060020a03163314155b156135bf5760068054600160a060020a031916331790555b600654600160a060020a03166000908152600f60205260409020541515613630576040805160e560020a62461bcd02815260206004820152601260248201527f4f6e6c792073796e746820616c6c6f7765640000000000000000000000000000604482015290519081900360640190fd5b84831415613688576040805160e560020a62461bcd02815260206004820152601360248201527f43616e27742062652073616d652073796e746800000000000000000000000000604482015290519081900360640190fd5b600084116136e0576040805160e560020a62461bcd02815260206004820152600b60248201527f5a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6136ef86868686866000614ef5565b9695505050505050565b600454600090600160a060020a031633148015906137225750600554600160a060020a03163314155b80156137395750600654600160a060020a03163314155b156137515760068054600160a060020a031916331790555b61375a856121ef565b8311156137b1576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b6006546137ca90600160a060020a0316868686866154d2565b50600195945050505050565b601054600160a060020a031681565b6004546000908190600160a060020a031633148015906138105750600554600160a060020a03163314155b80156138275750600654600160a060020a03163314155b1561383f5760068054600160a060020a031916331790555b60065460e260020a631cd554d102925061386290600160a060020a0316836126c7565b905061386e828261491b565b6000828152600e60205260408082205460065482517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015260248101869052925191169263867904b4926044808201939182900301818387803b158015612e1457600080fd5b60035460ff1681565b600454600160a060020a03163314806139105750600554600160a060020a031633145b1515613966576040805160e560020a62461bcd02815260206004820152601760248201527f4f6e6c79207468652070726f78792063616e2063616c6c000000000000000000604482015290519081900360640190fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b600054600160a060020a031633146139ec576040805160e560020a62461bcd02815260206004820152602f6024820152600080516020615d468339815191526044820152600080516020615d66833981519152606482015290519081900360840190fd5b426002556003805460ff19166001179055604080516224ea00815290517fcbd94ca75b8dc45c9d80c77e851670e78843c0d75180cb81db3e2158228fa9a69181900360200190a1565b600454600090600160a060020a03163314801590613a5e5750600554600160a060020a03163314155b8015613a755750600654600160a060020a03163314155b15613a8d5760068054600160a060020a031916331790555b600654613aa290600160a060020a03166121ef565b831115613af9576040805160e560020a62461bcd02815260206004820152601460248201527f496e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b600654613b1190600160a060020a03168585856155e2565b506001949350505050565b601554600160a060020a031681565b6003546101009004600160a060020a031681565b601360009054906101000a9004600160a060020a0316600160a060020a0316637dc0d1d06040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015613b9257600080fd5b505af1158015613ba6573d6000803e3d6000fd5b505050506040513d6020811015613bbc57600080fd5b5051600160a060020a03163314613c1d576040805160e560020a62461bcd02815260206004820152601360248201527f4f6e6c79206f7261636c6520616c6c6f77656400000000000000000000000000604482015290519081900360640190fd5b60168054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b601454604080517f8b3f8088000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859485948594859485949190911692638b3f8088926024808201939182900301818787803b158015613ccd57600080fd5b505af1158015613ce1573d6000803e3d6000fd5b505050506040513d6040811015613cf757600080fd5b5080516020909101519095509350841515613d155760009550613e7e565b601454604080517f08d95cd5000000000000000000000000000000000000000000000000000000008152600481018790529051613e56928892613e4a92600160a060020a03909216916308d95cd5916024808201926020929091908290030181600087803b158015613d8657600080fd5b505af1158015613d9a573d6000803e3d6000fd5b505050506040513d6020811015613db057600080fd5b5051601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916346317712916004808201926020929091908290030181600087803b158015613e1257600080fd5b505af1158015613e26573d6000803e3d6000fd5b505050506040513d6020811015613e3c57600080fd5b50519063ffffffff6155f016565b9063ffffffff61560916565b9250613e6187612733565b9150613e7083613e4a84615622565b9050613e7b81615638565b95505b505050505092915050565b600654600160a060020a031681565b601454600160a060020a031681565b600d545b90565b600854604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015284811660248301529151600093929092169163dd62ed3e9160448082019260209290919082900301818787803b158015613f2157600080fd5b505af1158015613f35573d6000803e3d6000fd5b505050506040513d6020811015613f4b57600080fd5b50519392505050565b601154600160a060020a031681565b600854600160a060020a031681565b600454600160a060020a031681565b600454600090600160a060020a03163314801590613faa5750600554600160a060020a03163314155b8015613fc15750600654600160a060020a03163314155b15613fd95760068054600160a060020a031916331790555b83821415614031576040805160e560020a62461bcd02815260206004820152601960248201527f4d7573742075736520646966666572656e742073796e74687300000000000000604482015290519081900360640190fd5b60008311614089576040805160e560020a62461bcd02815260206004820152600b60248201527f5a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6140923a612444565b60165474010000000000000000000000000000000000000000900460ff161561414c576000848152600e60205260408082205460065482517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152602481018890529251911692639dc29fac926044808201939182900301818387803b15801561412b57600080fd5b505af115801561413f573d6000803e3d6000fd5b50505050600190506121e8565b60065461416790600160a060020a0316858585836001614ef5565b90506121e8565b6016547501000000000000000000000000000000000000000000900460ff1681565b601854600160a060020a031681565b600480546040805160208082018690528251808303820181528284018085527f417070726f76616c28616464726573732c616464726573732c75696e7432353690527f29000000000000000000000000000000000000000000000000000000000000006060840152925191829003606101822060e060020a63907dff9702835260036024840181905260448401829052600160a060020a038a8116606486018190528a821660848701819052600060a4880181905260c09a88019a8b52885160c48901528851939099169963907dff97999497959692959194939092839260e40191908a0190808383885b838110156142a257818101518382015260200161428a565b50505050905090810190601f1680156142cf5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156142f357600080fd5b505af1158015611f80573d6000803e3d6000fd5b6000808383111561431757600080fd5b5050900390565b6000828201838110156121e857600080fd5b600480546040805160208082018690528251808303820181528284018085527f5472616e7366657228616464726573732c616464726573732c75696e7432353690527f29000000000000000000000000000000000000000000000000000000000000006060840152925191829003606101822060e060020a63907dff9702835260036024840181905260448401829052600160a060020a038a8116606486018190528a821660848701819052600060a4880181905260c09a88019a8b52885160c48901528851939099169963907dff97999497959692959194939092839260e40191908a019080838388838110156142a257818101518382015260200161428a565b6000808315156144455760009150610e78565b5082820282848281151561445557fe5b04146121e857600080fd5b816000808080808061447a60e960020a622c222902612733565b955061448c868863ffffffff61430716565b945060009350600085111561450f576144ab878663ffffffff6155f016565b925061450c837384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156144f857600080fd5b505af4158015611582573d6000803e3d6000fd5b93505b8787141561460e57601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526000602482018190529151929093169263a764eb45926044808301939282900301818387803b15801561458657600080fd5b505af115801561459a573d6000803e3d6000fd5b50505050601460009054906101000a9004600160a060020a0316600160a060020a031663ba08f2996040518163ffffffff1660e060020a028152600401600060405180830381600087803b1580156145f157600080fd5b505af1158015614605573d6000803e3d6000fd5b505050506146bc565b61461e888863ffffffff61430716565b9150614630828663ffffffff6155f016565b601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101859052905193945091169163a764eb459160448082019260009290919082900301818387803b1580156146a357600080fd5b505af11580156146b7573d6000803e3d6000fd5b505050505b601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691633d31e97b9161476291889185916346317712916004808201926020929091908290030181600087803b15801561472a57600080fd5b505af115801561473e573d6000803e3d6000fd5b505050506040513d602081101561475457600080fd5b50519063ffffffff61560916565b6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b15801561479b57600080fd5b505af11580156147af573d6000803e3d6000fd5b50505050505050505050505050565b601454600654604080517f8b3f8088000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152815160009485941692638b3f8088926024808201939182900301818787803b15801561482657600080fd5b505af115801561483a573d6000803e3d6000fd5b505050506040513d604081101561485057600080fd5b508051602090910151601054600654604080517f86645274000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101869052604481018590529051949650929450169163866452749160648082019260009290919082900301818387803b1580156148d557600080fd5b505af11580156148e9573d6000803e3d6000fd5b505050505050565b60006121e88383670de0b6b3a764000061565a565b60006121e88383670de0b6b3a764000061569e565b600080600080600080614938888860e960020a622c222902612145565b955061494c60e960020a622c222902612733565b945061495e868663ffffffff61431e16565b9350614970868563ffffffff6155f016565b92506149f5837384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156149bd57600080fd5b505af41580156149d1573d6000803e3d6000fd5b505050506040513d60208110156149e757600080fd5b50519063ffffffff61430716565b600654909250614a1790600160a060020a031660e960020a622c222902613c5d565b90506000811115614a4557614a4284614a36888463ffffffff61431e16565b9063ffffffff6155f016565b92505b801515614ab857601460009054906101000a9004600160a060020a0316600160a060020a0316631bfba5956040518163ffffffff1660e060020a028152600401600060405180830381600087803b158015614a9f57600080fd5b505af1158015614ab3573d6000803e3d6000fd5b505050505b601454600654604080517fa764eb45000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018790529051919092169163a764eb4591604480830192600092919082900301818387803b158015614b2957600080fd5b505af1158015614b3d573d6000803e3d6000fd5b505050506000601460009054906101000a9004600160a060020a0316600160a060020a031663cd92eba96040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015614b9657600080fd5b505af1158015614baa573d6000803e3d6000fd5b505050506040513d6020811015614bc057600080fd5b50511115614c8c57601454604080517f463177120000000000000000000000000000000000000000000000000000000081529051600160a060020a0390921691633d31e97b91614c3691869185916346317712916004808201926020929091908290030181600087803b15801561472a57600080fd5b6040518263ffffffff1660e060020a02815260040180828152602001915050600060405180830381600087803b158015614c6f57600080fd5b505af1158015614c83573d6000803e3d6000fd5b50505050614d78565b601460009054906101000a9004600160a060020a0316600160a060020a0316633d31e97b7384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63d5e5e6e66040518163ffffffff1660e060020a02815260040160206040518083038186803b158015614cf757600080fd5b505af4158015614d0b573d6000803e3d6000fd5b505050506040513d6020811015614d2157600080fd5b50516040805160e060020a63ffffffff8516028152600481019290925251602480830192600092919082900301818387803b158015614d5f57600080fd5b505af1158015614d73573d6000803e3d6000fd5b505050505b5050505050505050565b6004805460408051600160a060020a038581166020808401919091528351808403820181528385018086527f546f6b656e5374617465557064617465642861646472657373290000000000009052935192839003605a01832060e060020a63907dff97028452600160248501819052604485018290526000606486018190526084860181905260a4860181905260c0988601988952865160c48701528651949097169763907dff979791959294919384938493839260e4909201918a0190808383885b83811015614e5d578181015183820152602001614e45565b50505050905090810190601f168015614e8a5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015614eae57600080fd5b505af1158015614ec2573d6000803e3d6000fd5b5050505050565b6000670de0b6b3a7640000614ee4848463ffffffff61443216565b811515614eed57fe5b049392505050565b6000806000806000808b601060009054906101000a9004600160a060020a0316600160a060020a031663eb1edd616040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015614f5257600080fd5b505af1158015614f66573d6000803e3d6000fd5b505050506040513d6020811015614f7c57600080fd5b5051600160a060020a0382811691161415614fe1576040805160e560020a62461bcd02815260206004820152601760248201527f4665652061646472657373206e6f7420616c6c6f776564000000000000000000604482015290519081900360640190fd5b6016547501000000000000000000000000000000000000000000900460ff161515615056576040805160e560020a62461bcd02815260206004820152601660248201527f45786368616e67696e672069732064697361626c656400000000000000000000604482015290519081900360640190fd5b600e60008d6000191660001916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a0316639dc29fac8e8d6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b1580156150e757600080fd5b505af11580156150fb573d6000803e3d6000fd5b5050505061510a8c8c8c612145565b9550859450600093508715615195576151238c8b6119c5565b9250615180615173847384d626b2bb4d0f064067e4bf80fce7055d8f3e7b63907af6c06040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156149bd57600080fd5b879063ffffffff614ec916565b9450615192868663ffffffff61430716565b93505b60008a8152600e60205260408082205481517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a038d81166004830152602482018a90529251929091169263867904b49260448084019382900301818387803b15801561520957600080fd5b505af115801561521d573d6000803e3d6000fd5b5050505060008411156153ee5761523e8a8560e960020a622c222902612145565b60e960020a622c2229026000908152600e60209081527f24466f25c15cd38334941647ac559e67e1ead957cc1be398ef066877266eac9254601054604080517feb1edd610000000000000000000000000000000000000000000000000000000081529051959750600160a060020a039283169563867904b495939092169363eb1edd619360048084019492938390030190829087803b1580156152e057600080fd5b505af11580156152f4573d6000803e3d6000fd5b505050506040513d602081101561530a57600080fd5b50516040805160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820186905251604480830192600092919082900301818387803b15801561535757600080fd5b505af115801561536b573d6000803e3d6000fd5b5050601054604080517f22bf55ef000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921693506322bf55ef925060248082019260009290919082900301818387803b1580156153d557600080fd5b505af11580156153e9573d6000803e3d6000fd5b505050505b600e60008b6000191660001916815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a031663eb6ecc038e8b886040518463ffffffff1660e060020a0281526004018084600160a060020a0316600160a060020a0316815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b15801561549957600080fd5b505af11580156154ad573d6000803e3d6000fd5b505050506154bf8d8d8d8d898e6156cb565b5060019c9b505050505050505050505050565b600854604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152600160a060020a03878116600483015288811660248301529151600093929092169163da46098c9188918a9161556b918991879163dd62ed3e9160448082019260209290919082900301818d87803b15801561555757600080fd5b505af11580156149d1573d6000803e3d6000fd5b6040805160e060020a63ffffffff8716028152600160a060020a03948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b1580156155be57600080fd5b505af11580156155d2573d6000803e3d6000fd5b505050506136ef8585858561585f565b6000611d9b8585858561585f565b60006121e883836b033b2e3c9fd0803ce800000061565a565b60006121e883836b033b2e3c9fd0803ce800000061569e565b600061349a82633b9aca0063ffffffff61443216565b60006305f5e10082046005600a82061061565057600a015b600a900492915050565b6000806156808461567487600a870263ffffffff61443216565b9063ffffffff615b3916565b90506005600a825b061061569257600a015b600a9004949350505050565b600080600a83046156b5868663ffffffff61443216565b8115156156be57fe5b0490506005600a82615688565b600480546040805160208082018a90528183018990526060820188905260808201879052600160a060020a0386811660a0808501919091528451808503909101815260c08085018087527f53796e746845786368616e676528616464726573732c627974657333322c756990527f6e743235362c627974657333322c75696e743235362c6164647265737329000060e086015294519384900360fe01842060e060020a63907dff97028552600260248601819052604486018290528e84166064870181905260006084880181905260a48801819052998701978852835160c48801528351949098169863907dff9798939791969295939490938493839260e4909101918a0190808383885b838110156157ee5781810151838201526020016157d6565b50505050905090810190601f16801561581b5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561583f57600080fd5b505af1158015615853573d6000803e3d6000fd5b50505050505050505050565b6000600160a060020a03841615156158c1576040805160e560020a62461bcd02815260206004820181905260248201527f43616e6e6f74207472616e7366657220746f2074686520302061646472657373604482015290519081900360640190fd5b600160a060020a038416301415615922576040805160e560020a62461bcd02815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f2074686520636f6e747261637400604482015290519081900360640190fd5b600454600160a060020a0385811691161415615988576040805160e560020a62461bcd02815260206004820152601c60248201527f43616e6e6f74207472616e7366657220746f207468652070726f787900000000604482015290519081900360640190fd5b6008546040805160e060020a6370a08231028152600160a060020a0388811660048301529151919092169163b46310f69188916159eb91889186916370a08231916024808201926020929091908290030181600087803b15801561555757600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015615a3d57600080fd5b505af1158015615a51573d6000803e3d6000fd5b50506008546040805160e060020a6370a08231028152600160a060020a038981166004830152915191909216935063b46310f692508791615ab891889186916370a08231916024808201926020929091908290030181600087803b15801561156e57600080fd5b6040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050600060405180830381600087803b158015615b0a57600080fd5b505af1158015615b1e573d6000803e3d6000fd5b50505050615b2d858585614330565b613b1185858585615b5c565b600080808311615b4857600080fd5b8284811515615b5357fe5b04949350505050565b6007805460010190819055833b9060009081831115615cf057620186a05a10615b8857620186a0615b8a565b5a5b915085600160a060020a0316828887876040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015615bf8578181015183820152602001615be0565b50505050905090810190601f168015615c255780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0ee0b8a000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b83811015615cac578181015183820152602001615c94565b50505050905090810190601f168015615cd95780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008787f1505050505b6007548114611f8057600080fd5b815481835581811115615d2257600083815260209020615d22918101908301615d27565b505050565b613eab91905b80821115615d415760008155600101615d2d565b509056004f6e6c792074686520636f6e7472616374206f776e6572206d617920706572666f726d207468697320616374696f6e00000000000000000000000000000000004f776e6572206f6e6c792066756e6374696f6e00000000000000000000000000a165627a7a7230582013db7f2ef945de98bb6e1aad7a2961ea3171379aa9c96160599d2cf65d82338f0029000000000000000000000000c011a72400e58ecd99ee497cf89e3775d4bd732f0000000000000000000000005b1b5fea1b99d83ad479df0c222f0492385381dd0000000000000000000000004b9ca5607f1ff8019c1c6a3c2f0cc8de622d5b82000000000000000000000000b64ff7a4a33acdf48d97dab0d764afd0f6176882000000000000000000000000565c9eb432f4ae9633e50e1213ab4f23d8f31f54000000000000000000000000a8cb0b163cefb21f22c72f6a7d243184bd688a5a000000000000000000000000a05e45396703babaa9c276b5e5a9b6e2c175b521000000000000000000000000b671f2210b1f6621a2607ea63e6b2dc3e2464d1f000000000000000000000000971e78e0c92392a4e39099835cf7e6ab535b2227000000000000000000000000ffa72fd80d8a84032d855bfb67036baf45949009000000000000000000000000000000000000000000813f3978f89409843fffea",
"result": "0x4b144999650fdc87b42ed184e73918ac22d70f01"
},
"empty init code": {
"address": "0x0000000000000000000000000000000000000000",
"salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
"init_code": "0x",
"result": "0xE33C0C7F7df4809055C3ebA6c09CFe4BaF1BD9e0"
}
}
}
{
"source": "https://github.com/ethereum/tests/blob/develop/RLPTests/rlptest.json",
"notes": "Removed BigInt test, since ethers does not support integers over 10^16: https://github.com/ethers-io/ethers.js/issues/418",
"latestcommit": "b2dcd19973637ac05e17646378dac9cbb2927075",
"date": "2020-01-08",
"rlpTests": {
"emptystring": {
"in": "",
"out": "0x80"
},
"bytestring00": {
"in": "\u0000",
"out": "0x00"
},
"bytestring01": {
"in": "\u0001",
"out": "0x01"
},
"bytestring7F": {
"in": "\u007F",
"out": "0x7f"
},
"shortstring": {
"in": "dog",
"out": "0x83646f67"
},
"shortstring2": {
"in": "Lorem ipsum dolor sit amet, consectetur adipisicing eli",
"out": "0xb74c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365637465747572206164697069736963696e6720656c69"
},
"longstring": {
"in": "Lorem ipsum dolor sit amet, consectetur adipisicing elit",
"out": "0xb8384c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e7365637465747572206164697069736963696e6720656c6974"
},
"longstring2": {
"in": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur mauris magna, suscipit sed vehicula non, iaculis faucibus tortor. Proin suscipit ultricies malesuada. Duis tortor elit, dictum quis tristique eu, ultrices at risus. Morbi a est imperdiet mi ullamcorper aliquet suscipit nec lorem. Aenean quis leo mollis, vulputate elit varius, consequat enim. Nulla ultrices turpis justo, et posuere urna consectetur nec. Proin non convallis metus. Donec tempor ipsum in mauris congue sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse convallis sem vel massa faucibus, eget lacinia lacus tempor. Nulla quis ultricies purus. Proin auctor rhoncus nibh condimentum mollis. Aliquam consequat enim at metus luctus, a eleifend purus egestas. Curabitur at nibh metus. Nam bibendum, neque at auctor tristique, lorem libero aliquet arcu, non interdum tellus lectus sit amet eros. Cras rhoncus, metus ac ornare cursus, dolor justo ultrices metus, at ullamcorper volutpat",
"out": "0xb904004c6f72656d20697073756d20646f6c6f722073697420616d65742c20636f6e73656374657475722061646970697363696e6720656c69742e20437572616269747572206d6175726973206d61676e612c20737573636970697420736564207665686963756c61206e6f6e2c20696163756c697320666175636962757320746f72746f722e2050726f696e20737573636970697420756c74726963696573206d616c6573756164612e204475697320746f72746f7220656c69742c2064696374756d2071756973207472697374697175652065752c20756c7472696365732061742072697375732e204d6f72626920612065737420696d70657264696574206d6920756c6c616d636f7270657220616c6971756574207375736369706974206e6563206c6f72656d2e2041656e65616e2071756973206c656f206d6f6c6c69732c2076756c70757461746520656c6974207661726975732c20636f6e73657175617420656e696d2e204e756c6c6120756c74726963657320747572706973206a7573746f2c20657420706f73756572652075726e6120636f6e7365637465747572206e65632e2050726f696e206e6f6e20636f6e76616c6c6973206d657475732e20446f6e65632074656d706f7220697073756d20696e206d617572697320636f6e67756520736f6c6c696369747564696e2e20566573746962756c756d20616e746520697073756d207072696d697320696e206661756369627573206f726369206c756374757320657420756c74726963657320706f737565726520637562696c69612043757261653b2053757370656e646973736520636f6e76616c6c69732073656d2076656c206d617373612066617563696275732c2065676574206c6163696e6961206c616375732074656d706f722e204e756c6c61207175697320756c747269636965732070757275732e2050726f696e20617563746f722072686f6e637573206e69626820636f6e64696d656e74756d206d6f6c6c69732e20416c697175616d20636f6e73657175617420656e696d206174206d65747573206c75637475732c206120656c656966656e6420707572757320656765737461732e20437572616269747572206174206e696268206d657475732e204e616d20626962656e64756d2c206e6571756520617420617563746f72207472697374697175652c206c6f72656d206c696265726f20616c697175657420617263752c206e6f6e20696e74657264756d2074656c6c7573206c65637475732073697420616d65742065726f732e20437261732072686f6e6375732c206d65747573206163206f726e617265206375727375732c20646f6c6f72206a7573746f20756c747269636573206d657475732c20617420756c6c616d636f7270657220766f6c7574706174"
},
"zero": {
"in": 0,
"out": "0x80"
},
"smallint": {
"in": 1,
"out": "0x01"
},
"smallint2": {
"in": 16,
"out": "0x10"
},
"smallint3": {
"in": 79,
"out": "0x4f"
},
"smallint4": {
"in": 127,
"out": "0x7f"
},
"mediumint1": {
"in": 128,
"out": "0x8180"
},
"mediumint2": {
"in": 1000,
"out": "0x8203e8"
},
"mediumint3": {
"in": 100000,
"out": "0x830186a0"
},
"mediumint4": {
"in": "#83729609699884896815286331701780722",
"out": "0x8f102030405060708090a0b0c0d0e0f2"
},
"mediumint5": {
"in": "#105315505618206987246253880190783558935785933862974822347068935681",
"out": "0x9c0100020003000400050006000700080009000a000b000c000d000e01"
},
"emptylist": {
"in": [],
"out": "0xc0"
},
"stringlist": {
"in": [ "dog", "god", "cat" ],
"out": "0xcc83646f6783676f6483636174"
},
"multilist": {
"in": [ "zw", [ 4 ], 1 ],
"out": "0xc6827a77c10401"
},
"shortListMax1": {
"in": [ "asdf", "qwer", "zxcv", "asdf","qwer", "zxcv", "asdf", "qwer", "zxcv", "asdf", "qwer"],
"out": "0xf784617364668471776572847a78637684617364668471776572847a78637684617364668471776572847a78637684617364668471776572"
},
"longList1" : {
"in" : [
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"]
],
"out": "0xf840cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
},
"longList2" : {
"in" : [
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"],
["asdf","qwer","zxcv"]
],
"out": "0xf90200cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376cf84617364668471776572847a786376"
},
"listsoflists": {
"in": [ [ [], [] ], [] ],
"out": "0xc4c2c0c0c0"
},
"listsoflists2": {
"in": [ [], [[]], [ [], [[]] ] ],
"out": "0xc7c0c1c0c3c0c1c0"
},
"dictTest1" : {
"in" : [
["key1", "val1"],
["key2", "val2"],
["key3", "val3"],
["key4", "val4"]
],
"out" : "0xecca846b6579318476616c31ca846b6579328476616c32ca846b6579338476616c33ca846b6579348476616c34"
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,3 +6,4 @@ export * from './mocks'
export * from './buffer-utils'
export * from './byte-utils'
export * from './codec'
export * from './data'
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment