From aaf9be2b4fd72483311f6c1644c2e6f840b9f38c Mon Sep 17 00:00:00 2001 From: David Date: Mon, 28 Oct 2024 15:13:36 +0800 Subject: [PATCH 01/30] feat(beacon): introduce soft blocks --- core/rawdb/gen_taiko_l1_origin.go | 24 ++++++++++++++++++++++++ core/rawdb/taiko_l1_origin.go | 12 ++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/core/rawdb/gen_taiko_l1_origin.go b/core/rawdb/gen_taiko_l1_origin.go index 6cbd6c3cdbc0..199ca1dd4e05 100644 --- a/core/rawdb/gen_taiko_l1_origin.go +++ b/core/rawdb/gen_taiko_l1_origin.go @@ -20,12 +20,20 @@ func (l L1Origin) MarshalJSON() ([]byte, error) { L2BlockHash common.Hash `json:"l2BlockHash"` L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + BatchID *big.Int `json:"batchID"` + EndOfBlock bool `json:"endOfBlock"` + EndOfPreconf bool `json:"endOfPreconf"` + Preconfer common.Address `json:"preconfer"` } var enc L1Origin enc.BlockID = (*math.HexOrDecimal256)(l.BlockID) enc.L2BlockHash = l.L2BlockHash enc.L1BlockHeight = (*math.HexOrDecimal256)(l.L1BlockHeight) enc.L1BlockHash = l.L1BlockHash + enc.BatchID = l.BatchID + enc.EndOfBlock = l.EndOfBlock + enc.EndOfPreconf = l.EndOfPreconf + enc.Preconfer = l.Preconfer return json.Marshal(&enc) } @@ -36,6 +44,10 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { L2BlockHash *common.Hash `json:"l2BlockHash"` L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` L1BlockHash *common.Hash `json:"l1BlockHash" gencodec:"required"` + BatchID *big.Int `json:"batchID"` + EndOfBlock *bool `json:"endOfBlock"` + EndOfPreconf *bool `json:"endOfPreconf"` + Preconfer *common.Address `json:"preconfer"` } var dec L1Origin if err := json.Unmarshal(input, &dec); err != nil { @@ -56,5 +68,17 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { return errors.New("missing required field 'l1BlockHash' for L1Origin") } l.L1BlockHash = *dec.L1BlockHash + if dec.BatchID != nil { + l.BatchID = dec.BatchID + } + if dec.EndOfBlock != nil { + l.EndOfBlock = *dec.EndOfBlock + } + if dec.EndOfPreconf != nil { + l.EndOfPreconf = *dec.EndOfPreconf + } + if dec.Preconfer != nil { + l.Preconfer = *dec.Preconfer + } return nil } diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index aaa5c14832f3..04278e5b49b8 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -29,10 +29,14 @@ func l1OriginKey(blockID *big.Int) []byte { // L1Origin represents a L1Origin of a L2 block. type L1Origin struct { - BlockID *big.Int `json:"blockID" gencodec:"required"` - L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *big.Int `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + BlockID *big.Int `json:"blockID" gencodec:"required"` + L2BlockHash common.Hash `json:"l2BlockHash"` + L1BlockHeight *big.Int `json:"l1BlockHeight" gencodec:"required"` + L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + BatchID *big.Int `json:"batchID"` + EndOfBlock bool `json:"endOfBlock"` + EndOfPreconf bool `json:"endOfPreconf"` + Preconfer common.Address `json:"preconfer"` } type l1OriginMarshaling struct { From 028fdd21d620620befd437cf3492b8140687d817 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 28 Oct 2024 15:26:34 +0800 Subject: [PATCH 02/30] feat: update api.go --- eth/catalyst/api.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 17fcfdfd3a89..5f86d0101f63 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -488,8 +488,10 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl // Write L1Origin. rawdb.WriteL1Origin(api.eth.ChainDb(), l1Origin.BlockID, l1Origin) - // Write the head L1Origin. - rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) + // Write the head L1Origin, only when its not a soft block. + if l1Origin.BatchID == nil { + rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) + } return valid(&id), nil } From 3ea9a79465a8b9c774dd3ce32644d90d642a23dd Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 14:20:55 +0800 Subject: [PATCH 03/30] chore(ci): update CI --- .github/workflows/docker.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 03f98f91938d..5c9e3d775f12 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push multi-arch docker image to GAR" on: push: - branches: [ taiko ] + branches: [ taiko, softblock ] tags: - "v*" @@ -19,9 +19,9 @@ jobs: platform: linux/amd64 - runner: arc-runner-set-arm64 platform: linux/arm64 - + runs-on: ${{ matrix.runner }} - + steps: - name: Prepare Environment run: | @@ -80,7 +80,7 @@ jobs: with: context: . cache-from: type=gha - cache-to: type=gha,mode=max + cache-to: type=gha,mode=max platforms: ${{ matrix.platform }} push: true tags: ${{ env.REGISTRY_IMAGE }} From 47538d588fc1416871482bf7ca695244f339252d Mon Sep 17 00:00:00 2001 From: David Date: Tue, 29 Oct 2024 16:06:52 +0800 Subject: [PATCH 04/30] feat: update L1Origin --- core/rawdb/gen_taiko_l1_origin.go | 18 ++++++++---------- core/rawdb/taiko_l1_origin.go | 4 ++-- eth/catalyst/api.go | 11 +++++++++++ 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/core/rawdb/gen_taiko_l1_origin.go b/core/rawdb/gen_taiko_l1_origin.go index 199ca1dd4e05..56fadb5b585c 100644 --- a/core/rawdb/gen_taiko_l1_origin.go +++ b/core/rawdb/gen_taiko_l1_origin.go @@ -18,8 +18,8 @@ func (l L1Origin) MarshalJSON() ([]byte, error) { type L1Origin struct { BlockID *math.HexOrDecimal256 `json:"blockID" gencodec:"required"` L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight"` + L1BlockHash common.Hash `json:"l1BlockHash"` BatchID *big.Int `json:"batchID"` EndOfBlock bool `json:"endOfBlock"` EndOfPreconf bool `json:"endOfPreconf"` @@ -42,8 +42,8 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { type L1Origin struct { BlockID *math.HexOrDecimal256 `json:"blockID" gencodec:"required"` L2BlockHash *common.Hash `json:"l2BlockHash"` - L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash *common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *math.HexOrDecimal256 `json:"l1BlockHeight"` + L1BlockHash *common.Hash `json:"l1BlockHash"` BatchID *big.Int `json:"batchID"` EndOfBlock *bool `json:"endOfBlock"` EndOfPreconf *bool `json:"endOfPreconf"` @@ -60,14 +60,12 @@ func (l *L1Origin) UnmarshalJSON(input []byte) error { if dec.L2BlockHash != nil { l.L2BlockHash = *dec.L2BlockHash } - if dec.L1BlockHeight == nil { - return errors.New("missing required field 'l1BlockHeight' for L1Origin") + if dec.L1BlockHeight != nil { + l.L1BlockHeight = (*big.Int)(dec.L1BlockHeight) } - l.L1BlockHeight = (*big.Int)(dec.L1BlockHeight) - if dec.L1BlockHash == nil { - return errors.New("missing required field 'l1BlockHash' for L1Origin") + if dec.L1BlockHash != nil { + l.L1BlockHash = *dec.L1BlockHash } - l.L1BlockHash = *dec.L1BlockHash if dec.BatchID != nil { l.BatchID = dec.BatchID } diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 04278e5b49b8..549c1a9a1f5d 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -31,8 +31,8 @@ func l1OriginKey(blockID *big.Int) []byte { type L1Origin struct { BlockID *big.Int `json:"blockID" gencodec:"required"` L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *big.Int `json:"l1BlockHeight" gencodec:"required"` - L1BlockHash common.Hash `json:"l1BlockHash" gencodec:"required"` + L1BlockHeight *big.Int `json:"l1BlockHeight"` + L1BlockHash common.Hash `json:"l1BlockHash"` BatchID *big.Int `json:"batchID"` EndOfBlock bool `json:"endOfBlock"` EndOfPreconf bool `json:"endOfPreconf"` diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 5f86d0101f63..1b6f38f3e582 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -446,6 +446,17 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl if payloadAttributes != nil { // CHANGE(taiko): create a L2 block by Taiko protocol. if isTaiko { + // L1Origin is a required field in PayloadAttributesV1. + if payloadAttributes.L1Origin == nil { + return valid(nil), engine.InvalidPayloadAttributes.With(errors.New("L1Origin is nil")) + } + // If its not a softblock creation request, then `L1BlockHash` and `L1BlockHeight` are required. + if payloadAttributes.L1Origin.BatchID == nil && + (payloadAttributes.L1Origin.L1BlockHash == (common.Hash{}) || + payloadAttributes.L1Origin.L1BlockHeight == nil) { + return valid(nil), engine.InvalidPayloadAttributes.With(errors.New("L1BlockHash or L1BlockHeight is nil")) + } + // No need to check payloadAttribute here, because all its fields are // marked as required. block, err := api.eth.Miner().SealBlockWith( From c4cbc82e85d85b59ddd83d7164c0a20372d4ec7b Mon Sep 17 00:00:00 2001 From: David Date: Wed, 30 Oct 2024 16:15:09 +0800 Subject: [PATCH 05/30] feat: update `verifyHeader` --- consensus/taiko/consensus.go | 20 +++++++++++++++----- consensus/taiko/consensus_test.go | 2 +- eth/ethconfig/config.go | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 3ec5255c134d..70c332ae9d0e 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -10,10 +10,12 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" + "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" + "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -40,12 +42,13 @@ var ( // Taiko is a consensus engine used by L2 rollup. type Taiko struct { chainConfig *params.ChainConfig + chainDB ethdb.Database taikoL2Address common.Address } var _ = new(Taiko) -func New(chainConfig *params.ChainConfig) *Taiko { +func New(chainConfig *params.ChainConfig, chainDB ethdb.Database) *Taiko { taikoL2AddressPrefix := strings.TrimPrefix(chainConfig.ChainID.String(), "0") return &Taiko{ @@ -56,6 +59,7 @@ func New(chainConfig *params.ChainConfig) *Taiko { strings.Repeat("0", common.AddressLength*2-len(taikoL2AddressPrefix)-len(TaikoL2AddressSuffix)) + TaikoL2AddressSuffix, ), + chainDB: chainDB, } } @@ -82,7 +86,7 @@ func (t *Taiko) VerifyHeader(chain consensus.ChainHeaderReader, header *types.He return consensus.ErrUnknownAncestor } // Sanity checks passed, do a proper verification - return t.verifyHeader(chain, header, parent, time.Now().Unix()) + return t.verifyHeader(header, parent, time.Now().Unix()) } // VerifyHeaders is similar to VerifyHeader, but verifies a batch of headers @@ -109,7 +113,7 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type if parent == nil { err = consensus.ErrUnknownAncestor } else { - err = t.verifyHeader(chain, header, parent, unixNow) + err = t.verifyHeader(header, parent, unixNow) } select { case <-abort: @@ -121,8 +125,14 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type return abort, results } -func (t *Taiko) verifyHeader(chain consensus.ChainHeaderReader, header, parent *types.Header, unixNow int64) error { - if header.Time > uint64(unixNow) { +func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error { + l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) + if err != nil { + return err + } + + // If the current block is not a soft block, then check the timestamp. + if (l1Origin == nil || l1Origin.L1BlockHeight != nil) && header.Time > uint64(unixNow) { return consensus.ErrFutureBlock } diff --git a/consensus/taiko/consensus_test.go b/consensus/taiko/consensus_test.go index 3e06ac658129..ba4785ff1d42 100644 --- a/consensus/taiko/consensus_test.go +++ b/consensus/taiko/consensus_test.go @@ -39,7 +39,7 @@ func init() { config.ArrowGlacierBlock = nil config.Ethash = nil config.Taiko = true - testEngine = taiko.New(config) + testEngine = taiko.New(config, rawdb.NewMemoryDatabase()) taikoL2AddressPrefix := strings.TrimPrefix(config.ChainID.String(), "0") diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index f51a6d7662b4..1fd9b1cf37c0 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -165,7 +165,7 @@ type Config struct { func CreateConsensusEngine(config *params.ChainConfig, db ethdb.Database) (consensus.Engine, error) { // CHANGE(taiko): use Taiko consensus engine when the --taiko flag is set. if config.Taiko { - return taiko.New(config), nil + return taiko.New(config, db), nil } // Geth v1.14.0 dropped support for non-merged networks in any consensus // mode. If such a network is requested, reject startup. From 43ab184d9ebd461ffbad185a6eb0d234d81bc694 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2024 12:45:38 +0800 Subject: [PATCH 06/30] test: update tests --- core/rawdb/taiko_l1_origin.go | 13 +++++++++++++ ethclient/taiko_api_test.go | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 549c1a9a1f5d..c5a3ff5f5246 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -44,6 +44,19 @@ type l1OriginMarshaling struct { L1BlockHeight *math.HexOrDecimal256 } +// IsSoftblock returns true if the L1Origin is a softblock. +func (l *L1Origin) IsSoftblock() bool { + if l.BatchID == nil { + return true + } + + if l.BatchID.Cmp(common.Big0) == 0 && l.Preconfer == (common.Address{}) { + return false + } + + return true +} + // WriteL1Origin stores a L1Origin into the database. func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin) { data, err := rlp.EncodeToBytes(l1Origin) diff --git a/ethclient/taiko_api_test.go b/ethclient/taiko_api_test.go index 7a7cfc7dcd4c..839918046036 100644 --- a/ethclient/taiko_api_test.go +++ b/ethclient/taiko_api_test.go @@ -69,6 +69,10 @@ func TestHeadL1Origin(t *testing.T) { L2BlockHash: headerHash, L1BlockHeight: randomBigInt(), L1BlockHash: randomHash(), + BatchID: common.Big0, + EndOfBlock: false, + EndOfPreconf: false, + Preconfer: common.Address{}, } rawdb.WriteL1Origin(db, testL1Origin.BlockID, testL1Origin) @@ -78,6 +82,7 @@ func TestHeadL1Origin(t *testing.T) { require.Nil(t, err) require.Equal(t, testL1Origin, l1OriginFound) + require.False(t, l1OriginFound.IsSoftblock()) } func TestL1OriginByID(t *testing.T) { @@ -89,6 +94,10 @@ func TestL1OriginByID(t *testing.T) { L2BlockHash: headerHash, L1BlockHeight: randomBigInt(), L1BlockHash: randomHash(), + BatchID: common.Big1, + EndOfBlock: false, + EndOfPreconf: false, + Preconfer: testAddr, } l1OriginFound, err := ec.L1OriginByID(context.Background(), testL1Origin.BlockID) @@ -102,6 +111,7 @@ func TestL1OriginByID(t *testing.T) { require.Nil(t, err) require.Equal(t, testL1Origin, l1OriginFound) + require.True(t, l1OriginFound.IsSoftblock()) } // randomHash generates a random blob of data and returns it as a hash. From 5e6011a749696039beb1e962c99f0fa1cec7e406 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2024 13:12:20 +0800 Subject: [PATCH 07/30] feat: update consensus --- consensus/taiko/consensus.go | 2 +- data/geth/LOCK | 0 data/geth/blobpool/limbo/bkt_00004096.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00135168.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00266240.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00397312.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00528384.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00659456.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00790528.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_00921600.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01052672.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01183744.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01314816.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01445888.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01576960.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01708032.bag | Bin 0 -> 11 bytes data/geth/blobpool/limbo/bkt_01839104.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00004096.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00135168.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00266240.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00397312.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00528384.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00659456.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00790528.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_00921600.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01052672.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01183744.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01314816.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01445888.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01576960.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01708032.bag | Bin 0 -> 11 bytes data/geth/blobpool/queue/bkt_01839104.bag | Bin 0 -> 11 bytes data/geth/chaindata/000002.log | Bin 0 -> 173981 bytes data/geth/chaindata/000004.log | Bin 0 -> 333112 bytes data/geth/chaindata/CURRENT | 1 + data/geth/chaindata/LOCK | 0 data/geth/chaindata/MANIFEST-000001 | Bin 0 -> 52 bytes data/geth/chaindata/OPTIONS-000003 | 108 ++++++++++++++++++ data/geth/chaindata/ancient/chain/FLOCK | 0 .../chaindata/ancient/chain/bodies.0000.cdat | 0 data/geth/chaindata/ancient/chain/bodies.cidx | Bin 0 -> 6 bytes data/geth/chaindata/ancient/chain/bodies.meta | 1 + .../chaindata/ancient/chain/diffs.0000.rdat | 0 data/geth/chaindata/ancient/chain/diffs.meta | 1 + data/geth/chaindata/ancient/chain/diffs.ridx | Bin 0 -> 6 bytes .../chaindata/ancient/chain/hashes.0000.rdat | 0 data/geth/chaindata/ancient/chain/hashes.meta | 1 + data/geth/chaindata/ancient/chain/hashes.ridx | Bin 0 -> 6 bytes .../chaindata/ancient/chain/headers.0000.cdat | 0 .../geth/chaindata/ancient/chain/headers.cidx | Bin 0 -> 6 bytes .../geth/chaindata/ancient/chain/headers.meta | 1 + .../ancient/chain/receipts.0000.cdat | 0 .../chaindata/ancient/chain/receipts.cidx | Bin 0 -> 6 bytes .../chaindata/ancient/chain/receipts.meta | 1 + data/geth/chaindata/ancient/state/FLOCK | 0 .../ancient/state/account.data.0000.cdat | Bin 0 -> 1 bytes .../chaindata/ancient/state/account.data.cidx | Bin 0 -> 12 bytes .../chaindata/ancient/state/account.data.meta | 1 + .../ancient/state/account.index.0000.cdat | Bin 0 -> 1238 bytes .../ancient/state/account.index.cidx | Bin 0 -> 12 bytes .../ancient/state/account.index.meta | 1 + .../ancient/state/history.meta.0000.rdat | Bin 0 -> 73 bytes .../chaindata/ancient/state/history.meta.meta | 1 + .../chaindata/ancient/state/history.meta.ridx | Bin 0 -> 12 bytes .../ancient/state/storage.data.0000.cdat | Bin 0 -> 1 bytes .../chaindata/ancient/state/storage.data.cidx | Bin 0 -> 12 bytes .../chaindata/ancient/state/storage.data.meta | 1 + .../ancient/state/storage.index.0000.cdat | Bin 0 -> 2197 bytes .../ancient/state/storage.index.cidx | Bin 0 -> 12 bytes .../ancient/state/storage.index.meta | 1 + data/geth/nodekey | 1 + data/geth/nodes/000001.log | Bin 0 -> 171433 bytes data/geth/nodes/CURRENT | 1 + data/geth/nodes/LOCK | 0 data/geth/nodes/LOG | 8 ++ data/geth/nodes/MANIFEST-000000 | Bin 0 -> 54 bytes data/geth/transactions.rlp | Bin 0 -> 212 bytes 77 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 data/geth/LOCK create mode 100644 data/geth/blobpool/limbo/bkt_00004096.bag create mode 100644 data/geth/blobpool/limbo/bkt_00135168.bag create mode 100644 data/geth/blobpool/limbo/bkt_00266240.bag create mode 100644 data/geth/blobpool/limbo/bkt_00397312.bag create mode 100644 data/geth/blobpool/limbo/bkt_00528384.bag create mode 100644 data/geth/blobpool/limbo/bkt_00659456.bag create mode 100644 data/geth/blobpool/limbo/bkt_00790528.bag create mode 100644 data/geth/blobpool/limbo/bkt_00921600.bag create mode 100644 data/geth/blobpool/limbo/bkt_01052672.bag create mode 100644 data/geth/blobpool/limbo/bkt_01183744.bag create mode 100644 data/geth/blobpool/limbo/bkt_01314816.bag create mode 100644 data/geth/blobpool/limbo/bkt_01445888.bag create mode 100644 data/geth/blobpool/limbo/bkt_01576960.bag create mode 100644 data/geth/blobpool/limbo/bkt_01708032.bag create mode 100644 data/geth/blobpool/limbo/bkt_01839104.bag create mode 100644 data/geth/blobpool/queue/bkt_00004096.bag create mode 100644 data/geth/blobpool/queue/bkt_00135168.bag create mode 100644 data/geth/blobpool/queue/bkt_00266240.bag create mode 100644 data/geth/blobpool/queue/bkt_00397312.bag create mode 100644 data/geth/blobpool/queue/bkt_00528384.bag create mode 100644 data/geth/blobpool/queue/bkt_00659456.bag create mode 100644 data/geth/blobpool/queue/bkt_00790528.bag create mode 100644 data/geth/blobpool/queue/bkt_00921600.bag create mode 100644 data/geth/blobpool/queue/bkt_01052672.bag create mode 100644 data/geth/blobpool/queue/bkt_01183744.bag create mode 100644 data/geth/blobpool/queue/bkt_01314816.bag create mode 100644 data/geth/blobpool/queue/bkt_01445888.bag create mode 100644 data/geth/blobpool/queue/bkt_01576960.bag create mode 100644 data/geth/blobpool/queue/bkt_01708032.bag create mode 100644 data/geth/blobpool/queue/bkt_01839104.bag create mode 100644 data/geth/chaindata/000002.log create mode 100644 data/geth/chaindata/000004.log create mode 100644 data/geth/chaindata/CURRENT create mode 100644 data/geth/chaindata/LOCK create mode 100644 data/geth/chaindata/MANIFEST-000001 create mode 100644 data/geth/chaindata/OPTIONS-000003 create mode 100644 data/geth/chaindata/ancient/chain/FLOCK create mode 100644 data/geth/chaindata/ancient/chain/bodies.0000.cdat create mode 100644 data/geth/chaindata/ancient/chain/bodies.cidx create mode 100644 data/geth/chaindata/ancient/chain/bodies.meta create mode 100644 data/geth/chaindata/ancient/chain/diffs.0000.rdat create mode 100644 data/geth/chaindata/ancient/chain/diffs.meta create mode 100644 data/geth/chaindata/ancient/chain/diffs.ridx create mode 100644 data/geth/chaindata/ancient/chain/hashes.0000.rdat create mode 100644 data/geth/chaindata/ancient/chain/hashes.meta create mode 100644 data/geth/chaindata/ancient/chain/hashes.ridx create mode 100644 data/geth/chaindata/ancient/chain/headers.0000.cdat create mode 100644 data/geth/chaindata/ancient/chain/headers.cidx create mode 100644 data/geth/chaindata/ancient/chain/headers.meta create mode 100644 data/geth/chaindata/ancient/chain/receipts.0000.cdat create mode 100644 data/geth/chaindata/ancient/chain/receipts.cidx create mode 100644 data/geth/chaindata/ancient/chain/receipts.meta create mode 100644 data/geth/chaindata/ancient/state/FLOCK create mode 100644 data/geth/chaindata/ancient/state/account.data.0000.cdat create mode 100644 data/geth/chaindata/ancient/state/account.data.cidx create mode 100644 data/geth/chaindata/ancient/state/account.data.meta create mode 100644 data/geth/chaindata/ancient/state/account.index.0000.cdat create mode 100644 data/geth/chaindata/ancient/state/account.index.cidx create mode 100644 data/geth/chaindata/ancient/state/account.index.meta create mode 100644 data/geth/chaindata/ancient/state/history.meta.0000.rdat create mode 100644 data/geth/chaindata/ancient/state/history.meta.meta create mode 100644 data/geth/chaindata/ancient/state/history.meta.ridx create mode 100644 data/geth/chaindata/ancient/state/storage.data.0000.cdat create mode 100644 data/geth/chaindata/ancient/state/storage.data.cidx create mode 100644 data/geth/chaindata/ancient/state/storage.data.meta create mode 100644 data/geth/chaindata/ancient/state/storage.index.0000.cdat create mode 100644 data/geth/chaindata/ancient/state/storage.index.cidx create mode 100644 data/geth/chaindata/ancient/state/storage.index.meta create mode 100644 data/geth/nodekey create mode 100644 data/geth/nodes/000001.log create mode 100644 data/geth/nodes/CURRENT create mode 100644 data/geth/nodes/LOCK create mode 100644 data/geth/nodes/LOG create mode 100644 data/geth/nodes/MANIFEST-000000 create mode 100644 data/geth/transactions.rlp diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 70c332ae9d0e..166c20361374 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -132,7 +132,7 @@ func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error } // If the current block is not a soft block, then check the timestamp. - if (l1Origin == nil || l1Origin.L1BlockHeight != nil) && header.Time > uint64(unixNow) { + if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { return consensus.ErrFutureBlock } diff --git a/data/geth/LOCK b/data/geth/LOCK new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/blobpool/limbo/bkt_00004096.bag b/data/geth/blobpool/limbo/bkt_00004096.bag new file mode 100644 index 0000000000000000000000000000000000000000..6df4fb80e9a0a5e71ac992dce96f109cb663334f GIT binary patch literal 11 QcmYew%*m-_00IF9021~BEdT%j literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00135168.bag b/data/geth/blobpool/limbo/bkt_00135168.bag new file mode 100644 index 0000000000000000000000000000000000000000..93233657feee5631d38d87530a752b5f738d0574 GIT binary patch literal 11 ScmYew%*m-_U|?VpU;qFT`~oik literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00266240.bag b/data/geth/blobpool/limbo/bkt_00266240.bag new file mode 100644 index 0000000000000000000000000000000000000000..7ad82b4c4ce993147f59f0970c36bd9a56b45bac GIT binary patch literal 11 ScmYew%*m-_U|?VoU;qFU0s=7r literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00397312.bag b/data/geth/blobpool/limbo/bkt_00397312.bag new file mode 100644 index 0000000000000000000000000000000000000000..41a34f0b1da4cb549b102c5caf42cce2c917da5e GIT binary patch literal 11 ScmYew%*m-_U|?VqU;qFU2m&(z literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00528384.bag b/data/geth/blobpool/limbo/bkt_00528384.bag new file mode 100644 index 0000000000000000000000000000000000000000..f3939c3fd49dc976b2a0acaa123d024ab9cb72a5 GIT binary patch literal 11 ScmYew%*m-_U|`@7U;qFU4gxg* literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00659456.bag b/data/geth/blobpool/limbo/bkt_00659456.bag new file mode 100644 index 0000000000000000000000000000000000000000..c470b7f741db1261d2ab9e10d0a66f438ce1857b GIT binary patch literal 11 ScmYew%*m-_U|`@9U;qFU6aqH@ literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00790528.bag b/data/geth/blobpool/limbo/bkt_00790528.bag new file mode 100644 index 0000000000000000000000000000000000000000..9f574f8cfb0c09fde996e8907fdba2a2a07142e4 GIT binary patch literal 11 ScmYew%*m-_U|`@8U;qFU8Ui^0 literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_00921600.bag b/data/geth/blobpool/limbo/bkt_00921600.bag new file mode 100644 index 0000000000000000000000000000000000000000..90eb3abacd9a2bad951749602de4d6535a9f2b1e GIT binary patch literal 11 ScmYew%*m-_U|`@AU;qFUAObr8 literal 0 HcmV?d00001 diff --git a/data/geth/blobpool/limbo/bkt_01052672.bag b/data/geth/blobpool/limbo/bkt_01052672.bag new file mode 100644 index 0000000000000000000000000000000000000000..3bc4fcb61c17bb2de377d6821e5265f47a842f5a GIT binary patch literal 11 ScmYew%*m-_U|E@9)zeFndosbLPyMGiR=udHb%O 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 z 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 TuY;cEzh4_5ObJ0ru>b!9<}N0L literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/000004.log b/data/geth/chaindata/000004.log new file mode 100644 index 0000000000000000000000000000000000000000..ce42904421493379dd60d5e24c3aa1c639418a0e GIT binary patch literal 333112 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 LUdmza?pOW~yJj`Q literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/CURRENT b/data/geth/chaindata/CURRENT new file mode 100644 index 000000000000..7ed683d17118 --- /dev/null +++ b/data/geth/chaindata/CURRENT @@ -0,0 +1 @@ +MANIFEST-000001 diff --git a/data/geth/chaindata/LOCK b/data/geth/chaindata/LOCK new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/MANIFEST-000001 b/data/geth/chaindata/MANIFEST-000001 new file mode 100644 index 0000000000000000000000000000000000000000..7c30d3195493487fca7e3b34e950ac82be61225b GIT binary patch literal 52 zcmZ1|Uhbv9z{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&PGB!k}K^W6s9F$i&3V H%)$u(pWzK} literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/OPTIONS-000003 b/data/geth/chaindata/OPTIONS-000003 new file mode 100644 index 000000000000..fcaab3b643da --- /dev/null +++ b/data/geth/chaindata/OPTIONS-000003 @@ -0,0 +1,108 @@ +[Version] + pebble_version=0.1 + +[Options] + bytes_per_sync=524288 + cache_size=536870912 + cleaner=delete + compaction_debt_concurrency=1073741824 + comparer=leveldb.BytewiseComparator + disable_wal=false + flush_delay_delete_range=0s + flush_delay_range_key=0s + flush_split_bytes=4194304 + format_major_version=1 + l0_compaction_concurrency=10 + l0_compaction_file_threshold=500 + l0_compaction_threshold=4 + l0_stop_writes_threshold=12 + lbase_max_bytes=67108864 + max_concurrent_compactions=10 + max_manifest_file_size=134217728 + max_open_files=5120 + mem_table_size=134217728 + mem_table_stop_writes_threshold=2 + min_deletion_rate=0 + merger=pebble.concatenate + read_compaction_rate=16000 + read_sampling_multiplier=-1 + strict_wal_tail=true + table_cache_shards=10 + table_property_collectors=[] + validate_on_ingest=false + wal_dir= + wal_bytes_per_sync=0 + max_writer_concurrency=0 + force_writer_parallelism=false + secondary_cache_size_bytes=0 + create_on_shared=0 + +[Level "0"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "1"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "2"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "3"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "4"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "5"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 + +[Level "6"] + block_restart_interval=16 + block_size=4096 + block_size_threshold=90 + compression=Snappy + filter_policy=rocksdb.BuiltinBloomFilter + filter_type=table + index_block_size=4096 + target_file_size=2097152 diff --git a/data/geth/chaindata/ancient/chain/FLOCK b/data/geth/chaindata/ancient/chain/FLOCK new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/bodies.0000.cdat b/data/geth/chaindata/ancient/chain/bodies.0000.cdat new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/bodies.cidx b/data/geth/chaindata/ancient/chain/bodies.cidx new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/chain/bodies.meta b/data/geth/chaindata/ancient/chain/bodies.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/chain/bodies.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/diffs.0000.rdat b/data/geth/chaindata/ancient/chain/diffs.0000.rdat new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/diffs.meta b/data/geth/chaindata/ancient/chain/diffs.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/chain/diffs.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/diffs.ridx b/data/geth/chaindata/ancient/chain/diffs.ridx new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/chain/hashes.0000.rdat b/data/geth/chaindata/ancient/chain/hashes.0000.rdat new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/hashes.meta b/data/geth/chaindata/ancient/chain/hashes.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/chain/hashes.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/hashes.ridx b/data/geth/chaindata/ancient/chain/hashes.ridx new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/chain/headers.0000.cdat b/data/geth/chaindata/ancient/chain/headers.0000.cdat new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/headers.cidx b/data/geth/chaindata/ancient/chain/headers.cidx new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/chain/headers.meta b/data/geth/chaindata/ancient/chain/headers.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/chain/headers.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/receipts.0000.cdat b/data/geth/chaindata/ancient/chain/receipts.0000.cdat new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/chain/receipts.cidx b/data/geth/chaindata/ancient/chain/receipts.cidx new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/chain/receipts.meta b/data/geth/chaindata/ancient/chain/receipts.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/chain/receipts.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/FLOCK b/data/geth/chaindata/ancient/state/FLOCK new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/chaindata/ancient/state/account.data.0000.cdat b/data/geth/chaindata/ancient/state/account.data.0000.cdat new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/account.data.cidx b/data/geth/chaindata/ancient/state/account.data.cidx new file mode 100644 index 0000000000000000000000000000000000000000..5cb3842b20cc4f5292e3e08f81f5fef134df0b3a GIT binary patch literal 12 LcmZQzfCEMV01W^F literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/account.data.meta b/data/geth/chaindata/ancient/state/account.data.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/state/account.data.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/account.index.0000.cdat b/data/geth/chaindata/ancient/state/account.index.0000.cdat new file mode 100644 index 0000000000000000000000000000000000000000..753917205d58c4c2547637210565c208a5a37f45 GIT binary patch literal 1238 zcmcc1FTj}2Ai!Y8$iTp;#}6dD6d4$p1Qi*z{D2H*7=s1IV1+T*Knypa8b;PRtc+mg zj6enlI|D-yP;?rroFJnU2O|d~!*oFzR1R1g$S z_FY3#~2bA6@6sdcTX}|cWmv^hF8x{Y@HghBtS`lH38^ZnZ4HP1rz4_ z349DcwWsB{nnUr)H(;kLC-yZy{(AQNS0CHd@4pYM{<=x7AMA8hw>_6nxGBCYyCD%Z zai!9_@;7e`z&dPP&feX&lHr$jMC_%R4{U{gIZfUJ*5O`xvD0vKsKXC$o(nINEkbwr ze%}Gs5xaJG#ELb4)*UHb(7oFs_)c$zC?ApiE zG5%(Taa^aHHfX)rAh6du z&pEOy^kQ3&nFg!RS?jW#v)9%Y2|9iWIvQ{)IWpy3A=pKC^{+$-6+SXBV>0+@TpPn; zu;1kX*hTm4B(8ZMTiN`rc(vi2Q%^oFttpre4!!3-??B^-fZlb7?*0es_&opGQ>nEb-@cs7+R;>0dH(-Sr8KaPU%RCoo4L0094S%Lf1e literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/account.index.cidx b/data/geth/chaindata/ancient/state/account.index.cidx new file mode 100644 index 0000000000000000000000000000000000000000..36e09b95eda391007a81994af0892b3417506c3e GIT binary patch literal 12 McmZQzfB}|k008O$+W-In literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/account.index.meta b/data/geth/chaindata/ancient/state/account.index.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/state/account.index.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/history.meta.0000.rdat b/data/geth/chaindata/ancient/state/history.meta.0000.rdat new file mode 100644 index 0000000000000000000000000000000000000000..187ce619a0f4f7b19a2676488775fc66baff22c1 GIT binary patch literal 73 zcmZPwdm%3_eI|6-|7O=`lMejIi}rXRJu_$R0mdZ#t&fwpC<+7{-`Kb~EOz#9PwrW~ alY@4svo{}1zhstLaYN*%$mR`lzGn#8mrxjk z>{DdlvOi`f&miOdUGMwgeV_ZRibbKzVGG;8JnqI|f^qN9k~sycOd=$^ zi4@+LcKa2DTr`M|js^z(ulB(p4ls(zS@WZc;AI;_<(_dU=8)gV;a+f+-B|OjAxES^Z~-31f3?Uo`6r1@)3Wt!-<5W}V}mf3@Xv0mK2HVc}!AY|1zq z8{kK1F_O5_OZv-Ak3YNbP^5^@YKRFO<(RK1F*06C)I|o_WTJ1dR8KfKARXKd!{VXn z#MyLP;B%l{7wTRH7s2=r&5U%MJ-#yC%1T-cf!H>j7uj|yd4^EvWTHUu#mWPt)3E`c zy&euiJF8ZXM*plaOPGC;%8?@d_C_9%1~K=MWnMs1e|N!W%8evE1PMsPRd=h*JDwSD zS}4{|0>qzu`*nfDp18Bndd#Nwuk;!7z;X&oX^~>-wu^L)`~Z-!T+a_YN@t}c=-kdc zE`MD(gqyt-6Fsu-YVf^Fr|vsIkYgbx#9}iFwP>jy{*Irk{{8E1eds_gIep70zm@Y4 zATKpJE(qT9Q=p2a`3&EQ3H}fUuN$evXL?HJ*s~5)C@_ITlhi+)_PA3oY2(6gSQ9Uj zQsY34RVfeqn=ELNt53!+E}$?C2dciiCk_??=+DG&QwdL;^!R-xE=JHMSK$!y)mSDd z3Y*5P{ztlUs449jMKKK1)bvnmaC3FQNijmqU+O;5@S zll^`BRN2ZKyJifK#>MP0{wax=i$A z_rZcD{?Di|fb>TT4m~20o&U{00fPmtZ~=KvWz*@$3ee=MVQ z-2p1|O<(VFn(}VQS@Daj8nczmvFZE5an*}!fxG>x~MjID&EE0K7RfD zXNxzv8X%LeDJ5}DB8r>_SGI@4o}^FXu!Kz+_q)vIn|t=hJTCz<<*>2FsS&2QMt|^P z_Fk2@`&MAhx9JCQ2$=VLCgjIcfP9yBn7NNy4Pe)Q9jK)sr~gQi-j_G5Ja6G`1c5GO zrwt%K@BHf4wl2=87S*|efLr9+8013~+bt-XENkU28|nMWMNIQ}i6*g5fo1V8qv zX)~j8le?Bd25_!LG;10ZAWILF<0jVE#ENJmdHR?)MGdRMMJS@+Z$Ckgl*in%?*Xzm zJlFY^W63+t{Es--L=@Zk3pVi)YGTlWV{J@k^O-w9C{dk0Gtj=kt596ZsEF3Prf!kP z$jSaRq+lUNDAZpHAaWeLKkSnqRLn4#Rwiiq4_cIUWSJYX9BC+J3UZRy;Q&#G#_VAe z{>}H$ni?pdovTSAD?w)#6Ad_>nF~K+td9ZmsLNWw?LKK|G6W)(rUdd4x0*&H=5$4j zhk0rQYQ(MqYZO$^c@QVCfbC(abLZ$Rh{g+N^QKg(Jq=ns&Hlm%kz39fWu~=){(q&m zf>6hj_pvLaCcg^Er230uthIpX{y*A0MwVQNSO4-g8Tvi6L$U0O6SgvRC6F&trmW9u ztYdxlWTm`IXg%VYh};}l5)(M%Is;11GQU{bi&2j^+Ag%>UaFhWxjzYZiEDY%0xmnQr*(196ylSK{K_`+o!#vW18g%^>HSDRO_aD(s$BI zRQ2<4bqd4p{~v^c%0n_cu9%PQudN(^ludXVC)bv;#93=rVHYfdRGwQ;Ns>7W^nT jzikWJ;kVq#iJbl>cC;G%Y(E)Nf2LZSPX^!3u%Z7CF$)xy literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/storage.index.cidx b/data/geth/chaindata/ancient/state/storage.index.cidx new file mode 100644 index 0000000000000000000000000000000000000000..e77ddbb2a576e52dfc6f7edb8795e89eeb237a15 GIT binary patch literal 12 McmZQzfB}xF006N7o&W#< literal 0 HcmV?d00001 diff --git a/data/geth/chaindata/ancient/state/storage.index.meta b/data/geth/chaindata/ancient/state/storage.index.meta new file mode 100644 index 000000000000..59ee61656b88 --- /dev/null +++ b/data/geth/chaindata/ancient/state/storage.index.meta @@ -0,0 +1 @@ +€ \ No newline at end of file diff --git a/data/geth/nodekey b/data/geth/nodekey new file mode 100644 index 000000000000..befdc173f1d0 --- /dev/null +++ b/data/geth/nodekey @@ -0,0 +1 @@ +146d2bc05f88120afc060cc87e7b263f59426e2383175fd3cc0cc76de8adb018 \ No newline at end of file diff --git a/data/geth/nodes/000001.log b/data/geth/nodes/000001.log new file mode 100644 index 0000000000000000000000000000000000000000..5b0fa0d25b6035805c374ab6293247a2b9d1dc5a GIT binary patch literal 171433 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

ZiufE0u?$;b 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 JZ&Vrj{{Y~I;|Bl$ literal 0 HcmV?d00001 diff --git a/data/geth/nodes/CURRENT b/data/geth/nodes/CURRENT new file mode 100644 index 000000000000..feda7d6b2481 --- /dev/null +++ b/data/geth/nodes/CURRENT @@ -0,0 +1 @@ +MANIFEST-000000 diff --git a/data/geth/nodes/LOCK b/data/geth/nodes/LOCK new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/data/geth/nodes/LOG b/data/geth/nodes/LOG new file mode 100644 index 000000000000..b6e462c2a59e --- /dev/null +++ b/data/geth/nodes/LOG @@ -0,0 +1,8 @@ +=============== Oct 31, 2024 (+08) =============== +13:08:09.352346 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed +13:08:09.388524 db@open opening +13:08:09.389075 version@stat F·[] S·0B[] Sc·[] +13:08:09.399469 db@janitor F·2 G·0 +13:08:09.399510 db@open done T·10.965083ms +13:11:08.701688 db@close closing +13:11:08.702661 db@close done T·965.709µs diff --git a/data/geth/nodes/MANIFEST-000000 b/data/geth/nodes/MANIFEST-000000 new file mode 100644 index 0000000000000000000000000000000000000000..9d54f6733b1364dc8d53dd15ca59a6ec36a1c29d GIT binary patch literal 54 zcmdmC5aOo9z{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&O?~%*ev9Y~pbaHU>r} JMrI}!1^~s!4paaD literal 0 HcmV?d00001 diff --git a/data/geth/transactions.rlp b/data/geth/transactions.rlp new file mode 100644 index 0000000000000000000000000000000000000000..028a64c36e7d86be8d65dafbb64f83fd1f7720ea GIT binary patch literal 212 zcmey7(a_2i!u^DynXzrbl#ln$R(e>jym_*;JLE-N%0)N!2@@I`npq{TEx2qbQE(?w zRXaRE#eCfY;ZwX3CY=w9OGK>1Et*TZk1bq~!t&s1@AU_B4?N%b|Axx{doqfQ?~koD z-qwF*)%%)e+u|P?j7T<#?6R>~Ui+ZjBjJ?0SAO1Qr_kw#pf>#oE?#JQKYO9$m%BQ- zF`rwz+{I@f*naw6(e5+LbiNvRF3|O9yRrZ8%gNWjRl0B#XeWK`KG89C&pVH+Nk{g! IwLR?x04$blZ~y=R literal 0 HcmV?d00001 From a50a061f1f97d9e8dee857bf4af79136d05b4446 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 31 Oct 2024 13:12:25 +0800 Subject: [PATCH 08/30] feat: update consensus --- data/geth/LOCK | 0 data/geth/blobpool/limbo/bkt_00004096.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00135168.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00266240.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00397312.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00528384.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00659456.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00790528.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_00921600.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01052672.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01183744.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01314816.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01445888.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01576960.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01708032.bag | Bin 11 -> 0 bytes data/geth/blobpool/limbo/bkt_01839104.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00004096.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00135168.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00266240.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00397312.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00528384.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00659456.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00790528.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_00921600.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01052672.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01183744.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01314816.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01445888.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01576960.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01708032.bag | Bin 11 -> 0 bytes data/geth/blobpool/queue/bkt_01839104.bag | Bin 11 -> 0 bytes data/geth/chaindata/000002.log | Bin 173981 -> 0 bytes data/geth/chaindata/000004.log | Bin 333112 -> 0 bytes data/geth/chaindata/CURRENT | 1 - data/geth/chaindata/LOCK | 0 data/geth/chaindata/MANIFEST-000001 | Bin 52 -> 0 bytes data/geth/chaindata/OPTIONS-000003 | 108 ------------------ data/geth/chaindata/ancient/chain/FLOCK | 0 .../chaindata/ancient/chain/bodies.0000.cdat | 0 data/geth/chaindata/ancient/chain/bodies.cidx | Bin 6 -> 0 bytes data/geth/chaindata/ancient/chain/bodies.meta | 1 - .../chaindata/ancient/chain/diffs.0000.rdat | 0 data/geth/chaindata/ancient/chain/diffs.meta | 1 - data/geth/chaindata/ancient/chain/diffs.ridx | Bin 6 -> 0 bytes .../chaindata/ancient/chain/hashes.0000.rdat | 0 data/geth/chaindata/ancient/chain/hashes.meta | 1 - data/geth/chaindata/ancient/chain/hashes.ridx | Bin 6 -> 0 bytes .../chaindata/ancient/chain/headers.0000.cdat | 0 .../geth/chaindata/ancient/chain/headers.cidx | Bin 6 -> 0 bytes .../geth/chaindata/ancient/chain/headers.meta | 1 - .../ancient/chain/receipts.0000.cdat | 0 .../chaindata/ancient/chain/receipts.cidx | Bin 6 -> 0 bytes .../chaindata/ancient/chain/receipts.meta | 1 - data/geth/chaindata/ancient/state/FLOCK | 0 .../ancient/state/account.data.0000.cdat | Bin 1 -> 0 bytes .../chaindata/ancient/state/account.data.cidx | Bin 12 -> 0 bytes .../chaindata/ancient/state/account.data.meta | 1 - .../ancient/state/account.index.0000.cdat | Bin 1238 -> 0 bytes .../ancient/state/account.index.cidx | Bin 12 -> 0 bytes .../ancient/state/account.index.meta | 1 - .../ancient/state/history.meta.0000.rdat | Bin 73 -> 0 bytes .../chaindata/ancient/state/history.meta.meta | 1 - .../chaindata/ancient/state/history.meta.ridx | Bin 12 -> 0 bytes .../ancient/state/storage.data.0000.cdat | Bin 1 -> 0 bytes .../chaindata/ancient/state/storage.data.cidx | Bin 12 -> 0 bytes .../chaindata/ancient/state/storage.data.meta | 1 - .../ancient/state/storage.index.0000.cdat | Bin 2197 -> 0 bytes .../ancient/state/storage.index.cidx | Bin 12 -> 0 bytes .../ancient/state/storage.index.meta | 1 - data/geth/nodekey | 1 - data/geth/nodes/000001.log | Bin 171433 -> 0 bytes data/geth/nodes/CURRENT | 1 - data/geth/nodes/LOCK | 0 data/geth/nodes/LOG | 8 -- data/geth/nodes/MANIFEST-000000 | Bin 54 -> 0 bytes data/geth/transactions.rlp | Bin 212 -> 0 bytes 76 files changed, 129 deletions(-) delete mode 100644 data/geth/LOCK delete mode 100644 data/geth/blobpool/limbo/bkt_00004096.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00135168.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00266240.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00397312.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00528384.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00659456.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00790528.bag delete mode 100644 data/geth/blobpool/limbo/bkt_00921600.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01052672.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01183744.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01314816.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01445888.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01576960.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01708032.bag delete mode 100644 data/geth/blobpool/limbo/bkt_01839104.bag delete mode 100644 data/geth/blobpool/queue/bkt_00004096.bag delete mode 100644 data/geth/blobpool/queue/bkt_00135168.bag delete mode 100644 data/geth/blobpool/queue/bkt_00266240.bag delete mode 100644 data/geth/blobpool/queue/bkt_00397312.bag delete mode 100644 data/geth/blobpool/queue/bkt_00528384.bag delete mode 100644 data/geth/blobpool/queue/bkt_00659456.bag delete mode 100644 data/geth/blobpool/queue/bkt_00790528.bag delete mode 100644 data/geth/blobpool/queue/bkt_00921600.bag delete mode 100644 data/geth/blobpool/queue/bkt_01052672.bag delete mode 100644 data/geth/blobpool/queue/bkt_01183744.bag delete mode 100644 data/geth/blobpool/queue/bkt_01314816.bag delete mode 100644 data/geth/blobpool/queue/bkt_01445888.bag delete mode 100644 data/geth/blobpool/queue/bkt_01576960.bag delete mode 100644 data/geth/blobpool/queue/bkt_01708032.bag delete mode 100644 data/geth/blobpool/queue/bkt_01839104.bag delete mode 100644 data/geth/chaindata/000002.log delete mode 100644 data/geth/chaindata/000004.log delete mode 100644 data/geth/chaindata/CURRENT delete mode 100644 data/geth/chaindata/LOCK delete mode 100644 data/geth/chaindata/MANIFEST-000001 delete mode 100644 data/geth/chaindata/OPTIONS-000003 delete mode 100644 data/geth/chaindata/ancient/chain/FLOCK delete mode 100644 data/geth/chaindata/ancient/chain/bodies.0000.cdat delete mode 100644 data/geth/chaindata/ancient/chain/bodies.cidx delete mode 100644 data/geth/chaindata/ancient/chain/bodies.meta delete mode 100644 data/geth/chaindata/ancient/chain/diffs.0000.rdat delete mode 100644 data/geth/chaindata/ancient/chain/diffs.meta delete mode 100644 data/geth/chaindata/ancient/chain/diffs.ridx delete mode 100644 data/geth/chaindata/ancient/chain/hashes.0000.rdat delete mode 100644 data/geth/chaindata/ancient/chain/hashes.meta delete mode 100644 data/geth/chaindata/ancient/chain/hashes.ridx delete mode 100644 data/geth/chaindata/ancient/chain/headers.0000.cdat delete mode 100644 data/geth/chaindata/ancient/chain/headers.cidx delete mode 100644 data/geth/chaindata/ancient/chain/headers.meta delete mode 100644 data/geth/chaindata/ancient/chain/receipts.0000.cdat delete mode 100644 data/geth/chaindata/ancient/chain/receipts.cidx delete mode 100644 data/geth/chaindata/ancient/chain/receipts.meta delete mode 100644 data/geth/chaindata/ancient/state/FLOCK delete mode 100644 data/geth/chaindata/ancient/state/account.data.0000.cdat delete mode 100644 data/geth/chaindata/ancient/state/account.data.cidx delete mode 100644 data/geth/chaindata/ancient/state/account.data.meta delete mode 100644 data/geth/chaindata/ancient/state/account.index.0000.cdat delete mode 100644 data/geth/chaindata/ancient/state/account.index.cidx delete mode 100644 data/geth/chaindata/ancient/state/account.index.meta delete mode 100644 data/geth/chaindata/ancient/state/history.meta.0000.rdat delete mode 100644 data/geth/chaindata/ancient/state/history.meta.meta delete mode 100644 data/geth/chaindata/ancient/state/history.meta.ridx delete mode 100644 data/geth/chaindata/ancient/state/storage.data.0000.cdat delete mode 100644 data/geth/chaindata/ancient/state/storage.data.cidx delete mode 100644 data/geth/chaindata/ancient/state/storage.data.meta delete mode 100644 data/geth/chaindata/ancient/state/storage.index.0000.cdat delete mode 100644 data/geth/chaindata/ancient/state/storage.index.cidx delete mode 100644 data/geth/chaindata/ancient/state/storage.index.meta delete mode 100644 data/geth/nodekey delete mode 100644 data/geth/nodes/000001.log delete mode 100644 data/geth/nodes/CURRENT delete mode 100644 data/geth/nodes/LOCK delete mode 100644 data/geth/nodes/LOG delete mode 100644 data/geth/nodes/MANIFEST-000000 delete mode 100644 data/geth/transactions.rlp diff --git a/data/geth/LOCK b/data/geth/LOCK deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/blobpool/limbo/bkt_00004096.bag b/data/geth/blobpool/limbo/bkt_00004096.bag deleted file mode 100644 index 6df4fb80e9a0a5e71ac992dce96f109cb663334f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 QcmYew%*m-_00IF9021~BEdT%j diff --git a/data/geth/blobpool/limbo/bkt_00135168.bag b/data/geth/blobpool/limbo/bkt_00135168.bag deleted file mode 100644 index 93233657feee5631d38d87530a752b5f738d0574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|?VpU;qFT`~oik diff --git a/data/geth/blobpool/limbo/bkt_00266240.bag b/data/geth/blobpool/limbo/bkt_00266240.bag deleted file mode 100644 index 7ad82b4c4ce993147f59f0970c36bd9a56b45bac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|?VoU;qFU0s=7r diff --git a/data/geth/blobpool/limbo/bkt_00397312.bag b/data/geth/blobpool/limbo/bkt_00397312.bag deleted file mode 100644 index 41a34f0b1da4cb549b102c5caf42cce2c917da5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|?VqU;qFU2m&(z diff --git a/data/geth/blobpool/limbo/bkt_00528384.bag b/data/geth/blobpool/limbo/bkt_00528384.bag deleted file mode 100644 index f3939c3fd49dc976b2a0acaa123d024ab9cb72a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|`@7U;qFU4gxg* diff --git a/data/geth/blobpool/limbo/bkt_00659456.bag b/data/geth/blobpool/limbo/bkt_00659456.bag deleted file mode 100644 index c470b7f741db1261d2ab9e10d0a66f438ce1857b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|`@9U;qFU6aqH@ diff --git a/data/geth/blobpool/limbo/bkt_00790528.bag b/data/geth/blobpool/limbo/bkt_00790528.bag deleted file mode 100644 index 9f574f8cfb0c09fde996e8907fdba2a2a07142e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|`@8U;qFU8Ui^0 diff --git a/data/geth/blobpool/limbo/bkt_00921600.bag b/data/geth/blobpool/limbo/bkt_00921600.bag deleted file mode 100644 index 90eb3abacd9a2bad951749602de4d6535a9f2b1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|`@AU;qFUAObr8 diff --git a/data/geth/blobpool/limbo/bkt_01052672.bag b/data/geth/blobpool/limbo/bkt_01052672.bag deleted file mode 100644 index 3bc4fcb61c17bb2de377d6821e5265f47a842f5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmYew%*m-_U|E@9)zeFndosbLPyMGiR=udHb%O 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 z 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 TuY;cEzh4_5ObJ0ru>b!9<}N0L diff --git a/data/geth/chaindata/000004.log b/data/geth/chaindata/000004.log deleted file mode 100644 index ce42904421493379dd60d5e24c3aa1c639418a0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333112 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 LUdmza?pOW~yJj`Q diff --git a/data/geth/chaindata/CURRENT b/data/geth/chaindata/CURRENT deleted file mode 100644 index 7ed683d17118..000000000000 --- a/data/geth/chaindata/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/data/geth/chaindata/LOCK b/data/geth/chaindata/LOCK deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/MANIFEST-000001 b/data/geth/chaindata/MANIFEST-000001 deleted file mode 100644 index 7c30d3195493487fca7e3b34e950ac82be61225b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 zcmZ1|Uhbv9z{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&PGB!k}K^W6s9F$i&3V H%)$u(pWzK} diff --git a/data/geth/chaindata/OPTIONS-000003 b/data/geth/chaindata/OPTIONS-000003 deleted file mode 100644 index fcaab3b643da..000000000000 --- a/data/geth/chaindata/OPTIONS-000003 +++ /dev/null @@ -1,108 +0,0 @@ -[Version] - pebble_version=0.1 - -[Options] - bytes_per_sync=524288 - cache_size=536870912 - cleaner=delete - compaction_debt_concurrency=1073741824 - comparer=leveldb.BytewiseComparator - disable_wal=false - flush_delay_delete_range=0s - flush_delay_range_key=0s - flush_split_bytes=4194304 - format_major_version=1 - l0_compaction_concurrency=10 - l0_compaction_file_threshold=500 - l0_compaction_threshold=4 - l0_stop_writes_threshold=12 - lbase_max_bytes=67108864 - max_concurrent_compactions=10 - max_manifest_file_size=134217728 - max_open_files=5120 - mem_table_size=134217728 - mem_table_stop_writes_threshold=2 - min_deletion_rate=0 - merger=pebble.concatenate - read_compaction_rate=16000 - read_sampling_multiplier=-1 - strict_wal_tail=true - table_cache_shards=10 - table_property_collectors=[] - validate_on_ingest=false - wal_dir= - wal_bytes_per_sync=0 - max_writer_concurrency=0 - force_writer_parallelism=false - secondary_cache_size_bytes=0 - create_on_shared=0 - -[Level "0"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "1"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "2"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "3"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "4"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "5"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 - -[Level "6"] - block_restart_interval=16 - block_size=4096 - block_size_threshold=90 - compression=Snappy - filter_policy=rocksdb.BuiltinBloomFilter - filter_type=table - index_block_size=4096 - target_file_size=2097152 diff --git a/data/geth/chaindata/ancient/chain/FLOCK b/data/geth/chaindata/ancient/chain/FLOCK deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/bodies.0000.cdat b/data/geth/chaindata/ancient/chain/bodies.0000.cdat deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/bodies.cidx b/data/geth/chaindata/ancient/chain/bodies.cidx deleted file mode 100644 index ab2c6846789c5681cd5544fd3e407c6648761ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 KcmZQz009611^@v7 diff --git a/data/geth/chaindata/ancient/chain/bodies.meta b/data/geth/chaindata/ancient/chain/bodies.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/chain/bodies.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/diffs.0000.rdat b/data/geth/chaindata/ancient/chain/diffs.0000.rdat deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/diffs.meta b/data/geth/chaindata/ancient/chain/diffs.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/chain/diffs.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/diffs.ridx b/data/geth/chaindata/ancient/chain/diffs.ridx deleted file mode 100644 index ab2c6846789c5681cd5544fd3e407c6648761ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 KcmZQz009611^@v7 diff --git a/data/geth/chaindata/ancient/chain/hashes.0000.rdat b/data/geth/chaindata/ancient/chain/hashes.0000.rdat deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/hashes.meta b/data/geth/chaindata/ancient/chain/hashes.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/chain/hashes.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/hashes.ridx b/data/geth/chaindata/ancient/chain/hashes.ridx deleted file mode 100644 index ab2c6846789c5681cd5544fd3e407c6648761ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 KcmZQz009611^@v7 diff --git a/data/geth/chaindata/ancient/chain/headers.0000.cdat b/data/geth/chaindata/ancient/chain/headers.0000.cdat deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/headers.cidx b/data/geth/chaindata/ancient/chain/headers.cidx deleted file mode 100644 index ab2c6846789c5681cd5544fd3e407c6648761ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 KcmZQz009611^@v7 diff --git a/data/geth/chaindata/ancient/chain/headers.meta b/data/geth/chaindata/ancient/chain/headers.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/chain/headers.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/chain/receipts.0000.cdat b/data/geth/chaindata/ancient/chain/receipts.0000.cdat deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/chain/receipts.cidx b/data/geth/chaindata/ancient/chain/receipts.cidx deleted file mode 100644 index ab2c6846789c5681cd5544fd3e407c6648761ab9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6 KcmZQz009611^@v7 diff --git a/data/geth/chaindata/ancient/chain/receipts.meta b/data/geth/chaindata/ancient/chain/receipts.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/chain/receipts.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/FLOCK b/data/geth/chaindata/ancient/state/FLOCK deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/chaindata/ancient/state/account.data.0000.cdat b/data/geth/chaindata/ancient/state/account.data.0000.cdat deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/data/geth/chaindata/ancient/state/account.data.cidx b/data/geth/chaindata/ancient/state/account.data.cidx deleted file mode 100644 index 5cb3842b20cc4f5292e3e08f81f5fef134df0b3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 LcmZQzfCEMV01W^F diff --git a/data/geth/chaindata/ancient/state/account.data.meta b/data/geth/chaindata/ancient/state/account.data.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/state/account.data.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/account.index.0000.cdat b/data/geth/chaindata/ancient/state/account.index.0000.cdat deleted file mode 100644 index 753917205d58c4c2547637210565c208a5a37f45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1238 zcmcc1FTj}2Ai!Y8$iTp;#}6dD6d4$p1Qi*z{D2H*7=s1IV1+T*Knypa8b;PRtc+mg zj6enlI|D-yP;?rroFJnU2O|d~!*oFzR1R1g$S z_FY3#~2bA6@6sdcTX}|cWmv^hF8x{Y@HghBtS`lH38^ZnZ4HP1rz4_ z349DcwWsB{nnUr)H(;kLC-yZy{(AQNS0CHd@4pYM{<=x7AMA8hw>_6nxGBCYyCD%Z zai!9_@;7e`z&dPP&feX&lHr$jMC_%R4{U{gIZfUJ*5O`xvD0vKsKXC$o(nINEkbwr ze%}Gs5xaJG#ELb4)*UHb(7oFs_)c$zC?ApiE zG5%(Taa^aHHfX)rAh6du z&pEOy^kQ3&nFg!RS?jW#v)9%Y2|9iWIvQ{)IWpy3A=pKC^{+$-6+SXBV>0+@TpPn; zu;1kX*hTm4B(8ZMTiN`rc(vi2Q%^oFttpre4!!3-??B^-fZlb7?*0es_&opGQ>nEb-@cs7+R;>0dH(-Sr8KaPU%RCoo4L0094S%Lf1e diff --git a/data/geth/chaindata/ancient/state/account.index.cidx b/data/geth/chaindata/ancient/state/account.index.cidx deleted file mode 100644 index 36e09b95eda391007a81994af0892b3417506c3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 McmZQzfB}|k008O$+W-In diff --git a/data/geth/chaindata/ancient/state/account.index.meta b/data/geth/chaindata/ancient/state/account.index.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/state/account.index.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/chaindata/ancient/state/history.meta.0000.rdat b/data/geth/chaindata/ancient/state/history.meta.0000.rdat deleted file mode 100644 index 187ce619a0f4f7b19a2676488775fc66baff22c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZPwdm%3_eI|6-|7O=`lMejIi}rXRJu_$R0mdZ#t&fwpC<+7{-`Kb~EOz#9PwrW~ alY@4svo{}1zhstLaYN*%$mR`lzGn#8mrxjk z>{DdlvOi`f&miOdUGMwgeV_ZRibbKzVGG;8JnqI|f^qN9k~sycOd=$^ zi4@+LcKa2DTr`M|js^z(ulB(p4ls(zS@WZc;AI;_<(_dU=8)gV;a+f+-B|OjAxES^Z~-31f3?Uo`6r1@)3Wt!-<5W}V}mf3@Xv0mK2HVc}!AY|1zq z8{kK1F_O5_OZv-Ak3YNbP^5^@YKRFO<(RK1F*06C)I|o_WTJ1dR8KfKARXKd!{VXn z#MyLP;B%l{7wTRH7s2=r&5U%MJ-#yC%1T-cf!H>j7uj|yd4^EvWTHUu#mWPt)3E`c zy&euiJF8ZXM*plaOPGC;%8?@d_C_9%1~K=MWnMs1e|N!W%8evE1PMsPRd=h*JDwSD zS}4{|0>qzu`*nfDp18Bndd#Nwuk;!7z;X&oX^~>-wu^L)`~Z-!T+a_YN@t}c=-kdc zE`MD(gqyt-6Fsu-YVf^Fr|vsIkYgbx#9}iFwP>jy{*Irk{{8E1eds_gIep70zm@Y4 zATKpJE(qT9Q=p2a`3&EQ3H}fUuN$evXL?HJ*s~5)C@_ITlhi+)_PA3oY2(6gSQ9Uj zQsY34RVfeqn=ELNt53!+E}$?C2dciiCk_??=+DG&QwdL;^!R-xE=JHMSK$!y)mSDd z3Y*5P{ztlUs449jMKKK1)bvnmaC3FQNijmqU+O;5@S zll^`BRN2ZKyJifK#>MP0{wax=i$A z_rZcD{?Di|fb>TT4m~20o&U{00fPmtZ~=KvWz*@$3ee=MVQ z-2p1|O<(VFn(}VQS@Daj8nczmvFZE5an*}!fxG>x~MjID&EE0K7RfD zXNxzv8X%LeDJ5}DB8r>_SGI@4o}^FXu!Kz+_q)vIn|t=hJTCz<<*>2FsS&2QMt|^P z_Fk2@`&MAhx9JCQ2$=VLCgjIcfP9yBn7NNy4Pe)Q9jK)sr~gQi-j_G5Ja6G`1c5GO zrwt%K@BHf4wl2=87S*|efLr9+8013~+bt-XENkU28|nMWMNIQ}i6*g5fo1V8qv zX)~j8le?Bd25_!LG;10ZAWILF<0jVE#ENJmdHR?)MGdRMMJS@+Z$Ckgl*in%?*Xzm zJlFY^W63+t{Es--L=@Zk3pVi)YGTlWV{J@k^O-w9C{dk0Gtj=kt596ZsEF3Prf!kP z$jSaRq+lUNDAZpHAaWeLKkSnqRLn4#Rwiiq4_cIUWSJYX9BC+J3UZRy;Q&#G#_VAe z{>}H$ni?pdovTSAD?w)#6Ad_>nF~K+td9ZmsLNWw?LKK|G6W)(rUdd4x0*&H=5$4j zhk0rQYQ(MqYZO$^c@QVCfbC(abLZ$Rh{g+N^QKg(Jq=ns&Hlm%kz39fWu~=){(q&m zf>6hj_pvLaCcg^Er230uthIpX{y*A0MwVQNSO4-g8Tvi6L$U0O6SgvRC6F&trmW9u ztYdxlWTm`IXg%VYh};}l5)(M%Is;11GQU{bi&2j^+Ag%>UaFhWxjzYZiEDY%0xmnQr*(196ylSK{K_`+o!#vW18g%^>HSDRO_aD(s$BI zRQ2<4bqd4p{~v^c%0n_cu9%PQudN(^ludXVC)bv;#93=rVHYfdRGwQ;Ns>7W^nT jzikWJ;kVq#iJbl>cC;G%Y(E)Nf2LZSPX^!3u%Z7CF$)xy diff --git a/data/geth/chaindata/ancient/state/storage.index.cidx b/data/geth/chaindata/ancient/state/storage.index.cidx deleted file mode 100644 index e77ddbb2a576e52dfc6f7edb8795e89eeb237a15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12 McmZQzfB}xF006N7o&W#< diff --git a/data/geth/chaindata/ancient/state/storage.index.meta b/data/geth/chaindata/ancient/state/storage.index.meta deleted file mode 100644 index 59ee61656b88..000000000000 --- a/data/geth/chaindata/ancient/state/storage.index.meta +++ /dev/null @@ -1 +0,0 @@ -€ \ No newline at end of file diff --git a/data/geth/nodekey b/data/geth/nodekey deleted file mode 100644 index befdc173f1d0..000000000000 --- a/data/geth/nodekey +++ /dev/null @@ -1 +0,0 @@ -146d2bc05f88120afc060cc87e7b263f59426e2383175fd3cc0cc76de8adb018 \ No newline at end of file diff --git a/data/geth/nodes/000001.log b/data/geth/nodes/000001.log deleted file mode 100644 index 5b0fa0d25b6035805c374ab6293247a2b9d1dc5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171433 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

ZiufE0u?$;b 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 JZ&Vrj{{Y~I;|Bl$ diff --git a/data/geth/nodes/CURRENT b/data/geth/nodes/CURRENT deleted file mode 100644 index feda7d6b2481..000000000000 --- a/data/geth/nodes/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000000 diff --git a/data/geth/nodes/LOCK b/data/geth/nodes/LOCK deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/data/geth/nodes/LOG b/data/geth/nodes/LOG deleted file mode 100644 index b6e462c2a59e..000000000000 --- a/data/geth/nodes/LOG +++ /dev/null @@ -1,8 +0,0 @@ -=============== Oct 31, 2024 (+08) =============== -13:08:09.352346 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed -13:08:09.388524 db@open opening -13:08:09.389075 version@stat F·[] S·0B[] Sc·[] -13:08:09.399469 db@janitor F·2 G·0 -13:08:09.399510 db@open done T·10.965083ms -13:11:08.701688 db@close closing -13:11:08.702661 db@close done T·965.709µs diff --git a/data/geth/nodes/MANIFEST-000000 b/data/geth/nodes/MANIFEST-000000 deleted file mode 100644 index 9d54f6733b1364dc8d53dd15ca59a6ec36a1c29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmdmC5aOo9z{n_-lUkOVlai$8R9TW*o>`pgoS$2eSd>_jU&O?~%*ev9Y~pbaHU>r} JMrI}!1^~s!4paaD diff --git a/data/geth/transactions.rlp b/data/geth/transactions.rlp deleted file mode 100644 index 028a64c36e7d86be8d65dafbb64f83fd1f7720ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 212 zcmey7(a_2i!u^DynXzrbl#ln$R(e>jym_*;JLE-N%0)N!2@@I`npq{TEx2qbQE(?w zRXaRE#eCfY;ZwX3CY=w9OGK>1Et*TZk1bq~!t&s1@AU_B4?N%b|Axx{doqfQ?~koD z-qwF*)%%)e+u|P?j7T<#?6R>~Ui+ZjBjJ?0SAO1Qr_kw#pf>#oE?#JQKYO9$m%BQ- zF`rwz+{I@f*naw6(e5+LbiNvRF3|O9yRrZ8%gNWjRl0B#XeWK`KG89C&pVH+Nk{g! IwLR?x04$blZ~y=R From d4cb83fd0b2fc5acf8069e7de92f59abec932f83 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 3 Nov 2024 20:39:23 +0800 Subject: [PATCH 09/30] feat: update genesis --- core/taiko_genesis/internal_l2a.json | 42 ++++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/core/taiko_genesis/internal_l2a.json b/core/taiko_genesis/internal_l2a.json index 0d6a9d4a65a2..24759cb84a54 100644 --- a/core/taiko_genesis/internal_l2a.json +++ b/core/taiko_genesis/internal_l2a.json @@ -124,7 +124,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610398578063f2fde38b146103b5575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103d4565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b610484565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da61054b565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b610563565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b61062a565b348015610252575f5ffd5b5061013e610640565b61013e610269366004611259565b610654565b348015610279575f5ffd5b50610282610709565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107ba565b3480156102cf575f5ffd5b5061013e6107cb565b3480156102e3575f5ffd5b5061013e610842565b3480156102f7575f5ffd5b506101a9610855565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b610863565b348015610347575f5ffd5b5061013e610356366004611346565b61086f565b348015610366575f5ffd5b5060c954610380906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bd565b3480156103a3575f5ffd5b506065546001600160a01b03166101a9565b3480156103c0575f5ffd5b5061013e6103cf36600461119f565b61094b565b6103dc6109bc565b5f54600290610100900460ff161580156103fc57505f5460ff8083169116105b6104215760405162461bcd60e51b815260040161041890611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a257505f54600160ff909116105b806104bb5750303b1580156104bb57505f5460ff166001145b6104d75760405162461bcd60e51b815260040161041890611383565b5f805460ff1916600117905580156104f8575f805461ff0019166101001790555b6105028230610a16565b8015610547575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055a60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105ab5760405162461bcd60e51b8152600401610418906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105dd610a55565b6001600160a01b0316146106035760405162461bcd60e51b81526004016104189061141d565b61060c81610a70565b604080515f8082526020820190925261062791839190610a78565b50565b5f610636848484610be2565b90505b9392505050565b610648610c34565b610652335f610cc4565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000616300361069c5760405162461bcd60e51b8152600401610418906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106ce610a55565b6001600160a01b0316146106f45760405162461bcd60e51b81526004016104189061141d565b6106fd82610a70565b61054782826001610a78565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000616146107a85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610418565b505f5160206115565f395f51905f5290565b6107c26109bc565b6106525f610cdd565b60655433906001600160a01b031681146108395760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610418565b61062781610cdd565b61084a610cf6565b610652336001610cc4565b5f61085e610a55565b905090565b5f610639468484610be2565b6108776109bc565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c85760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109536109bc565b606580546001600160a01b0383166001600160a01b031990911681179091556109846033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610418565b806001600160a01b038116610a3e5760405163538ba4f960e01b815260040160405180910390fd5b610a4783610d67565b610a5082610dc5565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106276109bc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aab57610a5083610e35565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b05575060408051601f3d908101601f19168201909252610b0291810190611469565b60015b610b685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610418565b5f5160206115565f395f51905f528114610bd65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610418565b50610a50838383610ed0565b5f610bed8484610efa565b905081158015610c0457506001600160a01b038116155b1561063957604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610418565b610c4860c954610100900460ff1660021490565b610c655760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062781610fa4565b610d0a60c954610100900460ff1660021490565b15610d285760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cba565b5f54610100900460ff16610d8d5760405162461bcd60e51b815260040161041890611480565b610d95610ff5565b610db36001600160a01b03821615610dad5781610cdd565b33610cdd565b5060c9805461ff001916610100179055565b5f54610100900460ff16610deb5760405162461bcd60e51b815260040161041890611480565b6001600160401b03461115610e135760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610ea25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610418565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ed98361101b565b5f82511180610ee55750805b15610a5057610ef4838361105a565b50505050565b6097545f906001600160a01b031680610f2657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f78573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9c91906114cb565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106525760405162461bcd60e51b815260040161041890611480565b61102481610e35565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061063983836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610418565b5081610f9c565b610f9c83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104189190611523565b6001600160a01b0381168114610627575f5ffd5b5f602082840312156111af575f5ffd5b81356106398161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516106398161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220aaaf966a2003ebe4671aa9de570afe05d0301fbbd078871e556d1063abb547fc64736f6c634300081b0033", + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000006161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000006": { @@ -143,7 +143,7 @@ "0x6db8284aa664f2ba76ffc7a2219f82b728ba258e79df0e93d3eb45b5cb231a69": "0x0000000000000000000000000167001000000000000000000000000000010098", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000006" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000000001": { @@ -151,7 +151,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a8578063eefbf17e146106c5578063f09a4016146106eb578063f2fde38b1461070a575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f98565b610729565b005b34801561024d575f5ffd5b50610240610a27565b610269610264366004612fe6565b610ade565b604051610277929190613172565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461318a565b610e94565b604051610277929190613247565b3480156102b8575f5ffd5b506102c1611354565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb366004613296565b61136c565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b506103556103413660046132b1565b60fc6020525f908152604090205460ff1681565b60405161027791906132c8565b34801561036d575f5ffd5b5061030f61037c3660046132ec565b611433565b34801561038c575f5ffd5b50610240611449565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133ef565b61145d565b3480156103d7575f5ffd5b506103ab611516565b3480156103eb575f5ffd5b506102c16103fa36600461318a565b6115c8565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fe6565b611633565b348015610449575f5ffd5b50610240611701565b34801561045d575f5ffd5b50610240611712565b348015610471575f5ffd5b506104856104803660046132b1565b611789565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b4366004613296565b6117a7565b3480156104c4575f5ffd5b50610240611827565b3480156104d8575f5ffd5b5061030f61183a565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461343b565b611848565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fe6565b611874565b348015610566575f5ffd5b5061024061057536600461318a565b611a63565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613454565b611d67565b3480156105ba575f5ffd5b506102c16105c936600461318a565b611d73565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe366004613577565b611dd4565b34801561060e575f5ffd5b50610617611e03565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab6106653660046132b1565b60031890565b348015610676575f5ffd5b5060c954610690906201000090046001600160401b031681565b6040516001600160401b039091168152602001610277565b3480156106b3575f5ffd5b506065546001600160a01b031661030f565b3480156106d0575f5ffd5b5060fb5461069090600160401b90046001600160401b031681565b3480156106f6575f5ffd5b506102406107053660046135a8565b611eaa565b348015610715575f5ffd5b50610240610724366004613296565b611f71565b61073960e0830160c0840161343b565b46816001600160401b03161461076257604051631c6c777560e31b815260040160405180910390fd5b61077260a084016080850161343b565b6001600160401b0381161580610790575046816001600160401b0316145b156107ae57604051631c6c777560e31b815260040160405180910390fd5b6107c260c954610100900460ff1660021490565b156107e05760405163bae6e2a960e01b815260040160405180910390fd5b60026107ee60c95460ff1690565b60ff160361080f5760405163dfc60d8560e01b815260040160405180910390fd5b6108196002611fe2565b5f6108266105fe866135d4565b9050610833816001611ff8565b61084185610120013561204a565b61085e576040516335856fbd60e21b815260040160405180910390fd5b5f6108838661087e6d7369676e616c5f7365727669636560901b5f611d67565b6120eb565b156108ce576108c78661012001356188b860405180602001604052805f8152508960e00160208101906108b69190613296565b6001600160a01b03169291906121e2565b9050610948565b6108de60608701604088016135df565b63ffffffff1615806108ed5750845b801561091b5750610905610100870160e08801613296565b6001600160a01b0316336001600160a01b031614155b15610939576040516372b6e1c360e11b815260040160405180910390fd5b61094586835a5f61221f565b90505b801561095e57610959826002612343565b610a15565b84156109fc5761096f826003612343565b61098a6d7369676e616c5f7365727669636560901b5f611d67565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f691906135f8565b50610a15565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a216001611fe2565b50505050565b610a2f612400565b5f54600290610100900460ff16158015610a4f57505f5460ff8083169116105b610a745760405162461bcd60e51b8152600401610a6b9061360f565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b4460c0840160a08501613296565b6001600160a01b038116610b6b5760405163538ba4f960e01b815260040160405180910390fd5b610b7c610100850160e08601613296565b6001600160a01b038116610ba35760405163538ba4f960e01b815260040160405180910390fd5b610bb360e0860160c0870161343b565b6001600160401b0381161580610bd1575046816001600160401b0316145b15610bef57604051631c6c777560e31b815260040160405180910390fd5b610c0360c954610100900460ff1660021490565b15610c215760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2f60c95460ff1690565b60ff1603610c505760405163dfc60d8560e01b815260040160405180910390fd5b610c5a6002611fe2565b610c6a60608701604088016135df565b63ffffffff165f03610cb257610c86604087016020880161343b565b6001600160401b031615610cad5760405163c9f5178760e01b815260040160405180910390fd5b610cda565b610cbb8661245a565b5f03610cda576040516308c2ad5360e01b815260040160405180910390fd5b5f610cee61051860e0890160c08a0161343b565b50905080610d0f57604051631c6c777560e31b815260040160405180910390fd5b34610d206040890160208a0161343b565b610d38906001600160401b03166101208a0135613671565b14610d5657604051634ac2abdf60e11b815260040160405180910390fd5b610d5f876135d4565b60fb8054919650600160401b9091046001600160401b0316906008610d8383613684565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610dbe85611dd4565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610df091906136ae565b60405180910390a2610e136d7369676e616c5f7365727669636560901b5f611d67565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e4091815260200190565b6020604051808303815f875af1158015610e5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8091906135f8565b5050610e8c6001611fe2565b505050915091565b5f5f610eaa60c954610100900460ff1660021490565b15610ec85760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed660c95460ff1690565b60ff1603610ef75760405163dfc60d8560e01b815260040160405180910390fd5b610f016002611fe2565b5f5a905046610f1660e0880160c0890161343b565b6001600160401b031614610f3d57604051631c6c777560e31b815260040160405180910390fd5b610f4d60a087016080880161343b565b6001600160401b03161580610f79575046610f6e60a088016080890161343b565b6001600160401b0316145b15610f9757604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fcb610100880160e08901613296565b6001600160a01b031633148015606083015261103a57610ff160608801604089016135df565b63ffffffff165f03611016576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103a57604051631e3b03c960e01b815260040160405180910390fd5b5f6110476105fe896135d4565b9050611053815f611ff8565b5f61106f6d7369676e616c5f7365727669636560901b5f611d67565b63ffffffff881660208501529050611099818361109260a08d0160808e0161343b565b8b8b6124ad565b63ffffffff166040808501919091526110d8906110bb908b0160208c0161343b565b6110d3906001600160401b03166101208c0135613671565b61204a565b6110f5576040516335856fbd60e21b815260040160405180910390fd5b5f6111008a836120eb565b1561111957506002955060019450610120890135611160565b5f8460600151611129575a611132565b6111328b61245a565b90506111448b8583886060015161221f565b1561115557600297505f965061115e565b60019750600296505b505b61117060408b0160208c0161343b565b6001600160401b0316156112d15761118e60408b0160208c0161343b565b6111a1906001600160401b031682613671565b9050836060015180156111c857506111bf60608b0160408c016135df565b63ffffffff1615155b156112d157604084015163ffffffff16614e20025a6112056111ee6101408e018e6136c0565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f91839161122e9183919061255816565b0390505f61124260608e0160408f016135df565b63ffffffff168d602001602081019061125b919061343b565b6001600160401b031683028161127357611273613709565b0490505f48830290505f6112b78f6020016020810190611293919061343b565b6001600160401b0316848410156112af5784840160011c6112b1565b845b9061256d565b958690039590506112cb33826188b8612581565b50505050505b6112f9816188b86112e96101008e0160e08f01613296565b6001600160a01b03169190612581565b6113038388612343565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b866040516113359291906138a1565b60405180910390a2505050505061134c6001611fe2565b935093915050565b5f600261136360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113b45760405162461bcd60e51b8152600401610a6b906138f5565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166113e66125c4565b6001600160a01b03161461140c5760405162461bcd60e51b8152600401610a6b90613941565b611415816125df565b604080515f80825260208201909252611430918391906125e7565b50565b5f61143f848484612751565b90505b9392505050565b6114516127a3565b61145b335f612833565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036114a55760405162461bcd60e51b8152600401610a6b906138f5565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114d76125c4565b6001600160a01b0316146114fd5760405162461bcd60e51b8152600401610a6b90613941565b611506826125df565b611512828260016125e7565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146115b55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a6b565b505f516020613b5b5f395f51905f525b90565b5f466115da60a086016080870161343b565b6001600160401b0316146115ef57505f611442565b61143f61160d6d7369676e616c5f7365727669636560901b5f611d67565b61161c6106656105fe886135d4565b61162c60e0880160c0890161343b565b86866128e0565b5f4661164560a084016080850161343b565b6001600160401b03161461165a57505f919050565b6116756d7369676e616c5f7365727669636560901b5f611d67565b6001600160a01b03166332676bc6306116906105fe866135d4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fb919061398d565b92915050565b611709612400565b61145b5f612962565b60655433906001600160a01b031681146117805760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a6b565b61143081612962565b5f6116fb620c35006101a06020601f8601819004020160041b6139a8565b806001600160a01b0381166117cf5760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b15801561180d575f5ffd5b505af115801561181f573d5f5f3e3d5ffd5b505050505050565b61182f61297b565b61145b336001612833565b5f6118436125c4565b905090565b5f5f61185f836562726964676560d01b6001611433565b6001600160a01b038116151594909350915050565b61188460e0820160c0830161343b565b46816001600160401b0316146118ad57604051631c6c777560e31b815260040160405180910390fd5b6118bd60a083016080840161343b565b6001600160401b03811615806118db575046816001600160401b0316145b156118f957604051631c6c777560e31b815260040160405180910390fd5b61190d60c954610100900460ff1660021490565b1561192b5760405163bae6e2a960e01b815260040160405180910390fd5b600261193960c95460ff1690565b60ff160361195a5760405163dfc60d8560e01b815260040160405180910390fd5b6119646002611fe2565b611975610100840160e08501613296565b6001600160a01b0316336001600160a01b0316146119a6576040516372b6e1c360e11b815260040160405180910390fd5b5f6119b36105fe856135d4565b90506119c0816001611ff8565b6119cb816003612343565b6119e66d7369676e616c5f7365727669636560901b5f611d67565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5291906135f8565b5050611a5e6001611fe2565b505050565b611a7360a084016080850161343b565b46816001600160401b031614611a9c57604051631c6c777560e31b815260040160405180910390fd5b611aac60e0850160c0860161343b565b6001600160401b0381161580611aca575046816001600160401b0316145b15611ae857604051631c6c777560e31b815260040160405180910390fd5b611afc60c954610100900460ff1660021490565b15611b1a5760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2860c95460ff1690565b60ff1603611b495760405163dfc60d8560e01b815260040160405180910390fd5b611b536002611fe2565b5f611b606105fe876135d4565b9050611b6c815f611ff8565b5f611b886d7369676e616c5f7365727669636560901b5f611d67565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bd4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf8919061398d565b611c155760405163ab035ad560e01b815260040160405180910390fd5b611c348160038418611c2d60e08b0160c08c0161343b565b89896124ad565b50611c40826004612343565b611c4e87610120013561204a565b611c6b576040516335856fbd60e21b815260040160405180910390fd5b611c9462bc399d60e11b611c8560808a0160608b01613296565b6001600160a01b0316906129ec565b15611d3857611cb38230611cae60a08b0160808c0161343b565b612abc565b611cc36080880160608901613296565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf69291906139c4565b5f604051808303818588803b158015611d0d575f5ffd5b505af1158015611d1f573d5f5f3e3d5ffd5b5050505050611d335f195f1b5f1980612abc565b611d54565b611d546101208801356188b86112e960c08b0160a08c01613296565b5050611d606001611fe2565b5050505050565b5f611442468484612751565b5f46611d8560e0860160c0870161343b565b6001600160401b031614611d9a57505f611442565b61143f611db86d7369676e616c5f7365727669636560901b5f611d67565b611dc46105fe876135d4565b61162c60a088016080890161343b565b5f81604051602001611de691906139e5565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e7a604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e8c575080515f19145b156115c557604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec857505f54600160ff909116105b80611ee15750303b158015611ee157505f5460ff166001145b611efd5760405162461bcd60e51b8152600401610a6b9061360f565b5f805460ff191660011790558015611f1e575f805461ff0019166101001790555b611f288383612b11565b8015611a5e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f79612400565b606580546001600160a01b0383166001600160a01b03199091168117909155611faa6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200a5761200a61321f565b5f83815260fc602052604090205460ff16600481111561202c5761202c61321f565b14611512576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120676c38bab7ba30afb6b0b730b3b2b960991b6001611d67565b90506001600160a01b0381166120805750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120c5575f5ffd5b505af19250505080156120d6575060015b6120e257505f92915050565b50600192915050565b5f806120ff61012085016101008601613296565b6001600160a01b031603612115575060016116fb565b3061212861012085016101008601613296565b6001600160a01b03160361213e575060016116fb565b6001600160a01b03821661215a61012085016101008601613296565b6001600160a01b031603612170575060016116fb565b60046121806101408501856136c0565b9050101580156121b75750637f07c94760e01b6121a16101408501856136c0565b6121aa91613a1b565b6001600160e01b03191614155b801561144257506114426121d361012085016101008601613296565b6001600160a01b03163b151590565b5f6001600160a01b03851661220a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f306122316080870160608801613296565b6001600160a01b03160361224757612247613a53565b61012085013515801561226757506122636101408601866136c0565b1590505b156122745750600161233b565b825f0361228257505f61233b565b6122a6846122966080880160608901613296565b611cae60a0890160808a0161343b565b5f6122b961012087016101008801613296565b90506101208601355f6122d06101408901896136c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a9050851561232a5761232a8188612b4b565b6123365f198080612abc565b505050505b949350505050565b8060048111156123555761235561321f565b5f83815260fc602052604090205460ff1660048111156123775761237761321f565b03612395576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123bf576123bf61321f565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123f491906132c8565b60405180910390a25050565b6033546001600160a01b0316331461145b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a6b565b5f8061247461246d6101408501856136c0565b9050611789565b63ffffffff169050806124a561249060608601604087016135df565b63ffffffff168361255890919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124d2876562726964676560d01b5f611433565b8887876040518663ffffffff1660e01b81526004016124f5959493929190613a67565b6020604051808303815f875af192505050801561252f575060408051601f3d908101601f1916820190925261252c918101906135f8565b60015b61254c576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f8183116125665781611442565b5090919050565b5f81831161257b5782611442565b50919050565b815f0361258d57505050565b6125a783838360405180602001604052805f8152506121e2565b611a5e57604051634c67134d60e11b815260040160405180910390fd5b5f516020613b5b5f395f51905f52546001600160a01b031690565b611430612400565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561261a57611a5e83612b5f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612674575060408051601f3d908101601f19168201909252612671918101906135f8565b60015b6126d75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a6b565b5f516020613b5b5f395f51905f5281146127455760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a6b565b50611a5e838383612bfa565b5f61275c8484612c1e565b90508115801561277357506001600160a01b038116155b1561144257604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610a6b565b6127b760c954610100900460ff1660021490565b6127d45760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061287b57506128666d636861696e5f7761746368646f6760901b6001611d67565b6001600160a01b0316826001600160a01b0316145b15612884575050565b8080156128be57506128a96e6272696467655f7761746368646f6760881b6001611d67565b6001600160a01b0316826001600160a01b0316145b156128c7575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612905876562726964676560d01b5f611433565b8887876040518663ffffffff1660e01b8152600401612928959493929190613a67565b5f6040518083038186803b15801561293e575f5ffd5b505afa92505050801561294f575060015b61295a57505f61254f565b50600161254f565b606580546001600160a01b031916905561143081612cc0565b61298f60c954610100900460ff1660021490565b156129ad5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001612829565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612a489190613aa8565b5f60405180830381855afa9150503d805f8114612a80576040519150601f19603f3d011682016040523d82523d5f602084013e612a85565b606091505b5091509150818015612a98575080516020145b15612ab45780806020019051810190612ab1919061398d565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b395760405163538ba4f960e01b815260040160405180910390fd5b612b4283612d11565b611a5e82612d6f565b612b56603f82613ac3565b82101561151257fe5b6001600160a01b0381163b612bcc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a6b565b5f516020613b5b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c0383612ddf565b5f82511180612c0f5750805b15611a5e57610a218383612e1e565b6097545f906001600160a01b031680612c4a57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612c9c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061233b9190613ae2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d375760405162461bcd60e51b8152600401610a6b90613afd565b612d3f612e43565b612d5d6001600160a01b03821615612d575781612962565b33612962565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d955760405162461bcd60e51b8152600401610a6b90613afd565b6001600160401b03461115612dbd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612de881612b5f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114428383604051806060016040528060278152602001613b7b60279139612e69565b5f54610100900460ff1661145b5760405162461bcd60e51b8152600401610a6b90613afd565b60605f5f856001600160a01b031685604051612e859190613aa8565b5f60405180830381855af49150503d805f8114612ebd576040519150601f19603f3d011682016040523d82523d5f602084013e612ec2565b606091505b5091509150612ed386838387612edd565b9695505050505050565b60608315612f4b5782515f03612f44576001600160a01b0385163b612f445760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6b565b508161233b565b61233b8383815115612f605781518083602001fd5b8060405162461bcd60e51b8152600401610a6b9190613b48565b5f610160828403121561257b575f5ffd5b8015158114611430575f5ffd5b5f5f60408385031215612fa9575f5ffd5b82356001600160401b03811115612fbe575f5ffd5b612fca85828601612f7a565b9250506020830135612fdb81612f8b565b809150509250929050565b5f60208284031215612ff6575f5ffd5b81356001600160401b0381111561300b575f5ffd5b61233b84828501612f7a565b5f5b83811015613031578181015183820152602001613019565b50505f910152565b5f8151808452613050816020860160208601613017565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161308c60208501826001600160401b03169052565b5060408201516130a4604085018263ffffffff169052565b5060608201516130bf60608501826001600160a01b03169052565b5060808201516130da60808501826001600160401b03169052565b5060a08201516130f560a08501826001600160a01b03169052565b5060c082015161311060c08501826001600160401b03169052565b5060e082015161312b60e08501826001600160a01b03169052565b506101008201516131486101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261233b610160850182613039565b828152604060208201525f61143f6040830184613064565b5f5f5f6040848603121561319c575f5ffd5b83356001600160401b038111156131b1575f5ffd5b6131bd86828701612f7a565b93505060208401356001600160401b038111156131d8575f5ffd5b8401601f810186136131e8575f5ffd5b80356001600160401b038111156131fd575f5ffd5b86602082840101111561320e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b600581106132435761324361321f565b9052565b604081016132558285613233565b600483106132655761326561321f565b8260208301529392505050565b6001600160a01b0381168114611430575f5ffd5b803561329181613272565b919050565b5f602082840312156132a6575f5ffd5b813561144281613272565b5f602082840312156132c1575f5ffd5b5035919050565b602081016116fb8284613233565b80356001600160401b0381168114613291575f5ffd5b5f5f5f606084860312156132fe575f5ffd5b613307846132d6565b925060208401359150604084013561331e81612f8b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b038111828210171561336057613360613329565b60405290565b5f82601f830112613375575f5ffd5b81356001600160401b0381111561338e5761338e613329565b604051601f8201601f19908116603f011681016001600160401b03811182821017156133bc576133bc613329565b6040528181528382016020018510156133d3575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613400575f5ffd5b823561340b81613272565b915060208301356001600160401b03811115613425575f5ffd5b61343185828601613366565b9150509250929050565b5f6020828403121561344b575f5ffd5b611442826132d6565b5f5f60408385031215613465575f5ffd5b823591506020830135612fdb81612f8b565b803563ffffffff81168114613291575f5ffd5b5f610160828403121561349b575f5ffd5b6134a361333d565b90506134ae826132d6565b81526134bc602083016132d6565b60208201526134cd60408301613477565b60408201526134de60608301613286565b60608201526134ef608083016132d6565b608082015261350060a08301613286565b60a082015261351160c083016132d6565b60c082015261352260e08301613286565b60e08201526135346101008301613286565b61010082015261012082810135908201526101408201356001600160401b0381111561355e575f5ffd5b61356a84828501613366565b6101408301525092915050565b5f60208284031215613587575f5ffd5b81356001600160401b0381111561359c575f5ffd5b61233b8482850161348a565b5f5f604083850312156135b9575f5ffd5b82356135c481613272565b91506020830135612fdb81613272565b5f6116fb368361348a565b5f602082840312156135ef575f5ffd5b61144282613477565b5f60208284031215613608575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116fb576116fb61365d565b5f6001600160401b0382166001600160401b0381036136a5576136a561365d565b60010192915050565b602081525f6114426020830184613064565b5f5f8335601e198436030181126136d5575f5ffd5b8301803591506001600160401b038211156136ee575f5ffd5b602001915036819003821315613702575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613732575f5ffd5b83016020810192503590506001600160401b03811115613750575f5ffd5b803603821315613702575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137a082613793836132d6565b6001600160401b03169052565b5f6137ad602083016132d6565b6001600160401b031660208401526137c760408301613477565b63ffffffff1660408401526137de60608301613286565b6001600160a01b031660608401526137f8608083016132d6565b6001600160401b0316608084015261381260a08301613286565b6001600160a01b031660a084015261382c60c083016132d6565b6001600160401b031660c084015261384660e08301613286565b6001600160a01b031660e08401526138616101008301613286565b6001600160a01b0316610100840152610120828101359084015261388961014083018361371d565b610160610140860152612ab16101608601828461375e565b60a081525f6138b360a0830185613786565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561399d575f5ffd5b815161144281612f8b565b63ffffffff81811683821601908111156116fb576116fb61365d565b604081525f6139d66040830185613786565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114426080830184613064565b80356001600160e01b03198116906004841015613a4c576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613a9d60808301848661375e565b979650505050505050565b5f8251613ab9818460208701613017565b9190910192915050565b5f82613add57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613af2575f5ffd5b815161144281613272565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081525f611442602083018461303956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122085601d649aeb04cb9162be5c77b40846ce91dce2b52c697ff5f3a38e93fa9a4664736f6c634300081b0033", + "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a2578063eefbf17e146106bf578063f09a4016146106e5578063f2fde38b14610704575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f9c565b610723565b005b34801561024d575f5ffd5b50610240610a21565b610269610264366004612fea565b610ad8565b604051610277929190613176565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461318e565b610e8e565b60405161027792919061324b565b3480156102b8575f5ffd5b506102c161134e565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb36600461329a565b611366565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b506103556103413660046132b5565b60fc6020525f908152604090205460ff1681565b60405161027791906132cc565b34801561036d575f5ffd5b5061030f61037c3660046132f0565b61142d565b34801561038c575f5ffd5b50610240611443565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133f3565b611457565b3480156103d7575f5ffd5b506103ab611510565b3480156103eb575f5ffd5b506102c16103fa36600461318e565b6115c2565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fea565b61162d565b348015610449575f5ffd5b506102406116fb565b34801561045d575f5ffd5b5061024061170c565b348015610471575f5ffd5b506104856104803660046132b5565b611783565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b436600461329a565b6117a1565b3480156104c4575f5ffd5b50610240611821565b3480156104d8575f5ffd5b5061030f611834565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461343f565b611842565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fea565b61186e565b348015610566575f5ffd5b5061024061057536600461318e565b611a5d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613458565b611d61565b3480156105ba575f5ffd5b506102c16105c936600461318e565b611d6d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe36600461357b565b611dce565b34801561060e575f5ffd5b50610617611dfd565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab6106653660046132b5565b60031890565b348015610676575f5ffd5b5060c9546201000090046001600160401b03165b6040516001600160401b039091168152602001610277565b3480156106ad575f5ffd5b506065546001600160a01b031661030f565b3480156106ca575f5ffd5b5060fb5461068a90600160401b90046001600160401b031681565b3480156106f0575f5ffd5b506102406106ff3660046135ac565b611ea4565b34801561070f575f5ffd5b5061024061071e36600461329a565b611f6b565b61073360e0830160c0840161343f565b46816001600160401b03161461075c57604051631c6c777560e31b815260040160405180910390fd5b61076c60a084016080850161343f565b6001600160401b038116158061078a575046816001600160401b0316145b156107a857604051631c6c777560e31b815260040160405180910390fd5b6107bc60c954610100900460ff1660021490565b156107da5760405163bae6e2a960e01b815260040160405180910390fd5b60026107e860c95460ff1690565b60ff16036108095760405163dfc60d8560e01b815260040160405180910390fd5b6108136002611fdc565b5f6108206105fe866135d8565b905061082d816001611ff2565b61083b856101200135612044565b610858576040516335856fbd60e21b815260040160405180910390fd5b5f61087d866108786d7369676e616c5f7365727669636560901b5f611d61565b6120e5565b156108c8576108c18661012001356188b860405180602001604052805f8152508960e00160208101906108b0919061329a565b6001600160a01b03169291906121dc565b9050610942565b6108d860608701604088016135e3565b63ffffffff1615806108e75750845b801561091557506108ff610100870160e0880161329a565b6001600160a01b0316336001600160a01b031614155b15610933576040516372b6e1c360e11b815260040160405180910390fd5b61093f86835a5f612219565b90505b80156109585761095382600261233d565b610a0f565b84156109f65761096982600361233d565b6109846d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f091906135fc565b50610a0f565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a1b6001611fdc565b50505050565b610a296123fa565b5f54600290610100900460ff16158015610a4957505f5460ff8083169116105b610a6e5760405162461bcd60e51b8152600401610a6590613613565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b3e60c0840160a0850161329a565b6001600160a01b038116610b655760405163538ba4f960e01b815260040160405180910390fd5b610b76610100850160e0860161329a565b6001600160a01b038116610b9d5760405163538ba4f960e01b815260040160405180910390fd5b610bad60e0860160c0870161343f565b6001600160401b0381161580610bcb575046816001600160401b0316145b15610be957604051631c6c777560e31b815260040160405180910390fd5b610bfd60c954610100900460ff1660021490565b15610c1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2960c95460ff1690565b60ff1603610c4a5760405163dfc60d8560e01b815260040160405180910390fd5b610c546002611fdc565b610c6460608701604088016135e3565b63ffffffff165f03610cac57610c80604087016020880161343f565b6001600160401b031615610ca75760405163c9f5178760e01b815260040160405180910390fd5b610cd4565b610cb586612454565b5f03610cd4576040516308c2ad5360e01b815260040160405180910390fd5b5f610ce861051860e0890160c08a0161343f565b50905080610d0957604051631c6c777560e31b815260040160405180910390fd5b34610d1a6040890160208a0161343f565b610d32906001600160401b03166101208a0135613675565b14610d5057604051634ac2abdf60e11b815260040160405180910390fd5b610d59876135d8565b60fb8054919650600160401b9091046001600160401b0316906008610d7d83613688565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610db885611dce565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610dea91906136b2565b60405180910390a2610e0d6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e3a91815260200190565b6020604051808303815f875af1158015610e56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7a91906135fc565b5050610e866001611fdc565b505050915091565b5f5f610ea460c954610100900460ff1660021490565b15610ec25760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed060c95460ff1690565b60ff1603610ef15760405163dfc60d8560e01b815260040160405180910390fd5b610efb6002611fdc565b5f5a905046610f1060e0880160c0890161343f565b6001600160401b031614610f3757604051631c6c777560e31b815260040160405180910390fd5b610f4760a087016080880161343f565b6001600160401b03161580610f73575046610f6860a088016080890161343f565b6001600160401b0316145b15610f9157604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fc5610100880160e0890161329a565b6001600160a01b031633148015606083015261103457610feb60608801604089016135e3565b63ffffffff165f03611010576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103457604051631e3b03c960e01b815260040160405180910390fd5b5f6110416105fe896135d8565b905061104d815f611ff2565b5f6110696d7369676e616c5f7365727669636560901b5f611d61565b63ffffffff881660208501529050611093818361108c60a08d0160808e0161343f565b8b8b6124a7565b63ffffffff166040808501919091526110d2906110b5908b0160208c0161343f565b6110cd906001600160401b03166101208c0135613675565b612044565b6110ef576040516335856fbd60e21b815260040160405180910390fd5b5f6110fa8a836120e5565b156111135750600295506001945061012089013561115a565b5f8460600151611123575a61112c565b61112c8b612454565b905061113e8b85838860600151612219565b1561114f57600297505f9650611158565b60019750600296505b505b61116a60408b0160208c0161343f565b6001600160401b0316156112cb5761118860408b0160208c0161343f565b61119b906001600160401b031682613675565b9050836060015180156111c257506111b960608b0160408c016135e3565b63ffffffff1615155b156112cb57604084015163ffffffff16614e20025a6111ff6111e86101408e018e6136c4565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112289183919061255216565b0390505f61123c60608e0160408f016135e3565b63ffffffff168d6020016020810190611255919061343f565b6001600160401b031683028161126d5761126d61370d565b0490505f48830290505f6112b18f602001602081019061128d919061343f565b6001600160401b0316848410156112a95784840160011c6112ab565b845b90612567565b958690039590506112c533826188b861257b565b50505050505b6112f3816188b86112e36101008e0160e08f0161329a565b6001600160a01b0316919061257b565b6112fd838861233d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b8660405161132f9291906138a5565b60405180910390a250505050506113466001611fdc565b935093915050565b5f600261135d60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113ae5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166113e06125be565b6001600160a01b0316146114065760405162461bcd60e51b8152600401610a6590613945565b61140f816125d9565b604080515f8082526020820190925261142a918391906125e1565b50565b5f61143984848461274b565b90505b9392505050565b61144b6127a7565b611455335f612837565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116300361149f5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114d16125be565b6001600160a01b0316146114f75760405162461bcd60e51b8152600401610a6590613945565b611500826125d9565b61150c828260016125e1565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146115af5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a65565b505f516020613b5f5f395f51905f525b90565b5f466115d460a086016080870161343f565b6001600160401b0316146115e957505f61143c565b6114396116076d7369676e616c5f7365727669636560901b5f611d61565b6116166106656105fe886135d8565b61162660e0880160c0890161343f565b86866128e4565b5f4661163f60a084016080850161343f565b6001600160401b03161461165457505f919050565b61166f6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166332676bc63061168a6105fe866135d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190613991565b92915050565b6117036123fa565b6114555f612966565b60655433906001600160a01b0316811461177a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a65565b61142a81612966565b5f6116f5620c35006101a06020601f8601819004020160041b6139ac565b806001600160a01b0381166117c95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b158015611807575f5ffd5b505af1158015611819573d5f5f3e3d5ffd5b505050505050565b61182961297f565b611455336001612837565b5f61183d6125be565b905090565b5f5f611859836562726964676560d01b600161142d565b6001600160a01b038116151594909350915050565b61187e60e0820160c0830161343f565b46816001600160401b0316146118a757604051631c6c777560e31b815260040160405180910390fd5b6118b760a083016080840161343f565b6001600160401b03811615806118d5575046816001600160401b0316145b156118f357604051631c6c777560e31b815260040160405180910390fd5b61190760c954610100900460ff1660021490565b156119255760405163bae6e2a960e01b815260040160405180910390fd5b600261193360c95460ff1690565b60ff16036119545760405163dfc60d8560e01b815260040160405180910390fd5b61195e6002611fdc565b61196f610100840160e0850161329a565b6001600160a01b0316336001600160a01b0316146119a0576040516372b6e1c360e11b815260040160405180910390fd5b5f6119ad6105fe856135d8565b90506119ba816001611ff2565b6119c581600361233d565b6119e06d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c91906135fc565b5050611a586001611fdc565b505050565b611a6d60a084016080850161343f565b46816001600160401b031614611a9657604051631c6c777560e31b815260040160405180910390fd5b611aa660e0850160c0860161343f565b6001600160401b0381161580611ac4575046816001600160401b0316145b15611ae257604051631c6c777560e31b815260040160405180910390fd5b611af660c954610100900460ff1660021490565b15611b145760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2260c95460ff1690565b60ff1603611b435760405163dfc60d8560e01b815260040160405180910390fd5b611b4d6002611fdc565b5f611b5a6105fe876135d8565b9050611b66815f611ff2565b5f611b826d7369676e616c5f7365727669636560901b5f611d61565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf29190613991565b611c0f5760405163ab035ad560e01b815260040160405180910390fd5b611c2e8160038418611c2760e08b0160c08c0161343f565b89896124a7565b50611c3a82600461233d565b611c48876101200135612044565b611c65576040516335856fbd60e21b815260040160405180910390fd5b611c8e62bc399d60e11b611c7f60808a0160608b0161329a565b6001600160a01b0316906129f0565b15611d3257611cad8230611ca860a08b0160808c0161343f565b612ac0565b611cbd608088016060890161329a565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf09291906139c8565b5f604051808303818588803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b5050505050611d2d5f195f1b5f1980612ac0565b611d4e565b611d4e6101208801356188b86112e360c08b0160a08c0161329a565b5050611d5a6001611fdc565b5050505050565b5f61143c46848461274b565b5f46611d7f60e0860160c0870161343f565b6001600160401b031614611d9457505f61143c565b611439611db26d7369676e616c5f7365727669636560901b5f611d61565b611dbe6105fe876135d8565b61162660a088016080890161343f565b5f81604051602001611de091906139e9565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e74604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e86575080515f19145b156115bf57604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec257505f54600160ff909116105b80611edb5750303b158015611edb57505f5460ff166001145b611ef75760405162461bcd60e51b8152600401610a6590613613565b5f805460ff191660011790558015611f18575f805461ff0019166101001790555b611f228383612b15565b8015611a58575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f736123fa565b606580546001600160a01b0383166001600160a01b03199091168117909155611fa46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200457612004613223565b5f83815260fc602052604090205460ff16600481111561202657612026613223565b1461150c576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120616c38bab7ba30afb6b0b730b3b2b960991b6001611d61565b90506001600160a01b03811661207a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120bf575f5ffd5b505af19250505080156120d0575060015b6120dc57505f92915050565b50600192915050565b5f806120f96101208501610100860161329a565b6001600160a01b03160361210f575060016116f5565b306121226101208501610100860161329a565b6001600160a01b031603612138575060016116f5565b6001600160a01b0382166121546101208501610100860161329a565b6001600160a01b03160361216a575060016116f5565b600461217a6101408501856136c4565b9050101580156121b15750637f07c94760e01b61219b6101408501856136c4565b6121a491613a1f565b6001600160e01b03191614155b801561143c575061143c6121cd6101208501610100860161329a565b6001600160a01b03163b151590565b5f6001600160a01b03851661220457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061222b608087016060880161329a565b6001600160a01b03160361224157612241613a57565b610120850135158015612261575061225d6101408601866136c4565b1590505b1561226e57506001612335565b825f0361227c57505f612335565b6122a084612290608088016060890161329a565b611ca860a0890160808a0161343f565b5f6122b36101208701610100880161329a565b90506101208601355f6122ca6101408901896136c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612324576123248188612b4f565b6123305f198080612ac0565b505050505b949350505050565b80600481111561234f5761234f613223565b5f83815260fc602052604090205460ff16600481111561237157612371613223565b0361238f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123b9576123b9613223565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123ee91906132cc565b60405180910390a25050565b6033546001600160a01b031633146114555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a65565b5f8061246e6124676101408501856136c4565b9050611783565b63ffffffff1690508061249f61248a60608601604087016135e3565b63ffffffff168361255290919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124cc876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b81526004016124ef959493929190613a6b565b6020604051808303815f875af1925050508015612529575060408051601f3d908101601f19168201909252612526918101906135fc565b60015b612546576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f818311612560578161143c565b5090919050565b5f818311612575578261143c565b50919050565b815f0361258757505050565b6125a183838360405180602001604052805f8152506121dc565b611a5857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b5f5f395f51905f52546001600160a01b031690565b61142a6123fa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561261457611a5883612b63565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561266e575060408051601f3d908101601f1916820190925261266b918101906135fc565b60015b6126d15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a65565b5f516020613b5f5f395f51905f52811461273f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a65565b50611a58838383612bfe565b5f6127568484612c22565b9050818061276c57506001600160a01b03811615155b8484909161279e57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610a65565b50509392505050565b6127bb60c954610100900460ff1660021490565b6127d85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061287f575061286a6d636861696e5f7761746368646f6760901b6001611d61565b6001600160a01b0316826001600160a01b0316145b15612888575050565b8080156128c257506128ad6e6272696467655f7761746368646f6760881b6001611d61565b6001600160a01b0316826001600160a01b0316145b156128cb575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612909876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b815260040161292c959493929190613a6b565b5f6040518083038186803b158015612942575f5ffd5b505afa925050508015612953575060015b61295e57505f612549565b506001612549565b606580546001600160a01b031916905561142a81612cc4565b61299360c954610100900460ff1660021490565b156129b15760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161282d565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612a4c9190613aac565b5f60405180830381855afa9150503d805f8114612a84576040519150601f19603f3d011682016040523d82523d5f602084013e612a89565b606091505b5091509150818015612a9c575080516020145b15612ab85780806020019051810190612ab59190613991565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b3d5760405163538ba4f960e01b815260040160405180910390fd5b612b4683612d15565b611a5882612d73565b612b5a603f82613ac7565b82101561150c57fe5b6001600160a01b0381163b612bd05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a65565b5f516020613b5f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c0783612de3565b5f82511180612c135750805b15611a5857610a1b8383612e22565b6097545f906001600160a01b031680612c4e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123359190613ae6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d3b5760405162461bcd60e51b8152600401610a6590613b01565b612d43612e47565b612d616001600160a01b03821615612d5b5781612966565b33612966565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d995760405162461bcd60e51b8152600401610a6590613b01565b6001600160401b03461115612dc15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612dec81612b63565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061143c8383604051806060016040528060278152602001613b7f60279139612e6d565b5f54610100900460ff166114555760405162461bcd60e51b8152600401610a6590613b01565b60605f5f856001600160a01b031685604051612e899190613aac565b5f60405180830381855af49150503d805f8114612ec1576040519150601f19603f3d011682016040523d82523d5f602084013e612ec6565b606091505b5091509150612ed786838387612ee1565b9695505050505050565b60608315612f4f5782515f03612f48576001600160a01b0385163b612f485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a65565b5081612335565b6123358383815115612f645781518083602001fd5b8060405162461bcd60e51b8152600401610a659190613b4c565b5f6101608284031215612575575f5ffd5b801515811461142a575f5ffd5b5f5f60408385031215612fad575f5ffd5b82356001600160401b03811115612fc2575f5ffd5b612fce85828601612f7e565b9250506020830135612fdf81612f8f565b809150509250929050565b5f60208284031215612ffa575f5ffd5b81356001600160401b0381111561300f575f5ffd5b61233584828501612f7e565b5f5b8381101561303557818101518382015260200161301d565b50505f910152565b5f815180845261305481602086016020860161301b565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161309060208501826001600160401b03169052565b5060408201516130a8604085018263ffffffff169052565b5060608201516130c360608501826001600160a01b03169052565b5060808201516130de60808501826001600160401b03169052565b5060a08201516130f960a08501826001600160a01b03169052565b5060c082015161311460c08501826001600160401b03169052565b5060e082015161312f60e08501826001600160a01b03169052565b5061010082015161314c6101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261233561016085018261303d565b828152604060208201525f6114396040830184613068565b5f5f5f604084860312156131a0575f5ffd5b83356001600160401b038111156131b5575f5ffd5b6131c186828701612f7e565b93505060208401356001600160401b038111156131dc575f5ffd5b8401601f810186136131ec575f5ffd5b80356001600160401b03811115613201575f5ffd5b866020828401011115613212575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b6005811061324757613247613223565b9052565b604081016132598285613237565b6004831061326957613269613223565b8260208301529392505050565b6001600160a01b038116811461142a575f5ffd5b803561329581613276565b919050565b5f602082840312156132aa575f5ffd5b813561143c81613276565b5f602082840312156132c5575f5ffd5b5035919050565b602081016116f58284613237565b80356001600160401b0381168114613295575f5ffd5b5f5f5f60608486031215613302575f5ffd5b61330b846132da565b925060208401359150604084013561332281612f8f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156133645761336461332d565b60405290565b5f82601f830112613379575f5ffd5b81356001600160401b038111156133925761339261332d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156133c0576133c061332d565b6040528181528382016020018510156133d7575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613404575f5ffd5b823561340f81613276565b915060208301356001600160401b03811115613429575f5ffd5b6134358582860161336a565b9150509250929050565b5f6020828403121561344f575f5ffd5b61143c826132da565b5f5f60408385031215613469575f5ffd5b823591506020830135612fdf81612f8f565b803563ffffffff81168114613295575f5ffd5b5f610160828403121561349f575f5ffd5b6134a7613341565b90506134b2826132da565b81526134c0602083016132da565b60208201526134d16040830161347b565b60408201526134e26060830161328a565b60608201526134f3608083016132da565b608082015261350460a0830161328a565b60a082015261351560c083016132da565b60c082015261352660e0830161328a565b60e0820152613538610100830161328a565b61010082015261012082810135908201526101408201356001600160401b03811115613562575f5ffd5b61356e8482850161336a565b6101408301525092915050565b5f6020828403121561358b575f5ffd5b81356001600160401b038111156135a0575f5ffd5b6123358482850161348e565b5f5f604083850312156135bd575f5ffd5b82356135c881613276565b91506020830135612fdf81613276565b5f6116f5368361348e565b5f602082840312156135f3575f5ffd5b61143c8261347b565b5f6020828403121561360c575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116f5576116f5613661565b5f6001600160401b0382166001600160401b0381036136a9576136a9613661565b60010192915050565b602081525f61143c6020830184613068565b5f5f8335601e198436030181126136d9575f5ffd5b8301803591506001600160401b038211156136f2575f5ffd5b602001915036819003821315613706575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613736575f5ffd5b83016020810192503590506001600160401b03811115613754575f5ffd5b803603821315613706575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137a482613797836132da565b6001600160401b03169052565b5f6137b1602083016132da565b6001600160401b031660208401526137cb6040830161347b565b63ffffffff1660408401526137e26060830161328a565b6001600160a01b031660608401526137fc608083016132da565b6001600160401b0316608084015261381660a0830161328a565b6001600160a01b031660a084015261383060c083016132da565b6001600160401b031660c084015261384a60e0830161328a565b6001600160a01b031660e0840152613865610100830161328a565b6001600160a01b0316610100840152610120828101359084015261388d610140830183613721565b610160610140860152612ab561016086018284613762565b60a081525f6138b760a083018561378a565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156139a1575f5ffd5b815161143c81612f8f565b63ffffffff81811683821601908111156116f5576116f5613661565b604081525f6139da604083018561378a565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f61143c6080830184613068565b80356001600160e01b03198116906004841015613a50576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613aa1608083018486613762565b979650505050505050565b5f8251613abd81846020870161301b565b9190910192915050565b5f82613ae157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613af6575f5ffd5b815161143c81613276565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081525f61143c602083018461303d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206e61aad42c8b57a755963db756b535ddf30400977c2a5a7162959c1da600b0a664736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000001": { @@ -163,7 +163,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000001" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x033b258556117b43a1e00000" }, "0x0167001000000000000000000000000000000002": { @@ -171,7 +171,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610520578063f09a40161461053d578063f2fde38b1461055c575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc36600461334d565b61057b565b005b3480156101de575f5ffd5b506101f26101ed366004613393565b610709565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e6102213660046133ce565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133fc565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b5366004613417565b610759565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e67565b3480156102f1575f5ffd5b506101d16103003660046133fc565b610e7f565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e36600461347f565b610f4f565b34801561034e575f5ffd5b506101d1610f65565b6101d16103653660046135c7565b610f79565b348015610375575f5ffd5b5061023e61102e565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b83660046133ce565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110df565b3480156103fd575f5ffd5b506101d16110f0565b6101d1610414366004613613565b611167565b348015610424575f5ffd5b506101d16112b7565b348015610438575f5ffd5b506102ba6112ca565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133fc565b6112d8565b6040516101fe9594939291906136cc565b348015610499575f5ffd5b506102ba6104a8366004613725565b61142d565b6104c06104bb366004613748565b611439565b6040516101fe9190613761565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c954610508906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101fe565b34801561052b575f5ffd5b506065546001600160a01b03166102ba565b348015610548575f5ffd5b506101d1610557366004613851565b61187c565b348015610567575f5ffd5b506101d16105763660046133fc565b61198b565b61058f60c954610100900460ff1660021490565b156105ad5760405163bae6e2a960e01b815260040160405180910390fd5b60026105bb60c95460ff1690565b60ff16036105dc5760405163dfc60d8560e01b815260040160405180910390fd5b6105e660026119fc565b6105ee611a12565b505f6105fe61014084018461386d565b61060c9160049082906138b6565b81019061061991906138dd565b90505f5f828060200190518101906106319190613989565b9350505091505f610655838760a001602081019061064f91906133fc565b84611b08565b905061067f61012087013561067060c0890160a08a016133fc565b6001600160a01b031690611bb0565b61068f60c0870160a088016133fc565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106ef939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a35050505061070560016119fc565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073857506001600160e01b03198216637f07c94760e01b145b8061075357506001600160e01b031982166301ffc9a760e01b145b92915050565b5f610762611bbb565b600261077060c95460ff1690565b60ff16036107915760405163dfc60d8560e01b815260040160405180910390fd5b61079b60026119fc565b6001600160a01b03821615806107d157506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107e457506001600160a01b0382163b155b156108025760405163dc63f98760e01b815260040160405180910390fd5b5f61081360408501602086016133fc565b6001600160a01b0316148061083c5750466108316020850185613a7d565b6001600160401b0316145b1561085a57604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff1615610894576040516375c42fc160e01b815260040160405180910390fd5b5f610130816108a66020870187613a7d565b6001600160401b031681526020019081526020015f205f8560200160208101906108d091906133fc565b6001600160a01b0316815260208101919091526040015f205490506108f86276a70082613aac565b4210156109185760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109296020870187613a7d565b6001600160401b031681526020019081526020015f205f85602001602081019061095391906133fc565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb9576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109e290613abf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0e90613abf565b8015610a595780601f10610a3057610100808354040283529160200191610a59565b820191905f5260205f20905b815481529060010190602001808311610a3c57829003601f168201915b50505050508152602001600282018054610a7290613abf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90613abf565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081525050905080604051602001610b059190613b56565b6040516020818303038152906040528051906020012085604051602001610b2c9190613bdc565b6040516020818303038152906040528051906020012014610b6057604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b9460018301826132f5565b610ba1600283015f6132f5565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd79063b8f2e0c560e01b611c15565b8015610bf85750610bf86001600160a01b03851663b8f2e0c560e01b611c15565b15610cb75760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c43575f5ffd5b505af1158015610c55573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cdd8282613d7f565b5083905061012e5f610cf26020880188613a7d565b6001600160401b031681526020019081526020015f205f866020016020810190610d1c91906133fc565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d759190613a7d565b6001600160401b031681526020019081526020015f205f866020016020810190610d9f91906133fc565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dd591906133fc565b6001600160a01b0316610deb6020860186613a7d565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e2460608a018a61386d565b610e3160808c018c61386d565b610e4160608e0160408f01613e3d565b604051610e549796959493929190613e58565b60405180910390a35061075360016119fc565b5f6002610e7660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ed05760405162461bcd60e51b8152600401610ec790613eaf565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610f02611ce5565b6001600160a01b031614610f285760405162461bcd60e51b8152600401610ec790613efb565b610f3181611d00565b604080515f80825260208201909252610f4c91839190611d08565b50565b5f610f5b848484611e72565b90505b9392505050565b610f6d611ec4565b610f77335f611f54565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fc15760405162461bcd60e51b8152600401610ec790613eaf565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610ff3611ce5565b6001600160a01b0316146110195760405162461bcd60e51b8152600401610ec790613efb565b61102282611d00565b61070582826001611d08565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110cd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec7565b505f5160206149db5f395f51905f5290565b6110e7611bbb565b610f775f611f5c565b60655433906001600160a01b0316811461115e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec7565b610f4c81611f5c565b61117b60c954610100900460ff1660021490565b156111995760405163bae6e2a960e01b815260040160405180910390fd5b60026111a760c95460ff1690565b60ff16036111c85760405163dfc60d8560e01b815260040160405180910390fd5b6111d260026119fc565b5f8080806111e285870187613f52565b93509350935093505f6111f3611f75565b90506111fe83612094565b5f61120a868585611b08565b905061121f6001600160a01b03851634611bb0565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129f94939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a450505050505061070560016119fc565b6112bf6120d0565b610f77336001611f54565b5f6112d3611ce5565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161132090613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90613abf565b80156113975780601f1061136e57610100808354040283529160200191611397565b820191905f5260205f20905b81548152906001019060200180831161137a57829003601f168201915b5050505050908060020180546113ac90613abf565b80601f01602080910402602001604051908101604052809291908181526020018280546113d890613abf565b80156114235780601f106113fa57610100808354040283529160200191611423565b820191905f5260205f20905b81548152906001019060200180831161140657829003601f168201915b5050505050905085565b5f610f5e468484611e72565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a760c954610100900460ff1660021490565b156114c55760405163bae6e2a960e01b815260040160405180910390fd5b60026114d360c95460ff1690565b60ff16036114f45760405163dfc60d8560e01b815260040160405180910390fd5b6114fe60026119fc565b8160c001355f0361152257604051634299323b60e11b815260040160405180910390fd5b5f61153360a08401608085016133fc565b6001600160a01b03160361155a576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156e60a08501608086016133fc565b6001600160a01b0316815260208101919091526040015f205460ff16156115a8576040516375c42fc160e01b815260040160405180910390fd5b6115b86080830160608401613a7d565b6001600160401b03163410156115e157604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115ed85612141565b6040805161016081019091525f8082529396509194509250602081016116196080890160608a01613a7d565b6001600160401b0316815260200161163760c0890160a08a01614057565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166890890189613a7d565b6001600160401b031681526020015f6001600160a01b031688602001602081019061169391906133fc565b6001600160a01b0316036116a757336116b7565b6116b76040890160208a016133fc565b6001600160a01b031681526020908101906116ee906116d8908a018a613a7d565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f4f565b6001600160a01b0316815260200161170c6080890160608a01613a7d565b61171f906001600160401b031634614072565b815260200185905290505f61173d6562726964676560d01b8261142d565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016117699190613761565b5f6040518083038185885af1158015611784573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117ac9190810190614090565b965090506117c060608801604089016133fc565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f01602081019061180f9190613a7d565b89602001518d608001602081019061182791906133fc565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187760016119fc565b919050565b5f54610100900460ff161580801561189a57505f54600160ff909116105b806118b35750303b1580156118b357505f5460ff166001145b6119165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec7565b5f805460ff191660011790558015611937575f805461ff0019166101001790555b61194183836125db565b8015611986575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611993611bbb565b606580546001600160a01b0383166001600160a01b031990911681179091556119c46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a4381600161142d565b6001600160a01b0316336001600160a01b031614611a7457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ab0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad491906141b0565b60208101519092506001600160a01b03163314611b0457604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3b57506020830151611b366001600160a01b0382168484612615565b611ba6565b611b4484612678565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b8f575f5ffd5b505af1158015611ba1573d5f5f3e3d5ffd5b505050505b610f5e81836126ba565b61070582825a612749565b6033546001600160a01b03163314610f775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec7565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611c719190614218565b5f60405180830381855afa9150503d805f8114611ca9576040519150601f19603f3d011682016040523d82523d5f602084013e611cae565b606091505b5091509150818015611cc1575080516020145b15611cdd5780806020019051810190611cda9190614233565b92505b505092915050565b5f5160206149db5f395f51905f52546001600160a01b031690565b610f4c611bbb565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d3b576119868361278c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d95575060408051601f3d908101601f19168201909252611d929181019061424e565b60015b611df85760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec7565b5f5160206149db5f395f51905f528114611e665760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec7565b50611986838383612827565b5f611e7d8484612851565b905081158015611e9457506001600160a01b038116155b15610f5e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ec7565b611ed860c954610100900460ff1660021490565b611ef55760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610705611bbb565b606580546001600160a01b0319169055610f4c816128fb565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611fa681600161142d565b6001600160a01b0316336001600160a01b031614611fd757604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612013573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203791906141b0565b91505f61205783604001516116e86a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461208f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b03811615806120b257506001600160a01b03811630145b15610f4c57604051635b50f3f960e01b815260040160405180910390fd5b6120e460c954610100900460ff1660021490565b156121025760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f4a565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161218360a08801608089016133fc565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156123b9576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161220390613abf565b80601f016020809104026020016040519081016040528092919081815260200182805461222f90613abf565b801561227a5780601f106122515761010080835404028352916020019161227a565b820191905f5260205f20905b81548152906001019060200180831161225d57829003601f168201915b5050505050815260200160028201805461229390613abf565b80601f01602080910402602001604051908101604052809291908181526020018280546122bf90613abf565b801561230a5780601f106122e15761010080835404028352916020019161230a565b820191905f5260205f20905b8154815290600101906020018083116122ed57829003601f168201915b505050505081525050925061234333308760c0013588608001602081019061233291906133fc565b6001600160a01b031692919061294c565b61235360a08601608087016133fc565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b158015612397575f5ffd5b505af11580156123a9573d5f5f3e3d5ffd5b505050508460c00135915061255b565b6040518060a00160405280466001600160401b031681526020018660800160208101906123e691906133fc565b6001600160a01b0316815260200161240c61240760a0890160808a016133fc565b612984565b60ff16815260200161242c61242760a0890160808a016133fc565b612a38565b815260200161244961244460a0890160808a016133fc565b612ae2565b905292505f61245e60a08701608088016133fc565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156124a5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c9919061424e565b90506124e46001600160a01b038316333060c08b013561294c565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa158015612528573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254c919061424e565b6125569190614072565b935050505b30637f07c947843361257360608a0160408b016133fc565b866040516020016125879493929190614265565b60408051601f19818403018152908290526125a49160240161429a565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166126035760405163538ba4f960e01b815260040160405180910390fd5b61260c83612b28565b61198682612b86565b6040516001600160a01b03831660248201526044810182905261198690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bf6565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118775761075382612cc9565b5f6126d66c38bab7ba30afb6b0b730b3b2b960991b600161142d565b90506001600160a01b03811615611986576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b15801561272e575f5ffd5b505af1158015612740573d5f5f3e3d5ffd5b50505050505050565b815f0361275557505050565b61276f83838360405180602001604052805f815250612ecb565b61198657604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec7565b5f5160206149db5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61283083612f08565b5f8251118061283c5750805b156119865761284b8383612f47565b50505050565b6097545f906001600160a01b03168061287d57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156128cf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f391906142ac565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261284b9085906323b872dd60e01b90608401612641565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129c99190614218565b5f60405180830381855afa9150503d805f8114612a01576040519150601f19603f3d011682016040523d82523d5f602084013e612a06565b606091505b5091509150818015612a19575080516020145b612a245760126128f3565b808060200190518101906128f391906142c7565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a7e9190614218565b5f60405180830381855afa9150503d805f8114612ab6576040519150601f19603f3d011682016040523d82523d5f602084013e612abb565b606091505b509150915081612ad95760405180602001604052805f8152506128f3565b6128f381612f6c565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a7e9190614218565b5f54610100900460ff16612b4e5760405162461bcd60e51b8152600401610ec7906142e2565b612b566130d9565b612b746001600160a01b03821615612b6e5781611f5c565b33611f5c565b5060c9805461ff001916610100179055565b5f54610100900460ff16612bac5760405162461bcd60e51b8152600401610ec7906142e2565b6001600160401b03461115612bd45760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c4a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130ff9092919063ffffffff16565b905080515f1480612c6a575080806020019051810190612c6a9190614233565b6119865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec7565b5f5f612cdd6033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612d1397966001600160a01b03169594939060240161432d565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d596c0627269646765645f657263323609c1b5f61142d565b81604051612d669061332c565b612d71929190614398565b604051809103905ff080158015612d8a573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612e0c90826143bb565b5060808201516002820190612e2190826143bb565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612ebd9391929190614475565b60405180910390a450919050565b5f6001600160a01b038516612ef357604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612f118161278c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5e83836040518060600160405280602781526020016149fb6027913961310d565b60606040825110612f8b578180602001905181019061075391906144ad565b81516020036130c6575f5b60208160ff16108015612fcb5750828160ff1681518110612fb957612fb96144de565b01602001516001600160f81b03191615155b15612fe25780612fda816144f2565b915050612f96565b5f8160ff166001600160401b03811115612ffe57612ffe6134be565b6040519080825280601f01601f191660200182016040528015613028576020820181803683370190505b5090505f91505b60208260ff161080156130645750838260ff1681518110613052576130526144de565b01602001516001600160f81b03191615155b15610f5e57838260ff168151811061307e5761307e6144de565b602001015160f81c60f81b818360ff168151811061309e5761309e6144de565b60200101906001600160f81b03191690815f1a905350816130be816144f2565b92505061302f565b505060408051602081019091525f815290565b5f54610100900460ff16610f775760405162461bcd60e51b8152600401610ec7906142e2565b6060610f5b84845f85613181565b60605f5f856001600160a01b0316856040516131299190614218565b5f60405180830381855af49150503d805f8114613161576040519150601f19603f3d011682016040523d82523d5f602084013e613166565b606091505b509150915061317786838387613258565b9695505050505050565b6060824710156131e25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec7565b5f5f866001600160a01b031685876040516131fd9190614218565b5f6040518083038185875af1925050503d805f8114613237576040519150601f19603f3d011682016040523d82523d5f602084013e61323c565b606091505b509150915061324d87838387613258565b979650505050505050565b606083156132c65782515f036132bf576001600160a01b0385163b6132bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec7565b50816128f3565b6128f383838151156132db5781518083602001fd5b8060405162461bcd60e51b8152600401610ec7919061429a565b50805461330190613abf565b5f825580601f10613310575050565b601f0160209004905f5260205f2090810190610f4c9190613339565b6104ca8061451183390190565b5b80821115611b04575f815560010161333a565b5f5f6040838503121561335e575f5ffd5b82356001600160401b03811115613373575f5ffd5b83016101608186031215613385575f5ffd5b946020939093013593505050565b5f602082840312156133a3575f5ffd5b81356001600160e01b031981168114610f5e575f5ffd5b6001600160a01b0381168114610f4c575f5ffd5b5f5f604083850312156133df575f5ffd5b8235915060208301356133f1816133ba565b809150509250929050565b5f6020828403121561340c575f5ffd5b8135610f5e816133ba565b5f5f60408385031215613428575f5ffd5b82356001600160401b0381111561343d575f5ffd5b830160a0818603121561344e575f5ffd5b915060208301356133f1816133ba565b6001600160401b0381168114610f4c575f5ffd5b8015158114610f4c575f5ffd5b5f5f5f60608486031215613491575f5ffd5b833561349c8161345e565b92506020840135915060408401356134b381613472565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134f4576134f46134be565b60405290565b60405161016081016001600160401b03811182821017156134f4576134f46134be565b604051601f8201601f191681016001600160401b0381118282101715613545576135456134be565b604052919050565b5f6001600160401b03821115613565576135656134be565b50601f01601f191660200190565b5f82601f830112613582575f5ffd5b8135602083015f61359a6135958461354d565b61351d565b90508281528583830111156135ad575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f604083850312156135d8575f5ffd5b82356135e3816133ba565b915060208301356001600160401b038111156135fd575f5ffd5b61360985828601613573565b9150509250929050565b5f5f60208385031215613624575f5ffd5b82356001600160401b03811115613639575f5ffd5b8301601f81018513613649575f5ffd5b80356001600160401b0381111561365e575f5ffd5b85602082840101111561366f575f5ffd5b6020919091019590945092505050565b5f5b83811015613699578181015183820152602001613681565b50505f910152565b5f81518084526136b881602086016020860161367f565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f90613707908301856136a1565b828103608084015261371981856136a1565b98975050505050505050565b5f5f60408385031215613736575f5ffd5b8235915060208301356133f181613472565b5f60e0828403128015613759575f5ffd5b509092915050565b6020815261377b6020820183516001600160401b03169052565b5f602083015161379660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128f36101808401826136a1565b5f5f60408385031215613862575f5ffd5b823561344e816133ba565b5f5f8335601e19843603018112613882575f5ffd5b8301803591506001600160401b0382111561389b575f5ffd5b6020019150368190038213156138af575f5ffd5b9250929050565b5f5f858511156138c4575f5ffd5b838611156138d0575f5ffd5b5050820193919092039150565b5f602082840312156138ed575f5ffd5b81356001600160401b03811115613902575f5ffd5b6128f384828501613573565b80516118778161345e565b8051611877816133ba565b60ff81168114610f4c575f5ffd5b805161187781613924565b5f82601f83011261394c575f5ffd5b8151602083015f61395f6135958461354d565b9050828152858383011115613972575f5ffd5b61398083602083018461367f565b95945050505050565b5f5f5f5f6080858703121561399c575f5ffd5b84516001600160401b038111156139b1575f5ffd5b850160a081880312156139c2575f5ffd5b6139ca6134d2565b81516139d58161345e565b815260208201516139e5816133ba565b60208201526139f660408301613932565b604082015260608201516001600160401b03811115613a13575f5ffd5b613a1f8982850161393d565b60608301525060808201516001600160401b03811115613a3d575f5ffd5b613a498982850161393d565b6080830152509450613a5f905060208601613919565b9250613a6d60408601613919565b6060959095015193969295505050565b5f60208284031215613a8d575f5ffd5b8135610f5e8161345e565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075357610753613a98565b600181811c90821680613ad357607f821691505b602082108103613af157634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613b3d60a08501826136a1565b905060808301518482036080860152611cda82826136a1565b602081525f610f5e6020830184613af7565b803561187781613924565b5f5f8335601e19843603018112613b88575f5ffd5b83016020810192503590506001600160401b03811115613ba6575f5ffd5b8036038213156138af575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613bec8161345e565b6001600160401b0381166020840152506020830135613c0a816133ba565b6001600160a01b0316604083810191909152830135613c2881613924565b60ff8116606084015250613c3f6060840184613b73565b60a06080850152613c5460c085018284613bb4565b915050613c646080850185613b73565b848303601f190160a0860152613177838284613bb4565b601f82111561198657805f5260205f20601f840160051c81016020851015613ca05750805b601f840160051c820191505b81811015613cbf575f8155600101613cac565b5050505050565b6001600160401b03831115613cdd57613cdd6134be565b613cf183613ceb8354613abf565b83613c7b565b5f601f841160018114613d22575f8515613d0b5750838201355b5f19600387901b1c1916600186901b178355613cbf565b5f83815260208120601f198716915b82811015613d515786850135825560209485019460019092019101613d31565b5086821015613d6d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d8a8161345e565b6001600160401b03811690508154816001600160401b031982161783556020840135613db5816133ba565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613dec81613924565b825460ff60e01b191660e09190911b60ff60e01b1617825550613e12606083018361386d565b613e20818360018601613cc6565b5050613e2f608083018361386d565b61284b818360028601613cc6565b5f60208284031215613e4d575f5ffd5b8135610f5e81613924565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e849083018789613bb4565b8281036060840152613e97818688613bb4565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611877816133ba565b5f5f5f5f60808587031215613f65575f5ffd5b84356001600160401b03811115613f7a575f5ffd5b850160a08188031215613f8b575f5ffd5b613f936134d2565b8135613f9e8161345e565b81526020820135613fae816133ba565b6020820152613fbf60408301613b68565b604082015260608201356001600160401b03811115613fdc575f5ffd5b613fe889828501613573565b60608301525060808201356001600160401b03811115614006575f5ffd5b61401289828501613573565b6080830152509450614028905060208601613f47565b925061403660408601613f47565b9396929550929360600135925050565b63ffffffff81168114610f4c575f5ffd5b5f60208284031215614067575f5ffd5b8135610f5e81614046565b8181038181111561075357610753613a98565b805161187781614046565b5f5f604083850312156140a1575f5ffd5b825160208401519092506001600160401b038111156140be575f5ffd5b830161016081860312156140d0575f5ffd5b6140d86134fa565b6140e18261390e565b81526140ef6020830161390e565b602082015261410060408301614085565b604082015261411160608301613919565b60608201526141226080830161390e565b608082015261413360a08301613919565b60a082015261414460c0830161390e565b60c082015261415560e08301613919565b60e08201526141676101008301613919565b61010082015261012082810151908201526101408201516001600160401b03811115614191575f5ffd5b61419d8782850161393d565b6101408301525080925050509250929050565b5f60608284031280156141c1575f5ffd5b50604051606081016001600160401b03811182821017156141e4576141e46134be565b6040528251815260208301516141f9816133ba565b6020820152604083015161420c8161345e565b60408201529392505050565b5f825161422981846020870161367f565b9190910192915050565b5f60208284031215614243575f5ffd5b8151610f5e81613472565b5f6020828403121561425e575f5ffd5b5051919050565b608081525f6142776080830187613af7565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5e60208301846136a1565b5f602082840312156142bc575f5ffd5b8151610f5e816133ba565b5f602082840312156142d7575f5ffd5b8151610f5e81613924565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f90614378908301856136a1565b82810360c084015261438a81856136a1565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f5b908301846136a1565b81516001600160401b038111156143d4576143d46134be565b6143e8816143e28454613abf565b84613c7b565b6020601f82116001811461441a575f83156144035750848201515b5f19600385901b1c1916600184901b178455613cbf565b5f84815260208120601f198516915b828110156144495787850151825560209485019460019092019101614429565b508482101561446657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61448760608301866136a1565b828103602084015261449981866136a1565b91505060ff83166040830152949350505050565b5f602082840312156144bd575f5ffd5b81516001600160401b038111156144d2575f5ffd5b6128f38482850161393d565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361450757614507613a98565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122058acbb96a8abe1df796510802d0bfe83f62a92f931b1e141173005bd2c5a903064736f6c634300081b0033", + "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610519578063f09a401614610536578063f2fde38b14610555575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc366004613350565b610574565b005b3480156101de575f5ffd5b506101f26101ed366004613396565b610702565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e6102213660046133d1565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133ff565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b536600461341a565b610752565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e60565b3480156102f1575f5ffd5b506101d16103003660046133ff565b610e78565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e366004613482565b610f48565b34801561034e575f5ffd5b506101d1610f5e565b6101d16103653660046135ca565b610f72565b348015610375575f5ffd5b5061023e611027565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b83660046133d1565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110d8565b3480156103fd575f5ffd5b506101d16110e9565b6101d1610414366004613616565b611160565b348015610424575f5ffd5b506101d16112b0565b348015610438575f5ffd5b506102ba6112c3565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133ff565b6112d1565b6040516101fe9594939291906136cf565b348015610499575f5ffd5b506102ba6104a8366004613728565b611426565b6104c06104bb36600461374b565b611432565b6040516101fe9190613764565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101fe565b348015610524575f5ffd5b506065546001600160a01b03166102ba565b348015610541575f5ffd5b506101d1610550366004613854565b611875565b348015610560575f5ffd5b506101d161056f3660046133ff565b611984565b61058860c954610100900460ff1660021490565b156105a65760405163bae6e2a960e01b815260040160405180910390fd5b60026105b460c95460ff1690565b60ff16036105d55760405163dfc60d8560e01b815260040160405180910390fd5b6105df60026119f5565b6105e7611a0b565b505f6105f7610140840184613870565b6106059160049082906138b9565b81019061061291906138e0565b90505f5f8280602001905181019061062a919061398c565b9350505091505f61064e838760a001602081019061064891906133ff565b84611b01565b905061067861012087013561066960c0890160a08a016133ff565b6001600160a01b031690611ba9565b61068860c0870160a088016133ff565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106e8939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050506106fe60016119f5565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073157506001600160e01b03198216637f07c94760e01b145b8061074c57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f61075b611bb4565b600261076960c95460ff1690565b60ff160361078a5760405163dfc60d8560e01b815260040160405180910390fd5b61079460026119f5565b6001600160a01b03821615806107ca57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107dd57506001600160a01b0382163b155b156107fb5760405163dc63f98760e01b815260040160405180910390fd5b5f61080c60408501602086016133ff565b6001600160a01b0316148061083557504661082a6020850185613a80565b6001600160401b0316145b1561085357604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff161561088d576040516375c42fc160e01b815260040160405180910390fd5b5f6101308161089f6020870187613a80565b6001600160401b031681526020019081526020015f205f8560200160208101906108c991906133ff565b6001600160a01b0316815260208101919091526040015f205490506108f16276a70082613aaf565b4210156109115760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109226020870187613a80565b6001600160401b031681526020019081526020015f205f85602001602081019061094c91906133ff565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb2576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109db90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0790613ac2565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b50505050508152602001600282018054610a6b90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9790613ac2565b8015610ae25780601f10610ab957610100808354040283529160200191610ae2565b820191905f5260205f20905b815481529060010190602001808311610ac557829003601f168201915b505050505081525050905080604051602001610afe9190613b59565b6040516020818303038152906040528051906020012085604051602001610b259190613bdf565b6040516020818303038152906040528051906020012014610b5957604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b8d60018301826132f8565b610b9a600283015f6132f8565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd09063b8f2e0c560e01b611c0e565b8015610bf15750610bf16001600160a01b03851663b8f2e0c560e01b611c0e565b15610cb05760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c3c575f5ffd5b505af1158015610c4e573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610c99575f5ffd5b505af1158015610cab573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cd68282613d82565b5083905061012e5f610ceb6020880188613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d1591906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d6e9190613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d9891906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dce91906133ff565b6001600160a01b0316610de46020860186613a80565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e1d60608a018a613870565b610e2a60808c018c613870565b610e3a60608e0160408f01613e40565b604051610e4d9796959493929190613e5b565b60405180910390a35061074c60016119f5565b5f6002610e6f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ec95760405162461bcd60e51b8152600401610ec090613eb2565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610efb611cde565b6001600160a01b031614610f215760405162461bcd60e51b8152600401610ec090613efe565b610f2a81611cf9565b604080515f80825260208201909252610f4591839190611d01565b50565b5f610f54848484611e6b565b90505b9392505050565b610f66611ec7565b610f70335f611f57565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fba5760405162461bcd60e51b8152600401610ec090613eb2565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610fec611cde565b6001600160a01b0316146110125760405162461bcd60e51b8152600401610ec090613efe565b61101b82611cf9565b6106fe82826001611d01565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110c65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b505f5160206149de5f395f51905f5290565b6110e0611bb4565b610f705f611f5f565b60655433906001600160a01b031681146111575760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec0565b610f4581611f5f565b61117460c954610100900460ff1660021490565b156111925760405163bae6e2a960e01b815260040160405180910390fd5b60026111a060c95460ff1690565b60ff16036111c15760405163dfc60d8560e01b815260040160405180910390fd5b6111cb60026119f5565b5f8080806111db85870187613f55565b93509350935093505f6111ec611f78565b90506111f783612097565b5f611203868585611b01565b90506112186001600160a01b03851634611ba9565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129894939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a45050505050506106fe60016119f5565b6112b86120d3565b610f70336001611f57565b5f6112cc611cde565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161131990613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461134590613ac2565b80156113905780601f1061136757610100808354040283529160200191611390565b820191905f5260205f20905b81548152906001019060200180831161137357829003601f168201915b5050505050908060020180546113a590613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190613ac2565b801561141c5780601f106113f35761010080835404028352916020019161141c565b820191905f5260205f20905b8154815290600101906020018083116113ff57829003601f168201915b5050505050905085565b5f610f57468484611e6b565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a060c954610100900460ff1660021490565b156114be5760405163bae6e2a960e01b815260040160405180910390fd5b60026114cc60c95460ff1690565b60ff16036114ed5760405163dfc60d8560e01b815260040160405180910390fd5b6114f760026119f5565b8160c001355f0361151b57604051634299323b60e11b815260040160405180910390fd5b5f61152c60a08401608085016133ff565b6001600160a01b031603611553576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156760a08501608086016133ff565b6001600160a01b0316815260208101919091526040015f205460ff16156115a1576040516375c42fc160e01b815260040160405180910390fd5b6115b16080830160608401613a80565b6001600160401b03163410156115da57604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115e685612144565b6040805161016081019091525f8082529396509194509250602081016116126080890160608a01613a80565b6001600160401b0316815260200161163060c0890160a08a0161405a565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166190890189613a80565b6001600160401b031681526020015f6001600160a01b031688602001602081019061168c91906133ff565b6001600160a01b0316036116a057336116b0565b6116b06040890160208a016133ff565b6001600160a01b031681526020908101906116e7906116d1908a018a613a80565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f48565b6001600160a01b031681526020016117056080890160608a01613a80565b611718906001600160401b031634614075565b815260200185905290505f6117366562726964676560d01b82611426565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016117629190613764565b5f6040518083038185885af115801561177d573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117a59190810190614093565b965090506117b960608801604089016133ff565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f0160208101906118089190613a80565b89602001518d608001602081019061182091906133ff565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187060016119f5565b919050565b5f54610100900460ff161580801561189357505f54600160ff909116105b806118ac5750303b1580156118ac57505f5460ff166001145b61190f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec0565b5f805460ff191660011790558015611930575f805461ff0019166101001790555b61193a83836125de565b801561197f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61198c611bb4565b606580546001600160a01b0383166001600160a01b031990911681179091556119bd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a3c816001611426565b6001600160a01b0316336001600160a01b031614611a6d57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611aa9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acd91906141b3565b60208101519092506001600160a01b03163314611afd57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3457506020830151611b2f6001600160a01b0382168484612618565b611b9f565b611b3d8461267b565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b88575f5ffd5b505af1158015611b9a573d5f5f3e3d5ffd5b505050505b610f5781836126bd565b6106fe82825a61274c565b6033546001600160a01b03163314610f705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec0565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611c6a919061421b565b5f60405180830381855afa9150503d805f8114611ca2576040519150601f19603f3d011682016040523d82523d5f602084013e611ca7565b606091505b5091509150818015611cba575080516020145b15611cd65780806020019051810190611cd39190614236565b92505b505092915050565b5f5160206149de5f395f51905f52546001600160a01b031690565b610f45611bb4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d345761197f8361278f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8e575060408051601f3d908101601f19168201909252611d8b91810190614251565b60015b611df15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec0565b5f5160206149de5f395f51905f528114611e5f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec0565b5061197f83838361282a565b5f611e768484612854565b90508180611e8c57506001600160a01b03811615155b84849091611ebe57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ec0565b50509392505050565b611edb60c954610100900460ff1660021490565b611ef85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106fe611bb4565b606580546001600160a01b0319169055610f45816128fe565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611fa9816001611426565b6001600160a01b0316336001600160a01b031614611fda57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203a91906141b3565b91505f61205a83604001516116e16a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461209257604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b03811615806120b557506001600160a01b03811630145b15610f4557604051635b50f3f960e01b815260040160405180910390fd5b6120e760c954610100900460ff1660021490565b156121055760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f4d565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161218660a08801608089016133ff565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156123bc576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161220690613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461223290613ac2565b801561227d5780601f106122545761010080835404028352916020019161227d565b820191905f5260205f20905b81548152906001019060200180831161226057829003601f168201915b5050505050815260200160028201805461229690613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290613ac2565b801561230d5780601f106122e45761010080835404028352916020019161230d565b820191905f5260205f20905b8154815290600101906020018083116122f057829003601f168201915b505050505081525050925061234633308760c0013588608001602081019061233591906133ff565b6001600160a01b031692919061294f565b61235660a08601608087016133ff565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b15801561239a575f5ffd5b505af11580156123ac573d5f5f3e3d5ffd5b505050508460c00135915061255e565b6040518060a00160405280466001600160401b031681526020018660800160208101906123e991906133ff565b6001600160a01b0316815260200161240f61240a60a0890160808a016133ff565b612987565b60ff16815260200161242f61242a60a0890160808a016133ff565b612a3b565b815260200161244c61244760a0890160808a016133ff565b612ae5565b905292505f61246160a08701608088016133ff565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156124a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cc9190614251565b90506124e76001600160a01b038316333060c08b013561294f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561252b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254f9190614251565b6125599190614075565b935050505b30637f07c947843361257660608a0160408b016133ff565b8660405160200161258a9493929190614268565b60408051601f19818403018152908290526125a79160240161429d565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166126065760405163538ba4f960e01b815260040160405180910390fd5b61260f83612b2b565b61197f82612b89565b6040516001600160a01b03831660248201526044810182905261197f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bf9565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118705761074c82612ccc565b5f6126d96c38bab7ba30afb6b0b730b3b2b960991b6001611426565b90506001600160a01b0381161561197f576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612731575f5ffd5b505af1158015612743573d5f5f3e3d5ffd5b50505050505050565b815f0361275857505050565b61277283838360405180602001604052805f815250612ece565b61197f57604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127fc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec0565b5f5160206149de5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61283383612f0b565b5f8251118061283f5750805b1561197f5761284e8383612f4a565b50505050565b6097545f906001600160a01b03168061288057604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156128d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f691906142af565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261284e9085906323b872dd60e01b90608401612644565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129cc919061421b565b5f60405180830381855afa9150503d805f8114612a04576040519150601f19603f3d011682016040523d82523d5f602084013e612a09565b606091505b5091509150818015612a1c575080516020145b612a275760126128f6565b808060200190518101906128f691906142ca565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f60405180830381855afa9150503d805f8114612ab9576040519150601f19603f3d011682016040523d82523d5f602084013e612abe565b606091505b509150915081612adc5760405180602001604052805f8152506128f6565b6128f681612f6f565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f54610100900460ff16612b515760405162461bcd60e51b8152600401610ec0906142e5565b612b596130dc565b612b776001600160a01b03821615612b715781611f5f565b33611f5f565b5060c9805461ff001916610100179055565b5f54610100900460ff16612baf5760405162461bcd60e51b8152600401610ec0906142e5565b6001600160401b03461115612bd75760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131029092919063ffffffff16565b905080515f1480612c6d575080806020019051810190612c6d9190614236565b61197f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec0565b5f5f612ce06033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612d1697966001600160a01b031695949390602401614330565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d5c6c0627269646765645f657263323609c1b5f611426565b81604051612d699061332f565b612d7492919061439b565b604051809103905ff080158015612d8d573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612e0f90826143be565b5060808201516002820190612e2490826143be565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612ec09391929190614478565b60405180910390a450919050565b5f6001600160a01b038516612ef657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612f148161278f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5783836040518060600160405280602781526020016149fe60279139613110565b60606040825110612f8e578180602001905181019061074c91906144b0565b81516020036130c9575f5b60208160ff16108015612fce5750828160ff1681518110612fbc57612fbc6144e1565b01602001516001600160f81b03191615155b15612fe55780612fdd816144f5565b915050612f99565b5f8160ff166001600160401b03811115613001576130016134c1565b6040519080825280601f01601f19166020018201604052801561302b576020820181803683370190505b5090505f91505b60208260ff161080156130675750838260ff1681518110613055576130556144e1565b01602001516001600160f81b03191615155b15610f5757838260ff1681518110613081576130816144e1565b602001015160f81c60f81b818360ff16815181106130a1576130a16144e1565b60200101906001600160f81b03191690815f1a905350816130c1816144f5565b925050613032565b505060408051602081019091525f815290565b5f54610100900460ff16610f705760405162461bcd60e51b8152600401610ec0906142e5565b6060610f5484845f85613184565b60605f5f856001600160a01b03168560405161312c919061421b565b5f60405180830381855af49150503d805f8114613164576040519150601f19603f3d011682016040523d82523d5f602084013e613169565b606091505b509150915061317a8683838761325b565b9695505050505050565b6060824710156131e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec0565b5f5f866001600160a01b03168587604051613200919061421b565b5f6040518083038185875af1925050503d805f811461323a576040519150601f19603f3d011682016040523d82523d5f602084013e61323f565b606091505b50915091506132508783838761325b565b979650505050505050565b606083156132c95782515f036132c2576001600160a01b0385163b6132c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec0565b50816128f6565b6128f683838151156132de5781518083602001fd5b8060405162461bcd60e51b8152600401610ec0919061429d565b50805461330490613ac2565b5f825580601f10613313575050565b601f0160209004905f5260205f2090810190610f45919061333c565b6104ca8061451483390190565b5b80821115611afd575f815560010161333d565b5f5f60408385031215613361575f5ffd5b82356001600160401b03811115613376575f5ffd5b83016101608186031215613388575f5ffd5b946020939093013593505050565b5f602082840312156133a6575f5ffd5b81356001600160e01b031981168114610f57575f5ffd5b6001600160a01b0381168114610f45575f5ffd5b5f5f604083850312156133e2575f5ffd5b8235915060208301356133f4816133bd565b809150509250929050565b5f6020828403121561340f575f5ffd5b8135610f57816133bd565b5f5f6040838503121561342b575f5ffd5b82356001600160401b03811115613440575f5ffd5b830160a08186031215613451575f5ffd5b915060208301356133f4816133bd565b6001600160401b0381168114610f45575f5ffd5b8015158114610f45575f5ffd5b5f5f5f60608486031215613494575f5ffd5b833561349f81613461565b92506020840135915060408401356134b681613475565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134f7576134f76134c1565b60405290565b60405161016081016001600160401b03811182821017156134f7576134f76134c1565b604051601f8201601f191681016001600160401b0381118282101715613548576135486134c1565b604052919050565b5f6001600160401b03821115613568576135686134c1565b50601f01601f191660200190565b5f82601f830112613585575f5ffd5b8135602083015f61359d61359884613550565b613520565b90508281528583830111156135b0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f604083850312156135db575f5ffd5b82356135e6816133bd565b915060208301356001600160401b03811115613600575f5ffd5b61360c85828601613576565b9150509250929050565b5f5f60208385031215613627575f5ffd5b82356001600160401b0381111561363c575f5ffd5b8301601f8101851361364c575f5ffd5b80356001600160401b03811115613661575f5ffd5b856020828401011115613672575f5ffd5b6020919091019590945092505050565b5f5b8381101561369c578181015183820152602001613684565b50505f910152565b5f81518084526136bb816020860160208601613682565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f9061370a908301856136a4565b828103608084015261371c81856136a4565b98975050505050505050565b5f5f60408385031215613739575f5ffd5b8235915060208301356133f481613475565b5f60e082840312801561375c575f5ffd5b509092915050565b6020815261377e6020820183516001600160401b03169052565b5f602083015161379960408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128f66101808401826136a4565b5f5f60408385031215613865575f5ffd5b8235613451816133bd565b5f5f8335601e19843603018112613885575f5ffd5b8301803591506001600160401b0382111561389e575f5ffd5b6020019150368190038213156138b2575f5ffd5b9250929050565b5f5f858511156138c7575f5ffd5b838611156138d3575f5ffd5b5050820193919092039150565b5f602082840312156138f0575f5ffd5b81356001600160401b03811115613905575f5ffd5b6128f684828501613576565b805161187081613461565b8051611870816133bd565b60ff81168114610f45575f5ffd5b805161187081613927565b5f82601f83011261394f575f5ffd5b8151602083015f61396261359884613550565b9050828152858383011115613975575f5ffd5b613983836020830184613682565b95945050505050565b5f5f5f5f6080858703121561399f575f5ffd5b84516001600160401b038111156139b4575f5ffd5b850160a081880312156139c5575f5ffd5b6139cd6134d5565b81516139d881613461565b815260208201516139e8816133bd565b60208201526139f960408301613935565b604082015260608201516001600160401b03811115613a16575f5ffd5b613a2289828501613940565b60608301525060808201516001600160401b03811115613a40575f5ffd5b613a4c89828501613940565b6080830152509450613a6290506020860161391c565b9250613a706040860161391c565b6060959095015193969295505050565b5f60208284031215613a90575f5ffd5b8135610f5781613461565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074c5761074c613a9b565b600181811c90821680613ad657607f821691505b602082108103613af457634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613b4060a08501826136a4565b905060808301518482036080860152611cd382826136a4565b602081525f610f576020830184613afa565b803561187081613927565b5f5f8335601e19843603018112613b8b575f5ffd5b83016020810192503590506001600160401b03811115613ba9575f5ffd5b8036038213156138b2575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613bef81613461565b6001600160401b0381166020840152506020830135613c0d816133bd565b6001600160a01b0316604083810191909152830135613c2b81613927565b60ff8116606084015250613c426060840184613b76565b60a06080850152613c5760c085018284613bb7565b915050613c676080850185613b76565b848303601f190160a086015261317a838284613bb7565b601f82111561197f57805f5260205f20601f840160051c81016020851015613ca35750805b601f840160051c820191505b81811015613cc2575f8155600101613caf565b5050505050565b6001600160401b03831115613ce057613ce06134c1565b613cf483613cee8354613ac2565b83613c7e565b5f601f841160018114613d25575f8515613d0e5750838201355b5f19600387901b1c1916600186901b178355613cc2565b5f83815260208120601f198716915b82811015613d545786850135825560209485019460019092019101613d34565b5086821015613d70575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d8d81613461565b6001600160401b03811690508154816001600160401b031982161783556020840135613db8816133bd565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613def81613927565b825460ff60e01b191660e09190911b60ff60e01b1617825550613e156060830183613870565b613e23818360018601613cc9565b5050613e326080830183613870565b61284e818360028601613cc9565b5f60208284031215613e50575f5ffd5b8135610f5781613927565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e879083018789613bb7565b8281036060840152613e9a818688613bb7565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611870816133bd565b5f5f5f5f60808587031215613f68575f5ffd5b84356001600160401b03811115613f7d575f5ffd5b850160a08188031215613f8e575f5ffd5b613f966134d5565b8135613fa181613461565b81526020820135613fb1816133bd565b6020820152613fc260408301613b6b565b604082015260608201356001600160401b03811115613fdf575f5ffd5b613feb89828501613576565b60608301525060808201356001600160401b03811115614009575f5ffd5b61401589828501613576565b608083015250945061402b905060208601613f4a565b925061403960408601613f4a565b9396929550929360600135925050565b63ffffffff81168114610f45575f5ffd5b5f6020828403121561406a575f5ffd5b8135610f5781614049565b8181038181111561074c5761074c613a9b565b805161187081614049565b5f5f604083850312156140a4575f5ffd5b825160208401519092506001600160401b038111156140c1575f5ffd5b830161016081860312156140d3575f5ffd5b6140db6134fd565b6140e482613911565b81526140f260208301613911565b602082015261410360408301614088565b60408201526141146060830161391c565b606082015261412560808301613911565b608082015261413660a0830161391c565b60a082015261414760c08301613911565b60c082015261415860e0830161391c565b60e082015261416a610100830161391c565b61010082015261012082810151908201526101408201516001600160401b03811115614194575f5ffd5b6141a087828501613940565b6101408301525080925050509250929050565b5f60608284031280156141c4575f5ffd5b50604051606081016001600160401b03811182821017156141e7576141e76134c1565b6040528251815260208301516141fc816133bd565b6020820152604083015161420f81613461565b60408201529392505050565b5f825161422c818460208701613682565b9190910192915050565b5f60208284031215614246575f5ffd5b8151610f5781613475565b5f60208284031215614261575f5ffd5b5051919050565b608081525f61427a6080830187613afa565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5760208301846136a4565b5f602082840312156142bf575f5ffd5b8151610f57816133bd565b5f602082840312156142da575f5ffd5b8151610f5781613927565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f9061437b908301856136a4565b82810360c084015261438d81856136a4565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f54908301846136a4565b81516001600160401b038111156143d7576143d76134c1565b6143eb816143e58454613ac2565b84613c7e565b6020601f82116001811461441d575f83156144065750848201515b5f19600385901b1c1916600184901b178455613cc2565b5f84815260208120601f198516915b8281101561444c578785015182556020948501946001909201910161442c565b508482101561446957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61448a60608301866136a4565b828103602084015261449c81866136a4565b91505060ff83166040830152949350505050565b5f602082840312156144c0575f5ffd5b81516001600160401b038111156144d5575f5ffd5b6128f684828501613940565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361450a5761450a613a9b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122081cb565f479e4a5edf2c2fd18d805122a8190cec8f0969065a9660e524c17c9964736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000002": { @@ -183,7 +183,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000002" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000000003": { @@ -191,7 +191,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c397814610486578063f09a4016146104a3578063f2fde38b146104c2575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d36600461292d565b6104e1565b005b34801561019f575f5ffd5b506101b36101ae366004612973565b610694565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d3660046129fd565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a6a565b6106e4565b6040516101bf9190612aee565b348015610262575f5ffd5b506101b3610b6a565b348015610276575f5ffd5b50610192610285366004612bde565b610b82565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612c25565b610c52565b3480156102eb575f5ffd5b50610192610c68565b610192610302366004612d90565b610c7c565b348015610312575f5ffd5b506101e5610d31565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612ddc565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610de2565b34801561039a575f5ffd5b50610192610df3565b6101926103b1366004612e0a565b610e6a565b3480156103c1575f5ffd5b50610192610fd3565b3480156103d5575f5ffd5b506102a9610fe6565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612bde565b610ff4565b6040516101bf9493929190612e48565b348015610435575f5ffd5b506102a9610444366004612e97565b61113f565b348015610454575f5ffd5b5060c95461046e906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bf565b348015610491575f5ffd5b506065546001600160a01b03166102a9565b3480156104ae575f5ffd5b506101926104bd366004612eba565b61114b565b3480156104cd575f5ffd5b506101926104dc366004612bde565b61125a565b6104f560c954610100900460ff1660021490565b156105135760405163bae6e2a960e01b815260040160405180910390fd5b600261052160c95460ff1690565b60ff16036105425760405163dfc60d8560e01b815260040160405180910390fd5b61054c60026112cb565b6105546112e1565b505f610564610140840184612ee6565b610572916004908290612f28565b81019061057f9190612f4f565b90505f5f828060200190518101906105979190613069565b9350505091505f6105bb838760a00160208101906105b59190612bde565b846113d7565b90506105e56101208701356105d660c0890160a08a01612bde565b6001600160a01b03169061154e565b6105f560c0870160a08801612bde565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561064057610640612c64565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b5060405161067a94939291906131a8565b60405180910390a35050505061069060016112cb565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106c357506001600160e01b03198216637f07c94760e01b145b806106de57506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261075260c954610100900460ff1660021490565b156107705760405163bae6e2a960e01b815260040160405180910390fd5b6107798261325c565b8060e00151518160c0015151146107a35760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107ce576040516303f8a7d360e01b815260040160405180910390fd5b60026107dc60c95460ff1690565b60ff16036107fd5760405163dfc60d8560e01b815260040160405180910390fd5b61080760026112cb565b610817608084016060850161332f565b6001600160401b031634101561084057604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084f60c085018561334a565b90508110156108a35761086560e085018561334a565b828181106108755761087561338f565b905060200201355f1461089b57604051634299323b60e11b815260040160405180910390fd5b600101610842565b506108ce6380ac58cd60e01b6108bf60a0860160808701612bde565b6001600160a01b031690611559565b6108eb57604051633ee915f560e11b815260040160405180910390fd5b5f5f6108f685611629565b6040805161016081019091525f808252929450909250602081016109206080890160608a0161332f565b6001600160401b0316815260200161093e60c0890160a08a016133a3565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096f9089018961332f565b6001600160401b031681526020015f6001600160a01b031688602001602081019061099a9190612bde565b6001600160a01b0316036109ae57336109be565b6109be6040890160208a01612bde565b6001600160a01b031681526020908101906109f6906109df908a018a61332f565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c52565b6001600160a01b03168152602001610a146080890160608a0161332f565b610a27906001600160401b0316346133d2565b815260200184905290505f610a456562726964676560d01b8261113f565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a719190612aee565b5f6040518083038185885af1158015610a8c573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610ab491908101906133f0565b96509050610ac86060880160408901612bde565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b1e9190612bde565b610b2b60c08f018f61334a565b8f8060e00190610b3b919061334a565b604051610b4e9796959493929190613540565b60405180910390a450505050610b6460016112cb565b50919050565b5f6002610b7960c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610bd35760405162461bcd60e51b8152600401610bca9061359c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610c05611b0b565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca906135e8565b610c3481611b26565b604080515f80825260208201909252610c4f91839190611b2e565b50565b5f610c5e848484611c98565b90505b9392505050565b610c70611cea565b610c7a335f611d7a565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610cc45760405162461bcd60e51b8152600401610bca9061359c565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cf6611b0b565b6001600160a01b031614610d1c5760405162461bcd60e51b8152600401610bca906135e8565b610d2582611b26565b61069082826001611b2e565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610dd05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bca565b505f51602061403c5f395f51905f5290565b610dea611d7e565b610c7a5f611dd8565b60655433906001600160a01b03168114610e615760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bca565b610c4f81611dd8565b610e7e60c954610100900460ff1660021490565b15610e9c5760405163bae6e2a960e01b815260040160405180910390fd5b6002610eaa60c95460ff1690565b60ff1603610ecb5760405163dfc60d8560e01b815260040160405180910390fd5b610ed560026112cb565b5f808080610ee585870187613634565b93509350935093505f610ef6611df1565b9050610f0183611f11565b5f610f0d8685856113d7565b9050610f226001600160a01b0385163461154e565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f8057610f80612c64565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50604051610fbb95949392919061372d565b60405180910390a450505050505061069060016112cb565b610fdb611f4d565b610c7a336001611d7a565b5f610fef611b0b565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061103290613785565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90613785565b80156110a95780601f10611080576101008083540402835291602001916110a9565b820191905f5260205f20905b81548152906001019060200180831161108c57829003601f168201915b5050505050908060020180546110be90613785565b80601f01602080910402602001604051908101604052809291908181526020018280546110ea90613785565b80156111355780601f1061110c57610100808354040283529160200191611135565b820191905f5260205f20905b81548152906001019060200180831161111857829003601f168201915b5050505050905084565b5f610c61468484611c98565b5f54610100900460ff161580801561116957505f54600160ff909116105b806111825750303b15801561118257505f5460ff166001145b6111e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b5f805460ff191660011790558015611206575f805461ff0019166101001790555b6112108383611fbe565b8015611255575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611262611d7e565b606580546001600160a01b0383166001600160a01b031990911681179091556112936033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61131281600161113f565b6001600160a01b0316336001600160a01b03161461134357604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561137f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a391906137b7565b60208101519092506001600160a01b031633146113d357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b03160361149d575060208301515f5b825181101561149757816001600160a01b03166342842e0e308686858151811061141f5761141f61338f565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b505050508060010190506113f3565b50610c61565b6114a684611ff8565b90505f5b825181101561154657816001600160a01b03166340c10f19858584815181106114d5576114d561338f565b60200260200101516040518363ffffffff1660e01b815260040161150e9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015611525575f5ffd5b505af1158015611537573d5f5f3e3d5ffd5b505050508060010190506114aa565b509392505050565b61069082825a61203f565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115b5919061381f565b5f60405180830381855afa9150503d805f81146115ed576040519150601f19603f3d011682016040523d82523d5f602084013e6115f2565b606091505b5091509150818015611605575080516020145b15611621578080602001905181019061161e919061383a565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161165f60a0870160808801612bde565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611940576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116d090613785565b80601f01602080910402602001604051908101604052809291908181526020018280546116fc90613785565b80156117475780601f1061171e57610100808354040283529160200191611747565b820191905f5260205f20905b81548152906001019060200180831161172a57829003601f168201915b5050505050815260200160028201805461176090613785565b80601f016020809104026020016040519081016040528092919081815260200182805461178c90613785565b80156117d75780601f106117ae576101008083540402835291602001916117d7565b820191905f5260205f20905b8154815290600101906020018083116117ba57829003601f168201915b50505050508152505091505f5b6117f160c086018661334a565b905081101561193a5761180a60a0860160808701612bde565b6001600160a01b03166342842e0e333061182760c08a018a61334a565b868181106118375761183761338f565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b15801561188b575f5ffd5b505af115801561189d573d5f5f3e3d5ffd5b506118b29250505060a0860160808701612bde565b6001600160a01b03166342966c686118cd60c088018861334a565b848181106118dd576118dd61338f565b905060200201356040518263ffffffff1660e01b815260040161190291815260200190565b5f604051808303815f87803b158015611919575f5ffd5b505af115801561192b573d5f5f3e3d5ffd5b505050508060010190506117e4565b50611a80565b6040518060800160405280466001600160401b0316815260200185608001602081019061196d9190612bde565b6001600160a01b0316815260200161199361198e60a0880160808901612bde565b612082565b81526020016119b06119ab60a0880160808901612bde565b612134565b905291505f5b6119c360c086018661334a565b9050811015611a7e576119dc60a0860160808701612bde565b6001600160a01b03166342842e0e33306119f960c08a018a61334a565b86818110611a0957611a0961338f565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a5d575f5ffd5b505af1158015611a6f573d5f5f3e3d5ffd5b505050508060010190506119b6565b505b5030637f07c9478233611a996060880160408901612bde565b611aa660c089018961334a565b604051602001611aba959493929190613855565b60408051601f1981840301815290829052611ad7916024016138e6565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061403c5f395f51905f52546001600160a01b031690565b610c4f611d7e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b61576112558361217a565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bbb575060408051601f3d908101601f19168201909252611bb8918101906138f8565b60015b611c1e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b5f51602061403c5f395f51905f528114611c8c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b50611255838383612215565b5f611ca3848461223f565b905081158015611cba57506001600160a01b038116155b15610c6157604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610bca565b611cfe60c954610100900460ff1660021490565b611d1b5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106905b6033546001600160a01b03163314610c7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bca565b606580546001600160a01b0319169055610c4f816122e1565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e2281600161113f565b6001600160a01b0316336001600160a01b031614611e5357604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb391906137b7565b91505f611ed483604001516109f06b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611f0c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f2f57506001600160a01b03811630145b15610c4f57604051635b50f3f960e01b815260040160405180910390fd5b611f6160c954610100900460ff1660021490565b15611f7f5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d70565b806001600160a01b038116611fe65760405163538ba4f960e01b815260040160405180910390fd5b611fef83612332565b61125582612390565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061203a576106de82612400565b919050565b815f0361204b57505050565b61206583838360405180602001604052805f8152506125db565b61125557604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120c8919061381f565b5f60405180830381855afa9150503d805f8114612100576040519150601f19603f3d011682016040523d82523d5f602084013e612105565b606091505b5091509150816121235760405180602001604052805f81525061212c565b61212c81612618565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120c8919061381f565b6001600160a01b0381163b6121e75760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b5f51602061403c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61221e83612785565b5f8251118061222a5750805b156112555761223983836127c4565b50505050565b6097545f906001600160a01b03168061226b57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156122bd573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212c919061390f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123585760405162461bcd60e51b8152600401610bca9061392a565b6123606127e9565b61237e6001600160a01b038216156123785781611dd8565b33611dd8565b5060c9805461ff001916610100179055565b5f54610100900460ff166123b65760405162461bcd60e51b8152600401610bca9061392a565b6001600160401b034611156123de5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6124146033546001600160a01b031690565b609754602085015185516040808801516060890151915161244596956001600160a01b031694939290602401613975565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061248c6d627269646765645f65726337323160901b5f61113f565b8160405161249990612920565b6124a49291906139d6565b604051809103905ff0801580156124bd573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906125219082613a44565b50606082015160028201906125369082613a44565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125cd9290613afe565b60405180910390a450919050565b5f6001600160a01b03851661260357604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061263757818060200190518101906106de9190613b22565b8151602003612772575f5b60208160ff161080156126775750828160ff16815181106126655761266561338f565b01602001516001600160f81b03191615155b1561268e578061268681613b53565b915050612642565b5f8160ff166001600160401b038111156126aa576126aa612c64565b6040519080825280601f01601f1916602001820160405280156126d4576020820181803683370190505b5090505f91505b60208260ff161080156127105750838260ff16815181106126fe576126fe61338f565b01602001516001600160f81b03191615155b15610c6157838260ff168151811061272a5761272a61338f565b602001015160f81c60f81b818360ff168151811061274a5761274a61338f565b60200101906001600160f81b03191690815f1a9053508161276a81613b53565b9250506126db565b505060408051602081019091525f815290565b61278e8161217a565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c61838360405180606001604052806027815260200161405c6027913961280f565b5f54610100900460ff16610c7a5760405162461bcd60e51b8152600401610bca9061392a565b60605f5f856001600160a01b03168560405161282b919061381f565b5f60405180830381855af49150503d805f8114612863576040519150601f19603f3d011682016040523d82523d5f602084013e612868565b606091505b509150915061287986838387612883565b9695505050505050565b606083156128f15782515f036128ea576001600160a01b0385163b6128ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bca565b508161212c565b61212c83838151156129065781518083602001fd5b8060405162461bcd60e51b8152600401610bca91906138e6565b6104ca80613b7283390190565b5f5f6040838503121561293e575f5ffd5b82356001600160401b03811115612953575f5ffd5b83016101608186031215612965575f5ffd5b946020939093013593505050565b5f60208284031215612983575f5ffd5b81356001600160e01b031981168114610c61575f5ffd5b6001600160a01b0381168114610c4f575f5ffd5b803561203a8161299a565b5f5f83601f8401126129c9575f5ffd5b5081356001600160401b038111156129df575f5ffd5b6020830191508360208285010111156129f6575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612a11575f5ffd5b8535612a1c8161299a565b94506020860135612a2c8161299a565b93506040860135925060608601356001600160401b03811115612a4d575f5ffd5b612a59888289016129b9565b969995985093965092949392505050565b5f60208284031215612a7a575f5ffd5b81356001600160401b03811115612a8f575f5ffd5b82016101008185031215610c61575f5ffd5b5f5b83811015612abb578181015183820152602001612aa3565b50505f910152565b5f8151808452612ada816020860160208601612aa1565b601f01601f19169290920160200192915050565b60208152612b086020820183516001600160401b03169052565b5f6020830151612b2360408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261212c610180840182612ac3565b5f60208284031215612bee575f5ffd5b8135610c618161299a565b6001600160401b0381168114610c4f575f5ffd5b803561203a81612bf9565b8015158114610c4f575f5ffd5b5f5f5f60608486031215612c37575f5ffd5b8335612c4281612bf9565b9250602084013591506040840135612c5981612c18565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c9a57612c9a612c64565b60405290565b60405161010081016001600160401b0381118282101715612c9a57612c9a612c64565b60405161016081016001600160401b0381118282101715612c9a57612c9a612c64565b604051601f8201601f191681016001600160401b0381118282101715612d0e57612d0e612c64565b604052919050565b5f6001600160401b03821115612d2e57612d2e612c64565b50601f01601f191660200190565b5f82601f830112612d4b575f5ffd5b8135602083015f612d63612d5e84612d16565b612ce6565b9050828152858383011115612d76575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612da1575f5ffd5b8235612dac8161299a565b915060208301356001600160401b03811115612dc6575f5ffd5b612dd285828601612d3c565b9150509250929050565b5f5f60408385031215612ded575f5ffd5b823591506020830135612dff8161299a565b809150509250929050565b5f5f60208385031215612e1b575f5ffd5b82356001600160401b03811115612e30575f5ffd5b612e3c858286016129b9565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e7a90830185612ac3565b8281036060840152612e8c8185612ac3565b979650505050505050565b5f5f60408385031215612ea8575f5ffd5b823591506020830135612dff81612c18565b5f5f60408385031215612ecb575f5ffd5b8235612ed68161299a565b91506020830135612dff8161299a565b5f5f8335601e19843603018112612efb575f5ffd5b8301803591506001600160401b03821115612f14575f5ffd5b6020019150368190038213156129f6575f5ffd5b5f5f85851115612f36575f5ffd5b83861115612f42575f5ffd5b5050820193919092039150565b5f60208284031215612f5f575f5ffd5b81356001600160401b03811115612f74575f5ffd5b61212c84828501612d3c565b805161203a81612bf9565b805161203a8161299a565b5f82601f830112612fa5575f5ffd5b8151602083015f612fb8612d5e84612d16565b9050828152858383011115612fcb575f5ffd5b612fd9836020830184612aa1565b95945050505050565b5f6001600160401b03821115612ffa57612ffa612c64565b5060051b60200190565b5f82601f830112613013575f5ffd5b8151613021612d5e82612fe2565b8082825260208201915060208360051b860101925085831115613042575f5ffd5b602085015b8381101561305f578051835260209283019201613047565b5095945050505050565b5f5f5f5f6080858703121561307c575f5ffd5b84516001600160401b03811115613091575f5ffd5b8501608081880312156130a2575f5ffd5b6130aa612c78565b81516130b581612bf9565b815260208201516130c58161299a565b602082015260408201516001600160401b038111156130e2575f5ffd5b6130ee89828501612f96565b60408301525060608201516001600160401b0381111561310c575f5ffd5b61311889828501612f96565b606083015250945061312e905060208601612f8b565b925061313c60408601612f8b565b915060608501516001600160401b03811115613156575f5ffd5b61316287828801613004565b91505092959194509250565b5f8151808452602084019350602083015f5b8281101561319e578151865260209586019590910190600101613180565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131d39083018561316e565b8281036060840152612e8c818561316e565b63ffffffff81168114610c4f575f5ffd5b803561203a816131e5565b5f82601f830112613210575f5ffd5b813561321e612d5e82612fe2565b8082825260208201915060208360051b86010192508583111561323f575f5ffd5b602085015b8381101561305f578035835260209283019201613244565b5f610100823603121561326d575f5ffd5b613275612ca0565b61327e83612c0d565b815261328c602084016129ae565b602082015261329d604084016129ae565b60408201526132ae60608401612c0d565b60608201526132bf608084016129ae565b60808201526132d060a084016131f6565b60a082015260c08301356001600160401b038111156132ed575f5ffd5b6132f936828601613201565b60c08301525060e08301356001600160401b03811115613317575f5ffd5b61332336828601613201565b60e08301525092915050565b5f6020828403121561333f575f5ffd5b8135610c6181612bf9565b5f5f8335601e1984360301811261335f575f5ffd5b8301803591506001600160401b03821115613378575f5ffd5b6020019150600581901b36038213156129f6575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133b3575f5ffd5b8135610c61816131e5565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106de576106de6133be565b805161203a816131e5565b5f5f60408385031215613401575f5ffd5b825160208401519092506001600160401b0381111561341e575f5ffd5b83016101608186031215613430575f5ffd5b613438612cc3565b61344182612f80565b815261344f60208301612f80565b6020820152613460604083016133e5565b604082015261347160608301612f8b565b606082015261348260808301612f80565b608082015261349360a08301612f8b565b60a08201526134a460c08301612f80565b60c08201526134b560e08301612f8b565b60e08201526134c76101008301612f8b565b61010082015261012082810151908201526101408201516001600160401b038111156134f1575f5ffd5b6134fd87828501612f96565b6101408301525080925050509250929050565b8183525f6001600160fb1b03831115613527575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061357b9083018688613510565b828103608084015261358e818587613510565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f60808587031215613647575f5ffd5b84356001600160401b0381111561365c575f5ffd5b85016080818803121561366d575f5ffd5b613675612c78565b813561368081612bf9565b815260208201356136908161299a565b602082015260408201356001600160401b038111156136ad575f5ffd5b6136b989828501612d3c565b60408301525060608201356001600160401b038111156136d7575f5ffd5b6136e389828501612d3c565b60608301525094506136f99050602086016129ae565b9250613707604086016129ae565b915060608501356001600160401b03811115613721575f5ffd5b61316287828801613201565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137679083018561316e565b8281036080840152613779818561316e565b98975050505050505050565b600181811c9082168061379957607f821691505b602082108103610b6457634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156137c8575f5ffd5b50604051606081016001600160401b03811182821017156137eb576137eb612c64565b6040528251815260208301516138008161299a565b6020820152604083015161381381612bf9565b60408201529392505050565b5f8251613830818460208701612aa1565b9190910192915050565b5f6020828403121561384a575f5ffd5b8151610c6181612c18565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613896610100840182612ac3565b90506060880151607f198483030160e08501526138b38282612ac3565b6001600160a01b0389811660208701528816604086015291506138d39050565b8281036060840152613779818587613510565b602081525f610c616020830184612ac3565b5f60208284031215613908575f5ffd5b5051919050565b5f6020828403121561391f575f5ffd5b8151610c618161299a565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f906139b790830185612ac3565b82810360a08401526139c98185612ac3565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5e90830184612ac3565b601f82111561125557805f5260205f20601f840160051c81016020851015613a1e5750805b601f840160051c820191505b81811015613a3d575f8155600101613a2a565b5050505050565b81516001600160401b03811115613a5d57613a5d612c64565b613a7181613a6b8454613785565b846139f9565b6020601f821160018114613aa3575f8315613a8c5750848201515b5f19600385901b1c1916600184901b178455613a3d565b5f84815260208120601f198516915b82811015613ad25787850151825560209485019460019092019101613ab2565b5084821015613aef57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613b106040830185612ac3565b8281036020840152612fd98185612ac3565b5f60208284031215613b32575f5ffd5b81516001600160401b03811115613b47575f5ffd5b61212c84828501612f96565b5f60ff821660ff8103613b6857613b686133be565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204c36bdee2f39cc8dad6ae05d95311f0a4e6564c45ca8f9500387ad79cc4ea91464736f6c634300081b0033", + "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c39781461047f578063f09a40161461049c578063f2fde38b146104bb575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d366004612930565b6104da565b005b34801561019f575f5ffd5b506101b36101ae366004612976565b61068d565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d366004612a00565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a6d565b6106dd565b6040516101bf9190612af1565b348015610262575f5ffd5b506101b3610b63565b348015610276575f5ffd5b50610192610285366004612be1565b610b7b565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612c28565b610c4b565b3480156102eb575f5ffd5b50610192610c61565b610192610302366004612d93565b610c75565b348015610312575f5ffd5b506101e5610d2a565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612ddf565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610ddb565b34801561039a575f5ffd5b50610192610dec565b6101926103b1366004612e0d565b610e63565b3480156103c1575f5ffd5b50610192610fcc565b3480156103d5575f5ffd5b506102a9610fdf565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612be1565b610fed565b6040516101bf9493929190612e4b565b348015610435575f5ffd5b506102a9610444366004612e9a565b611138565b348015610454575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bf565b34801561048a575f5ffd5b506065546001600160a01b03166102a9565b3480156104a7575f5ffd5b506101926104b6366004612ebd565b611144565b3480156104c6575f5ffd5b506101926104d5366004612be1565b611253565b6104ee60c954610100900460ff1660021490565b1561050c5760405163bae6e2a960e01b815260040160405180910390fd5b600261051a60c95460ff1690565b60ff160361053b5760405163dfc60d8560e01b815260040160405180910390fd5b61054560026112c4565b61054d6112da565b505f61055d610140840184612ee9565b61056b916004908290612f2b565b8101906105789190612f52565b90505f5f82806020019051810190610590919061306c565b9350505091505f6105b4838760a00160208101906105ae9190612be1565b846113d0565b90506105de6101208701356105cf60c0890160a08a01612be1565b6001600160a01b031690611547565b6105ee60c0870160a08801612be1565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561063957610639612c67565b604051908082528060200260200182016040528015610662578160200160208202803683370190505b5060405161067394939291906131ab565b60405180910390a35050505061068960016112c4565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106bc57506001600160e01b03198216637f07c94760e01b145b806106d757506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261074b60c954610100900460ff1660021490565b156107695760405163bae6e2a960e01b815260040160405180910390fd5b6107728261325f565b8060e00151518160c00151511461079c5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107c7576040516303f8a7d360e01b815260040160405180910390fd5b60026107d560c95460ff1690565b60ff16036107f65760405163dfc60d8560e01b815260040160405180910390fd5b61080060026112c4565b6108106080840160608501613332565b6001600160401b031634101561083957604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084860c085018561334d565b905081101561089c5761085e60e085018561334d565b8281811061086e5761086e613392565b905060200201355f1461089457604051634299323b60e11b815260040160405180910390fd5b60010161083b565b506108c76380ac58cd60e01b6108b860a0860160808701612be1565b6001600160a01b031690611552565b6108e457604051633ee915f560e11b815260040160405180910390fd5b5f5f6108ef85611622565b6040805161016081019091525f808252929450909250602081016109196080890160608a01613332565b6001600160401b0316815260200161093760c0890160a08a016133a6565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096890890189613332565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109939190612be1565b6001600160a01b0316036109a757336109b7565b6109b76040890160208a01612be1565b6001600160a01b031681526020908101906109ef906109d8908a018a613332565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c4b565b6001600160a01b03168152602001610a0d6080890160608a01613332565b610a20906001600160401b0316346133d5565b815260200184905290505f610a3e6562726964676560d01b82611138565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a6a9190612af1565b5f6040518083038185885af1158015610a85573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610aad91908101906133f3565b96509050610ac16060880160408901612be1565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b179190612be1565b610b2460c08f018f61334d565b8f8060e00190610b34919061334d565b604051610b479796959493929190613543565b60405180910390a450505050610b5d60016112c4565b50919050565b5f6002610b7260c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610bcc5760405162461bcd60e51b8152600401610bc39061359f565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610bfe611b04565b6001600160a01b031614610c245760405162461bcd60e51b8152600401610bc3906135eb565b610c2d81611b1f565b604080515f80825260208201909252610c4891839190611b27565b50565b5f610c57848484611c91565b90505b9392505050565b610c69611ced565b610c73335f611d7d565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610cbd5760405162461bcd60e51b8152600401610bc39061359f565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cef611b04565b6001600160a01b031614610d155760405162461bcd60e51b8152600401610bc3906135eb565b610d1e82611b1f565b61068982826001611b27565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610dc95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bc3565b505f51602061403f5f395f51905f5290565b610de3611d81565b610c735f611ddb565b60655433906001600160a01b03168114610e5a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bc3565b610c4881611ddb565b610e7760c954610100900460ff1660021490565b15610e955760405163bae6e2a960e01b815260040160405180910390fd5b6002610ea360c95460ff1690565b60ff1603610ec45760405163dfc60d8560e01b815260040160405180910390fd5b610ece60026112c4565b5f808080610ede85870187613637565b93509350935093505f610eef611df4565b9050610efa83611f14565b5f610f068685856113d0565b9050610f1b6001600160a01b03851634611547565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f7957610f79612c67565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b50604051610fb4959493929190613730565b60405180910390a450505050505061068960016112c4565b610fd4611f50565b610c73336001611d7d565b5f610fe8611b04565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061102b90613788565b80601f016020809104026020016040519081016040528092919081815260200182805461105790613788565b80156110a25780601f10611079576101008083540402835291602001916110a2565b820191905f5260205f20905b81548152906001019060200180831161108557829003601f168201915b5050505050908060020180546110b790613788565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613788565b801561112e5780601f106111055761010080835404028352916020019161112e565b820191905f5260205f20905b81548152906001019060200180831161111157829003601f168201915b5050505050905084565b5f610c5a468484611c91565b5f54610100900460ff161580801561116257505f54600160ff909116105b8061117b5750303b15801561117b57505f5460ff166001145b6111de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bc3565b5f805460ff1916600117905580156111ff575f805461ff0019166101001790555b6112098383611fc1565b801561124e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61125b611d81565b606580546001600160a01b0383166001600160a01b0319909116811790915561128c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61130b816001611138565b6001600160a01b0316336001600160a01b03161461133c57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611378573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906137ba565b60208101519092506001600160a01b031633146113cc57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611496575060208301515f5b825181101561149057816001600160a01b03166342842e0e308686858151811061141857611418613392565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b15801561146f575f5ffd5b505af1158015611481573d5f5f3e3d5ffd5b505050508060010190506113ec565b50610c5a565b61149f84611ffb565b90505f5b825181101561153f57816001600160a01b03166340c10f19858584815181106114ce576114ce613392565b60200260200101516040518363ffffffff1660e01b81526004016115079291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561151e575f5ffd5b505af1158015611530573d5f5f3e3d5ffd5b505050508060010190506114a3565b509392505050565b61068982825a612042565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115ae9190613822565b5f60405180830381855afa9150503d805f81146115e6576040519150601f19603f3d011682016040523d82523d5f602084013e6115eb565b606091505b50915091508180156115fe575080516020145b1561161a5780806020019051810190611617919061383d565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161165860a0870160808801612be1565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611939576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546116f590613788565b80156117405780601f1061171757610100808354040283529160200191611740565b820191905f5260205f20905b81548152906001019060200180831161172357829003601f168201915b5050505050815260200160028201805461175990613788565b80601f016020809104026020016040519081016040528092919081815260200182805461178590613788565b80156117d05780601f106117a7576101008083540402835291602001916117d0565b820191905f5260205f20905b8154815290600101906020018083116117b357829003601f168201915b50505050508152505091505f5b6117ea60c086018661334d565b90508110156119335761180360a0860160808701612be1565b6001600160a01b03166342842e0e333061182060c08a018a61334d565b8681811061183057611830613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611884575f5ffd5b505af1158015611896573d5f5f3e3d5ffd5b506118ab9250505060a0860160808701612be1565b6001600160a01b03166342966c686118c660c088018861334d565b848181106118d6576118d6613392565b905060200201356040518263ffffffff1660e01b81526004016118fb91815260200190565b5f604051808303815f87803b158015611912575f5ffd5b505af1158015611924573d5f5f3e3d5ffd5b505050508060010190506117dd565b50611a79565b6040518060800160405280466001600160401b031681526020018560800160208101906119669190612be1565b6001600160a01b0316815260200161198c61198760a0880160808901612be1565b612085565b81526020016119a96119a460a0880160808901612be1565b612137565b905291505f5b6119bc60c086018661334d565b9050811015611a77576119d560a0860160808701612be1565b6001600160a01b03166342842e0e33306119f260c08a018a61334d565b86818110611a0257611a02613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a56575f5ffd5b505af1158015611a68573d5f5f3e3d5ffd5b505050508060010190506119af565b505b5030637f07c9478233611a926060880160408901612be1565b611a9f60c089018961334d565b604051602001611ab3959493929190613858565b60408051601f1981840301815290829052611ad0916024016138e9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061403f5f395f51905f52546001600160a01b031690565b610c48611d81565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b5a5761124e8361217d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bb4575060408051601f3d908101601f19168201909252611bb1918101906138fb565b60015b611c175760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bc3565b5f51602061403f5f395f51905f528114611c855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bc3565b5061124e838383612218565b5f611c9c8484612242565b90508180611cb257506001600160a01b03811615155b84849091611ce457604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610bc3565b50509392505050565b611d0160c954610100900460ff1660021490565b611d1e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106895b6033546001600160a01b03163314610c735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc3565b606580546001600160a01b0319169055610c48816122e4565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e25816001611138565b6001600160a01b0316336001600160a01b031614611e5657604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb691906137ba565b91505f611ed783604001516109e96b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611f0f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f3257506001600160a01b03811630145b15610c4857604051635b50f3f960e01b815260040160405180910390fd5b611f6460c954610100900460ff1660021490565b15611f825760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d73565b806001600160a01b038116611fe95760405163538ba4f960e01b815260040160405180910390fd5b611ff283612335565b61124e82612393565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061203d576106d782612403565b919050565b815f0361204e57505050565b61206883838360405180602001604052805f8152506125de565b61124e57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b5f60405180830381855afa9150503d805f8114612103576040519150601f19603f3d011682016040523d82523d5f602084013e612108565b606091505b5091509150816121265760405180602001604052805f81525061212f565b61212f8161261b565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b6001600160a01b0381163b6121ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bc3565b5f51602061403f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61222183612788565b5f8251118061222d5750805b1561124e5761223c83836127c7565b50505050565b6097545f906001600160a01b03168061226e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212f9190613912565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661235b5760405162461bcd60e51b8152600401610bc39061392d565b6123636127ec565b6123816001600160a01b0382161561237b5781611ddb565b33611ddb565b5060c9805461ff001916610100179055565b5f54610100900460ff166123b95760405162461bcd60e51b8152600401610bc39061392d565b6001600160401b034611156123e15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6124176033546001600160a01b031690565b609754602085015185516040808801516060890151915161244896956001600160a01b031694939290602401613978565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061248f6d627269646765645f65726337323160901b5f611138565b8160405161249c90612923565b6124a79291906139d9565b604051809103905ff0801580156124c0573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906125249082613a47565b50606082015160028201906125399082613a47565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125d09290613b01565b60405180910390a450919050565b5f6001600160a01b03851661260657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061263a57818060200190518101906106d79190613b25565b8151602003612775575f5b60208160ff1610801561267a5750828160ff168151811061266857612668613392565b01602001516001600160f81b03191615155b15612691578061268981613b56565b915050612645565b5f8160ff166001600160401b038111156126ad576126ad612c67565b6040519080825280601f01601f1916602001820160405280156126d7576020820181803683370190505b5090505f91505b60208260ff161080156127135750838260ff168151811061270157612701613392565b01602001516001600160f81b03191615155b15610c5a57838260ff168151811061272d5761272d613392565b602001015160f81c60f81b818360ff168151811061274d5761274d613392565b60200101906001600160f81b03191690815f1a9053508161276d81613b56565b9250506126de565b505060408051602081019091525f815290565b6127918161217d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c5a838360405180606001604052806027815260200161405f60279139612812565b5f54610100900460ff16610c735760405162461bcd60e51b8152600401610bc39061392d565b60605f5f856001600160a01b03168560405161282e9190613822565b5f60405180830381855af49150503d805f8114612866576040519150601f19603f3d011682016040523d82523d5f602084013e61286b565b606091505b509150915061287c86838387612886565b9695505050505050565b606083156128f45782515f036128ed576001600160a01b0385163b6128ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bc3565b508161212f565b61212f83838151156129095781518083602001fd5b8060405162461bcd60e51b8152600401610bc391906138e9565b6104ca80613b7583390190565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b83016101608186031215612968575f5ffd5b946020939093013593505050565b5f60208284031215612986575f5ffd5b81356001600160e01b031981168114610c5a575f5ffd5b6001600160a01b0381168114610c48575f5ffd5b803561203d8161299d565b5f5f83601f8401126129cc575f5ffd5b5081356001600160401b038111156129e2575f5ffd5b6020830191508360208285010111156129f9575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612a14575f5ffd5b8535612a1f8161299d565b94506020860135612a2f8161299d565b93506040860135925060608601356001600160401b03811115612a50575f5ffd5b612a5c888289016129bc565b969995985093965092949392505050565b5f60208284031215612a7d575f5ffd5b81356001600160401b03811115612a92575f5ffd5b82016101008185031215610c5a575f5ffd5b5f5b83811015612abe578181015183820152602001612aa6565b50505f910152565b5f8151808452612add816020860160208601612aa4565b601f01601f19169290920160200192915050565b60208152612b0b6020820183516001600160401b03169052565b5f6020830151612b2660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261212f610180840182612ac6565b5f60208284031215612bf1575f5ffd5b8135610c5a8161299d565b6001600160401b0381168114610c48575f5ffd5b803561203d81612bfc565b8015158114610c48575f5ffd5b5f5f5f60608486031215612c3a575f5ffd5b8335612c4581612bfc565b9250602084013591506040840135612c5c81612c1b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c9d57612c9d612c67565b60405290565b60405161010081016001600160401b0381118282101715612c9d57612c9d612c67565b60405161016081016001600160401b0381118282101715612c9d57612c9d612c67565b604051601f8201601f191681016001600160401b0381118282101715612d1157612d11612c67565b604052919050565b5f6001600160401b03821115612d3157612d31612c67565b50601f01601f191660200190565b5f82601f830112612d4e575f5ffd5b8135602083015f612d66612d6184612d19565b612ce9565b9050828152858383011115612d79575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612da4575f5ffd5b8235612daf8161299d565b915060208301356001600160401b03811115612dc9575f5ffd5b612dd585828601612d3f565b9150509250929050565b5f5f60408385031215612df0575f5ffd5b823591506020830135612e028161299d565b809150509250929050565b5f5f60208385031215612e1e575f5ffd5b82356001600160401b03811115612e33575f5ffd5b612e3f858286016129bc565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e7d90830185612ac6565b8281036060840152612e8f8185612ac6565b979650505050505050565b5f5f60408385031215612eab575f5ffd5b823591506020830135612e0281612c1b565b5f5f60408385031215612ece575f5ffd5b8235612ed98161299d565b91506020830135612e028161299d565b5f5f8335601e19843603018112612efe575f5ffd5b8301803591506001600160401b03821115612f17575f5ffd5b6020019150368190038213156129f9575f5ffd5b5f5f85851115612f39575f5ffd5b83861115612f45575f5ffd5b5050820193919092039150565b5f60208284031215612f62575f5ffd5b81356001600160401b03811115612f77575f5ffd5b61212f84828501612d3f565b805161203d81612bfc565b805161203d8161299d565b5f82601f830112612fa8575f5ffd5b8151602083015f612fbb612d6184612d19565b9050828152858383011115612fce575f5ffd5b612fdc836020830184612aa4565b95945050505050565b5f6001600160401b03821115612ffd57612ffd612c67565b5060051b60200190565b5f82601f830112613016575f5ffd5b8151613024612d6182612fe5565b8082825260208201915060208360051b860101925085831115613045575f5ffd5b602085015b8381101561306257805183526020928301920161304a565b5095945050505050565b5f5f5f5f6080858703121561307f575f5ffd5b84516001600160401b03811115613094575f5ffd5b8501608081880312156130a5575f5ffd5b6130ad612c7b565b81516130b881612bfc565b815260208201516130c88161299d565b602082015260408201516001600160401b038111156130e5575f5ffd5b6130f189828501612f99565b60408301525060608201516001600160401b0381111561310f575f5ffd5b61311b89828501612f99565b6060830152509450613131905060208601612f8e565b925061313f60408601612f8e565b915060608501516001600160401b03811115613159575f5ffd5b61316587828801613007565b91505092959194509250565b5f8151808452602084019350602083015f5b828110156131a1578151865260209586019590910190600101613183565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131d690830185613171565b8281036060840152612e8f8185613171565b63ffffffff81168114610c48575f5ffd5b803561203d816131e8565b5f82601f830112613213575f5ffd5b8135613221612d6182612fe5565b8082825260208201915060208360051b860101925085831115613242575f5ffd5b602085015b83811015613062578035835260209283019201613247565b5f6101008236031215613270575f5ffd5b613278612ca3565b61328183612c10565b815261328f602084016129b1565b60208201526132a0604084016129b1565b60408201526132b160608401612c10565b60608201526132c2608084016129b1565b60808201526132d360a084016131f9565b60a082015260c08301356001600160401b038111156132f0575f5ffd5b6132fc36828601613204565b60c08301525060e08301356001600160401b0381111561331a575f5ffd5b61332636828601613204565b60e08301525092915050565b5f60208284031215613342575f5ffd5b8135610c5a81612bfc565b5f5f8335601e19843603018112613362575f5ffd5b8301803591506001600160401b0382111561337b575f5ffd5b6020019150600581901b36038213156129f9575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133b6575f5ffd5b8135610c5a816131e8565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106d7576106d76133c1565b805161203d816131e8565b5f5f60408385031215613404575f5ffd5b825160208401519092506001600160401b03811115613421575f5ffd5b83016101608186031215613433575f5ffd5b61343b612cc6565b61344482612f83565b815261345260208301612f83565b6020820152613463604083016133e8565b604082015261347460608301612f8e565b606082015261348560808301612f83565b608082015261349660a08301612f8e565b60a08201526134a760c08301612f83565b60c08201526134b860e08301612f8e565b60e08201526134ca6101008301612f8e565b61010082015261012082810151908201526101408201516001600160401b038111156134f4575f5ffd5b61350087828501612f99565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561352a575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061357e9083018688613513565b8281036080840152613591818587613513565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f6080858703121561364a575f5ffd5b84356001600160401b0381111561365f575f5ffd5b850160808188031215613670575f5ffd5b613678612c7b565b813561368381612bfc565b815260208201356136938161299d565b602082015260408201356001600160401b038111156136b0575f5ffd5b6136bc89828501612d3f565b60408301525060608201356001600160401b038111156136da575f5ffd5b6136e689828501612d3f565b60608301525094506136fc9050602086016129b1565b925061370a604086016129b1565b915060608501356001600160401b03811115613724575f5ffd5b61316587828801613204565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061376a90830185613171565b828103608084015261377c8185613171565b98975050505050505050565b600181811c9082168061379c57607f821691505b602082108103610b5d57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156137cb575f5ffd5b50604051606081016001600160401b03811182821017156137ee576137ee612c67565b6040528251815260208301516138038161299d565b6020820152604083015161381681612bfc565b60408201529392505050565b5f8251613833818460208701612aa4565b9190910192915050565b5f6020828403121561384d575f5ffd5b8151610c5a81612c1b565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613899610100840182612ac6565b90506060880151607f198483030160e08501526138b68282612ac6565b6001600160a01b0389811660208701528816604086015291506138d69050565b828103606084015261377c818587613513565b602081525f610c5a6020830184612ac6565b5f6020828403121561390b575f5ffd5b5051919050565b5f60208284031215613922575f5ffd5b8151610c5a8161299d565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f906139ba90830185612ac6565b82810360a08401526139cc8185612ac6565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5790830184612ac6565b601f82111561124e57805f5260205f20601f840160051c81016020851015613a215750805b601f840160051c820191505b81811015613a40575f8155600101613a2d565b5050505050565b81516001600160401b03811115613a6057613a60612c67565b613a7481613a6e8454613788565b846139fc565b6020601f821160018114613aa6575f8315613a8f5750848201515b5f19600385901b1c1916600184901b178455613a40565b5f84815260208120601f198516915b82811015613ad55787850151825560209485019460019092019101613ab5565b5084821015613af257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613b136040830185612ac6565b8281036020840152612fdc8185612ac6565b5f60208284031215613b35575f5ffd5b81516001600160401b03811115613b4a575f5ffd5b61212f84828501612f99565b5f60ff821660ff8103613b6b57613b6b6133c1565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203cd495f2fefd9f75bbedef71608a9c7ed2199e60f25d6a5d6d7c916d19d3a30364736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000003": { @@ -203,7 +203,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000003" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000000004": { @@ -211,7 +211,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c3978146104a4578063f09a4016146104c1578063f23a6e61146104e0578063f2fde38b1461050c575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a73660046128a4565b61052b565b005b3480156101b9575f5ffd5b506101cd6101c83660046128ea565b6106a1565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c366004612911565b6106c0565b6040516101d99190612995565b348015610239575f5ffd5b506101cd610b47565b34801561024d575f5ffd5b506101ac61025c366004612aa4565b610b5f565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612aeb565b610c2f565b3480156102c2575f5ffd5b506101ac610c45565b6101ac6102d9366004612c56565b610c59565b3480156102e9575f5ffd5b50610200610d0e565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612ca2565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610dbf565b348015610371575f5ffd5b506101ac610dd0565b6101ac610388366004612d14565b610e47565b348015610398575f5ffd5b506101ac610f73565b3480156103ac575f5ffd5b50610280610f86565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612aa4565b610f94565b6040516101d99493929190612d52565b34801561040c575f5ffd5b5061028061041b366004612da1565b6110df565b34801561042b575f5ffd5b5061044e61043a366004612e04565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c95461048c906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101d9565b3480156104af575f5ffd5b506065546001600160a01b0316610280565b3480156104cc575f5ffd5b506101ac6104db366004612ec4565b6110eb565b3480156104eb575f5ffd5b5061044e6104fa366004612ef0565b63f23a6e6160e01b9695505050505050565b348015610517575f5ffd5b506101ac610526366004612aa4565b611202565b61053f60c954610100900460ff1660021490565b1561055d5760405163bae6e2a960e01b815260040160405180910390fd5b600261056b60c95460ff1690565b60ff160361058c5760405163dfc60d8560e01b815260040160405180910390fd5b6105966002611273565b61059e611289565b505f6105ae610140840184612f66565b6105bc916004908290612fa8565b8101906105c99190612fcf565b90505f5f5f838060200190518101906105e291906130e9565b94509450505092505f610609848860a00160208101906106029190612aa4565b858561137f565b905061063361012088013561062460c08a0160a08b01612aa4565b6001600160a01b03169061146f565b61064360c0880160a08901612aa4565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c86602001518487876040516106869493929190613251565b60405180910390a3505050505061069d6001611273565b5050565b5f6106ab8261147a565b806106ba57506106ba826114c9565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072e60c954610100900460ff1660021490565b1561074c5760405163bae6e2a960e01b815260040160405180910390fd5b61075582613305565b8060e00151518160c00151511461077f5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107aa576040516303f8a7d360e01b815260040160405180910390fd5b60026107b860c95460ff1690565b60ff16036107d95760405163dfc60d8560e01b815260040160405180910390fd5b6107e36002611273565b6107f360808401606085016133d8565b6001600160401b031634101561081c57604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082b60e08501856133f3565b905081101561087f5761084160e08501856133f3565b8281811061085157610851613438565b905060200201355f0361087757604051634299323b60e11b815260040160405180910390fd5b60010161081e565b506108aa636cdb3d1360e11b61089b60a0860160808701612aa4565b6001600160a01b0316906114fd565b6108c757604051633ee915f560e11b815260040160405180910390fd5b5f5f6108d2856115cd565b6040805161016081019091525f808252929450909250602081016108fc6080890160608a016133d8565b6001600160401b0316815260200161091a60c0890160a08a0161344c565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061094b908901896133d8565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109769190612aa4565b6001600160a01b03160361098a573361099a565b61099a6040890160208a01612aa4565b6001600160a01b031681526020908101906109d3906109bb908a018a6133d8565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c2f565b6001600160a01b031681526020016109f16080890160608a016133d8565b610a04906001600160401b03163461347b565b815260200184905290505f610a226562726964676560d01b826110df565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a4e9190612995565b5f6040518083038185885af1158015610a69573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a919190810190613499565b96509050610aa56060880160408901612aa4565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610afb9190612aa4565b610b0860c08f018f6133f3565b8f8060e00190610b1891906133f3565b604051610b2b97969594939291906135e9565b60405180910390a450505050610b416001611273565b50919050565b5f6002610b5660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610bb05760405162461bcd60e51b8152600401610ba790613645565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610be2611a8d565b6001600160a01b031614610c085760405162461bcd60e51b8152600401610ba790613691565b610c1181611aa8565b604080515f80825260208201909252610c2c91839190611ab0565b50565b5f610c3b848484611c1a565b90505b9392505050565b610c4d611c6c565b610c57335f611cfc565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610ca15760405162461bcd60e51b8152600401610ba790613645565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610cd3611a8d565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610ba790613691565b610d0282611aa8565b61069d82826001611ab0565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610dad5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba7565b505f5160206142175f395f51905f5290565b610dc7611d00565b610c575f611d5a565b60655433906001600160a01b03168114610e3e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba7565b610c2c81611d5a565b610e5b60c954610100900460ff1660021490565b15610e795760405163bae6e2a960e01b815260040160405180910390fd5b6002610e8760c95460ff1690565b60ff1603610ea85760405163dfc60d8560e01b815260040160405180910390fd5b610eb26002611273565b5f80808080610ec3868801886136dd565b945094509450945094505f610ed6611d73565b9050610ee184611e94565b5f610eee8786868661137f565b9050610f036001600160a01b0386163461146f565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f5a9594939291906137fe565b60405180910390a45050505050505061069d6001611273565b610f7b611ed0565b610c57336001611cfc565b5f610f8f611a8d565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fd290613856565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90613856565b80156110495780601f1061102057610100808354040283529160200191611049565b820191905f5260205f20905b81548152906001019060200180831161102c57829003601f168201915b50505050509080600201805461105e90613856565b80601f016020809104026020016040519081016040528092919081815260200182805461108a90613856565b80156110d55780601f106110ac576101008083540402835291602001916110d5565b820191905f5260205f20905b8154815290600101906020018083116110b857829003601f168201915b5050505050905084565b5f610c3e468484611c1a565b5f54610100900460ff161580801561110957505f54600160ff909116105b806111225750303b15801561112257505f5460ff166001145b6111855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba7565b5f805460ff1916600117905580156111a6575f805461ff0019166101001790555b6111b08383611f41565b6111b8611f7b565b80156111fd575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61120a611d00565b606580546001600160a01b0383166001600160a01b0319909116811790915561123b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112ba8160016110df565b6001600160a01b0316336001600160a01b0316146112eb57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190613888565b60208101519092506001600160a01b0316331461137b57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fd57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113cb9030908890889088906004016138f0565b5f604051808303815f87803b1580156113e2575f5ffd5b505af11580156113f4573d5f5f3e3d5ffd5b50505050611467565b61140685611fa1565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143990879087908790600401613949565b5f604051808303815f87803b158015611450575f5ffd5b505af1158015611462573d5f5f3e3d5ffd5b505050505b949350505050565b61069d82825a611fe8565b5f6001600160e01b0319821662bc399d60e11b14806114a957506001600160e01b03198216637f07c94760e01b145b806106ba57506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106ba57506301ffc9a760e01b6001600160e01b03198316146106ba565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611559919061397e565b5f60405180830381855afa9150503d805f8114611591576040519150601f19603f3d011682016040523d82523d5f602084013e611596565b606091505b50915091508180156115a9575080516020145b156115c557808060200190518101906115c29190613999565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161160360a0870160808801612aa4565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118f6576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061167490613856565b80601f01602080910402602001604051908101604052809291908181526020018280546116a090613856565b80156116eb5780601f106116c2576101008083540402835291602001916116eb565b820191905f5260205f20905b8154815290600101906020018083116116ce57829003601f168201915b5050505050815260200160028201805461170490613856565b80601f016020809104026020016040519081016040528092919081815260200182805461173090613856565b801561177b5780601f106117525761010080835404028352916020019161177b565b820191905f5260205f20905b81548152906001019060200180831161175e57829003601f168201915b50505050508152505091508360800160208101906117999190612aa4565b6001600160a01b0316632eb2c2d633306117b660c08901896133f3565b6117c360e08b018b6133f3565b6040518763ffffffff1660e01b81526004016117e4969594939291906139b4565b5f604051808303815f87803b1580156117fb575f5ffd5b505af115801561180d573d5f5f3e3d5ffd5b505050505f5b61182060c08601866133f3565b90508110156118f05761183960a0860160808701612aa4565b6001600160a01b031663b390c0ab61185460c08801886133f3565b8481811061186457611864613438565b90506020020135878060e0019061187b91906133f3565b8581811061188b5761188b613438565b905060200201356040518363ffffffff1660e01b81526004016118b8929190918252602082015260400190565b5f604051808303815f87803b1580156118cf575f5ffd5b505af11580156118e1573d5f5f3e3d5ffd5b50505050806001019050611813565b506119f3565b6040518060800160405280466001600160401b031681526020018560800160208101906119239190612aa4565b6001600160a01b0316815260200161194961194460a0880160808901612aa4565b61202b565b815260200161196661196160a0880160808901612aa4565b6120d5565b9052915061197a60a0850160808601612aa4565b6001600160a01b0316632eb2c2d6333061199760c08901896133f3565b6119a460e08b018b6133f3565b6040518763ffffffff1660e01b81526004016119c5969594939291906139b4565b5f604051808303815f87803b1580156119dc575f5ffd5b505af11580156119ee573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a0c6060880160408901612aa4565b611a1960c08901896133f3565b611a2660e08b018b6133f3565b604051602001611a3c9796959493929190613a11565b60408051601f1981840301815290829052611a5991602401613ac1565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f5160206142175f395f51905f52546001600160a01b031690565b610c2c611d00565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ae3576111fd8361211b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b3d575060408051601f3d908101601f19168201909252611b3a91810190613ad3565b60015b611ba05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba7565b5f5160206142175f395f51905f528114611c0e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba7565b506111fd8383836121b6565b5f611c2584846121e0565b905081158015611c3c57506001600160a01b038116155b15610c3e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ba7565b611c8060c954610100900460ff1660021490565b611c9d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b61069d5b6033546001600160a01b03163314610c575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba7565b606580546001600160a01b0319169055610c2c81612282565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611da48160016110df565b6001600160a01b0316336001600160a01b031614611dd557604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e359190613888565b91505f611e5783604001516109cd6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e8f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eb257506001600160a01b03811630145b15610c2c57604051635b50f3f960e01b815260040160405180910390fd5b611ee460c954610100900460ff1660021490565b15611f025760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611cf2565b806001600160a01b038116611f695760405163538ba4f960e01b815260040160405180910390fd5b611f72836122d3565b6111fd82612331565b5f54610100900460ff16610c575760405162461bcd60e51b8152600401610ba790613aea565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fe3576106ba826123a1565b919050565b815f03611ff457505050565b61200e83838360405180602001604052805f81525061257d565b6111fd57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612071919061397e565b5f60405180830381855afa9150503d805f81146120a9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ae565b606091505b5091509150816120cc5760405180602001604052805f815250611467565b611467816125ba565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612071919061397e565b6001600160a01b0381163b6121885760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba7565b5f5160206142175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121bf83612727565b5f825111806121cb5750805b156111fd576121da8383612766565b50505050565b6097545f906001600160a01b03168061220c57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561225e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114679190613b35565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166122f95760405162461bcd60e51b8152600401610ba790613aea565b612301611f7b565b61231f6001600160a01b038216156123195781611d5a565b33611d5a565b5060c9805461ff001916610100179055565b5f54610100900460ff166123575760405162461bcd60e51b8152600401610ba790613aea565b6001600160401b0346111561237f5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123b56033546001600160a01b031690565b60975460208501518551604080880151606089015191516123e696956001600160a01b031694939290602401613b50565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061242e6e627269646765645f6572633131353560881b5f6110df565b8160405161243b90612897565b612446929190613bb1565b604051809103905ff08015801561245f573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124c39082613c1f565b50606082015160028201906124d89082613c1f565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261256f9290613cd9565b60405180910390a450919050565b5f6001600160a01b0385166125a557604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125d957818060200190518101906106ba9190613cfd565b8151602003612714575f5b60208160ff161080156126195750828160ff168151811061260757612607613438565b01602001516001600160f81b03191615155b15612630578061262881613d2e565b9150506125e4565b5f8160ff166001600160401b0381111561264c5761264c612b2a565b6040519080825280601f01601f191660200182016040528015612676576020820181803683370190505b5090505f91505b60208260ff161080156126b25750838260ff16815181106126a0576126a0613438565b01602001516001600160f81b03191615155b15610c3e57838260ff16815181106126cc576126cc613438565b602001015160f81c60f81b818360ff16815181106126ec576126ec613438565b60200101906001600160f81b03191690815f1a9053508161270c81613d2e565b92505061267d565b505060408051602081019091525f815290565b6127308161211b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c3e83836040518060600160405280602781526020016142376027913960605f5f856001600160a01b0316856040516127a2919061397e565b5f60405180830381855af49150503d805f81146127da576040519150601f19603f3d011682016040523d82523d5f602084013e6127df565b606091505b50915091506127f0868383876127fa565b9695505050505050565b606083156128685782515f03612861576001600160a01b0385163b6128615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba7565b5081611467565b611467838381511561287d5781518083602001fd5b8060405162461bcd60e51b8152600401610ba79190613ac1565b6104ca80613d4d83390190565b5f5f604083850312156128b5575f5ffd5b82356001600160401b038111156128ca575f5ffd5b830161016081860312156128dc575f5ffd5b946020939093013593505050565b5f602082840312156128fa575f5ffd5b81356001600160e01b031981168114610c3e575f5ffd5b5f60208284031215612921575f5ffd5b81356001600160401b03811115612936575f5ffd5b82016101008185031215610c3e575f5ffd5b5f5b8381101561296257818101518382015260200161294a565b50505f910152565b5f8151808452612981816020860160208601612948565b601f01601f19169290920160200192915050565b602081526129af6020820183516001600160401b03169052565b5f60208301516129ca60408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261146761018084018261296a565b6001600160a01b0381168114610c2c575f5ffd5b8035611fe381612a85565b5f60208284031215612ab4575f5ffd5b8135610c3e81612a85565b6001600160401b0381168114610c2c575f5ffd5b8035611fe381612abf565b8015158114610c2c575f5ffd5b5f5f5f60608486031215612afd575f5ffd5b8335612b0881612abf565b9250602084013591506040840135612b1f81612ade565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b6057612b60612b2a565b60405290565b60405161010081016001600160401b0381118282101715612b6057612b60612b2a565b60405161016081016001600160401b0381118282101715612b6057612b60612b2a565b604051601f8201601f191681016001600160401b0381118282101715612bd457612bd4612b2a565b604052919050565b5f6001600160401b03821115612bf457612bf4612b2a565b50601f01601f191660200190565b5f82601f830112612c11575f5ffd5b8135602083015f612c29612c2484612bdc565b612bac565b9050828152858383011115612c3c575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c67575f5ffd5b8235612c7281612a85565b915060208301356001600160401b03811115612c8c575f5ffd5b612c9885828601612c02565b9150509250929050565b5f5f60408385031215612cb3575f5ffd5b823591506020830135612cc581612a85565b809150509250929050565b5f5f83601f840112612ce0575f5ffd5b5081356001600160401b03811115612cf6575f5ffd5b602083019150836020828501011115612d0d575f5ffd5b9250929050565b5f5f60208385031215612d25575f5ffd5b82356001600160401b03811115612d3a575f5ffd5b612d4685828601612cd0565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d849083018561296a565b8281036060840152612d96818561296a565b979650505050505050565b5f5f60408385031215612db2575f5ffd5b823591506020830135612cc581612ade565b5f5f83601f840112612dd4575f5ffd5b5081356001600160401b03811115612dea575f5ffd5b6020830191508360208260051b8501011115612d0d575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612e1b575f5ffd5b8835612e2681612a85565b97506020890135612e3681612a85565b965060408901356001600160401b03811115612e50575f5ffd5b612e5c8b828c01612dc4565b90975095505060608901356001600160401b03811115612e7a575f5ffd5b612e868b828c01612dc4565b90955093505060808901356001600160401b03811115612ea4575f5ffd5b612eb08b828c01612cd0565b999c989b5096995094979396929594505050565b5f5f60408385031215612ed5575f5ffd5b8235612ee081612a85565b91506020830135612cc581612a85565b5f5f5f5f5f5f60a08789031215612f05575f5ffd5b8635612f1081612a85565b95506020870135612f2081612a85565b9450604087013593506060870135925060808701356001600160401b03811115612f48575f5ffd5b612f5489828a01612cd0565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f7b575f5ffd5b8301803591506001600160401b03821115612f94575f5ffd5b602001915036819003821315612d0d575f5ffd5b5f5f85851115612fb6575f5ffd5b83861115612fc2575f5ffd5b5050820193919092039150565b5f60208284031215612fdf575f5ffd5b81356001600160401b03811115612ff4575f5ffd5b61146784828501612c02565b8051611fe381612abf565b8051611fe381612a85565b5f82601f830112613025575f5ffd5b8151602083015f613038612c2484612bdc565b905082815285838301111561304b575f5ffd5b613059836020830184612948565b95945050505050565b5f6001600160401b0382111561307a5761307a612b2a565b5060051b60200190565b5f82601f830112613093575f5ffd5b81516130a1612c2482613062565b8082825260208201915060208360051b8601019250858311156130c2575f5ffd5b602085015b838110156130df5780518352602092830192016130c7565b5095945050505050565b5f5f5f5f5f60a086880312156130fd575f5ffd5b85516001600160401b03811115613112575f5ffd5b860160808189031215613123575f5ffd5b61312b612b3e565b815161313681612abf565b8152602082015161314681612a85565b602082015260408201516001600160401b03811115613163575f5ffd5b61316f8a828501613016565b60408301525060608201516001600160401b0381111561318d575f5ffd5b6131998a828501613016565b60608301525095506131af90506020870161300b565b93506131bd6040870161300b565b925060608601516001600160401b038111156131d7575f5ffd5b6131e388828901613084565b92505060808601516001600160401b038111156131fe575f5ffd5b61320a88828901613084565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015613247578151865260209586019590910190600101613229565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f9061327c90830185613217565b8281036060840152612d968185613217565b63ffffffff81168114610c2c575f5ffd5b8035611fe38161328e565b5f82601f8301126132b9575f5ffd5b81356132c7612c2482613062565b8082825260208201915060208360051b8601019250858311156132e8575f5ffd5b602085015b838110156130df5780358352602092830192016132ed565b5f6101008236031215613316575f5ffd5b61331e612b66565b61332783612ad3565b815261333560208401612a99565b602082015261334660408401612a99565b604082015261335760608401612ad3565b606082015261336860808401612a99565b608082015261337960a0840161329f565b60a082015260c08301356001600160401b03811115613396575f5ffd5b6133a2368286016132aa565b60c08301525060e08301356001600160401b038111156133c0575f5ffd5b6133cc368286016132aa565b60e08301525092915050565b5f602082840312156133e8575f5ffd5b8135610c3e81612abf565b5f5f8335601e19843603018112613408575f5ffd5b8301803591506001600160401b03821115613421575f5ffd5b6020019150600581901b3603821315612d0d575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561345c575f5ffd5b8135610c3e8161328e565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ba576106ba613467565b8051611fe38161328e565b5f5f604083850312156134aa575f5ffd5b825160208401519092506001600160401b038111156134c7575f5ffd5b830161016081860312156134d9575f5ffd5b6134e1612b89565b6134ea82613000565b81526134f860208301613000565b60208201526135096040830161348e565b604082015261351a6060830161300b565b606082015261352b60808301613000565b608082015261353c60a0830161300b565b60a082015261354d60c08301613000565b60c082015261355e60e0830161300b565b60e0820152613570610100830161300b565b61010082015261012082810151908201526101408201516001600160401b0381111561359a575f5ffd5b6135a687828501613016565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156135d0575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061362490830186886135b9565b82810360808401526136378185876135b9565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136f1575f5ffd5b85356001600160401b03811115613706575f5ffd5b860160808189031215613717575f5ffd5b61371f612b3e565b813561372a81612abf565b8152602082013561373a81612a85565b602082015260408201356001600160401b03811115613757575f5ffd5b6137638a828501612c02565b60408301525060608201356001600160401b03811115613781575f5ffd5b61378d8a828501612c02565b60608301525095506137a3905060208701612a99565b93506137b160408701612a99565b925060608601356001600160401b038111156137cb575f5ffd5b6137d7888289016132aa565b92505060808601356001600160401b038111156137f2575f5ffd5b61320a888289016132aa565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061383890830185613217565b828103608084015261384a8185613217565b98975050505050505050565b600181811c9082168061386a57607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613899575f5ffd5b50604051606081016001600160401b03811182821017156138bc576138bc612b2a565b6040528251815260208301516138d181612a85565b602082015260408301516138e481612abf565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f9061391b90830185613217565b828103606084015261392d8185613217565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f9061396c90830185613217565b82810360408401526127f08185613217565b5f825161398f818460208701612948565b9190910192915050565b5f602082840312156139a9575f5ffd5b8151610c3e81612ade565b6001600160a01b0387811682528616602082015260a0604082018190525f906139e090830186886135b9565b82810360608401526139f38185876135b9565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613a5461012084018261296a565b905060608a0151609f1984830301610100850152613a72828261296a565b915050613a8a602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613aac8187896135b9565b905082810360808401526136378185876135b9565b602081525f610c3e602083018461296a565b5f60208284031215613ae3575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613b45575f5ffd5b8151610c3e81612a85565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b929083018561296a565b82810360a0840152613ba4818561296a565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3b9083018461296a565b601f8211156111fd57805f5260205f20601f840160051c81016020851015613bf95750805b601f840160051c820191505b81811015613c18575f8155600101613c05565b5050505050565b81516001600160401b03811115613c3857613c38612b2a565b613c4c81613c468454613856565b84613bd4565b6020601f821160018114613c7e575f8315613c675750848201515b5f19600385901b1c1916600184901b178455613c18565b5f84815260208120601f198516915b82811015613cad5787850151825560209485019460019092019101613c8d565b5084821015613cca57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613ceb604083018561296a565b8281036020840152613059818561296a565b5f60208284031215613d0d575f5ffd5b81516001600160401b03811115613d22575f5ffd5b61146784828501613016565b5f60ff821660ff8103613d4357613d43613467565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206deb91f9d1849f50f4a134c167684f7155ec3e6c239d1bd2c3d1d959929365d164736f6c634300081b0033", + "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c39781461049d578063f09a4016146104ba578063f23a6e61146104d9578063f2fde38b14610505575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a73660046128ab565b610524565b005b3480156101b9575f5ffd5b506101cd6101c83660046128f1565b61069a565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c366004612918565b6106b9565b6040516101d9919061299c565b348015610239575f5ffd5b506101cd610b40565b34801561024d575f5ffd5b506101ac61025c366004612aab565b610b58565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612af2565b610c28565b3480156102c2575f5ffd5b506101ac610c3c565b6101ac6102d9366004612c5d565b610c50565b3480156102e9575f5ffd5b50610200610d05565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612ca9565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610db6565b348015610371575f5ffd5b506101ac610dc7565b6101ac610388366004612d1b565b610e3e565b348015610398575f5ffd5b506101ac610f6a565b3480156103ac575f5ffd5b50610280610f7d565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612aab565b610f8b565b6040516101d99493929190612d59565b34801561040c575f5ffd5b5061028061041b366004612da8565b6110d6565b34801561042b575f5ffd5b5061044e61043a366004612e0b565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101d9565b3480156104a8575f5ffd5b506065546001600160a01b0316610280565b3480156104c5575f5ffd5b506101ac6104d4366004612ecb565b6110e9565b3480156104e4575f5ffd5b5061044e6104f3366004612ef7565b63f23a6e6160e01b9695505050505050565b348015610510575f5ffd5b506101ac61051f366004612aab565b611200565b61053860c954610100900460ff1660021490565b156105565760405163bae6e2a960e01b815260040160405180910390fd5b600261056460c95460ff1690565b60ff16036105855760405163dfc60d8560e01b815260040160405180910390fd5b61058f6002611271565b610597611287565b505f6105a7610140840184612f6d565b6105b5916004908290612faf565b8101906105c29190612fd6565b90505f5f5f838060200190518101906105db91906130f0565b94509450505092505f610602848860a00160208101906105fb9190612aab565b858561137d565b905061062c61012088013561061d60c08a0160a08b01612aab565b6001600160a01b03169061146c565b61063c60c0880160a08901612aab565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c866020015184878760405161067f9493929190613258565b60405180910390a350505050506106966001611271565b5050565b5f6106a482611477565b806106b357506106b3826114c6565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072760c954610100900460ff1660021490565b156107455760405163bae6e2a960e01b815260040160405180910390fd5b61074e8261330c565b8060e00151518160c0015151146107785760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107a3576040516303f8a7d360e01b815260040160405180910390fd5b60026107b160c95460ff1690565b60ff16036107d25760405163dfc60d8560e01b815260040160405180910390fd5b6107dc6002611271565b6107ec60808401606085016133df565b6001600160401b031634101561081557604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082460e08501856133fa565b90508110156108785761083a60e08501856133fa565b8281811061084a5761084a61343f565b905060200201355f0361087057604051634299323b60e11b815260040160405180910390fd5b600101610817565b506108a3636cdb3d1360e11b61089460a0860160808701612aab565b6001600160a01b0316906114fa565b6108c057604051633ee915f560e11b815260040160405180910390fd5b5f5f6108cb856115ca565b6040805161016081019091525f808252929450909250602081016108f56080890160608a016133df565b6001600160401b0316815260200161091360c0890160a08a01613453565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610944908901896133df565b6001600160401b031681526020015f6001600160a01b031688602001602081019061096f9190612aab565b6001600160a01b0316036109835733610993565b6109936040890160208a01612aab565b6001600160a01b031681526020908101906109cc906109b4908a018a6133df565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c28565b6001600160a01b031681526020016109ea6080890160608a016133df565b6109fd906001600160401b031634613482565b815260200184905290505f610a1b6562726964676560d01b826110d6565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a47919061299c565b5f6040518083038185885af1158015610a62573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a8a91908101906134a0565b96509050610a9e6060880160408901612aab565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610af49190612aab565b610b0160c08f018f6133fa565b8f8060e00190610b1191906133fa565b604051610b2497969594939291906135f0565b60405180910390a450505050610b3a6001611271565b50919050565b5f6002610b4f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610ba95760405162461bcd60e51b8152600401610ba09061364c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610bdb611a8a565b6001600160a01b031614610c015760405162461bcd60e51b8152600401610ba090613698565b610c0a81611aa5565b604080515f80825260208201909252610c2591839190611aad565b50565b5f610c34848484611c17565b949350505050565b610c44611c73565b610c4e335f611d03565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c985760405162461bcd60e51b8152600401610ba09061364c565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610cca611a8a565b6001600160a01b031614610cf05760405162461bcd60e51b8152600401610ba090613698565b610cf982611aa5565b61069682826001611aad565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610da45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba0565b505f51602061421e5f395f51905f5290565b610dbe611d07565b610c4e5f611d61565b60655433906001600160a01b03168114610e355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba0565b610c2581611d61565b610e5260c954610100900460ff1660021490565b15610e705760405163bae6e2a960e01b815260040160405180910390fd5b6002610e7e60c95460ff1690565b60ff1603610e9f5760405163dfc60d8560e01b815260040160405180910390fd5b610ea96002611271565b5f80808080610eba868801886136e4565b945094509450945094505f610ecd611d7a565b9050610ed884611e9b565b5f610ee58786868661137d565b9050610efa6001600160a01b0386163461146c565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f51959493929190613805565b60405180910390a4505050505050506106966001611271565b610f72611ed7565b610c4e336001611d03565b5f610f86611a8a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fc99061385d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff59061385d565b80156110405780601f1061101757610100808354040283529160200191611040565b820191905f5260205f20905b81548152906001019060200180831161102357829003601f168201915b5050505050908060020180546110559061385d565b80601f01602080910402602001604051908101604052809291908181526020018280546110819061385d565b80156110cc5780601f106110a3576101008083540402835291602001916110cc565b820191905f5260205f20905b8154815290600101906020018083116110af57829003601f168201915b5050505050905084565b5f6110e2468484611c17565b9392505050565b5f54610100900460ff161580801561110757505f54600160ff909116105b806111205750303b15801561112057505f5460ff166001145b6111835760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba0565b5f805460ff1916600117905580156111a4575f805461ff0019166101001790555b6111ae8383611f48565b6111b6611f82565b80156111fb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611208611d07565b606580546001600160a01b0383166001600160a01b031990911681179091556112396033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112b88160016110d6565b6001600160a01b0316336001600160a01b0316146112e957604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611325573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611349919061388f565b60208101519092506001600160a01b0316331461137957604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fb57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113c99030908890889088906004016138f7565b5f604051808303815f87803b1580156113e0575f5ffd5b505af11580156113f2573d5f5f3e3d5ffd5b50505050610c34565b61140485611fa8565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143790879087908790600401613950565b5f604051808303815f87803b15801561144e575f5ffd5b505af1158015611460573d5f5f3e3d5ffd5b50505050949350505050565b61069682825a611fef565b5f6001600160e01b0319821662bc399d60e11b14806114a657506001600160e01b03198216637f07c94760e01b145b806106b357506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115569190613985565b5f60405180830381855afa9150503d805f811461158e576040519150601f19603f3d011682016040523d82523d5f602084013e611593565b606091505b50915091508180156115a6575080516020145b156115c257808060200190518101906115bf91906139a0565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161160060a0870160808801612aab565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118f3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116719061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461169d9061385d565b80156116e85780601f106116bf576101008083540402835291602001916116e8565b820191905f5260205f20905b8154815290600101906020018083116116cb57829003601f168201915b505050505081526020016002820180546117019061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461172d9061385d565b80156117785780601f1061174f57610100808354040283529160200191611778565b820191905f5260205f20905b81548152906001019060200180831161175b57829003601f168201915b50505050508152505091508360800160208101906117969190612aab565b6001600160a01b0316632eb2c2d633306117b360c08901896133fa565b6117c060e08b018b6133fa565b6040518763ffffffff1660e01b81526004016117e1969594939291906139bb565b5f604051808303815f87803b1580156117f8575f5ffd5b505af115801561180a573d5f5f3e3d5ffd5b505050505f5b61181d60c08601866133fa565b90508110156118ed5761183660a0860160808701612aab565b6001600160a01b031663b390c0ab61185160c08801886133fa565b848181106118615761186161343f565b90506020020135878060e0019061187891906133fa565b858181106118885761188861343f565b905060200201356040518363ffffffff1660e01b81526004016118b5929190918252602082015260400190565b5f604051808303815f87803b1580156118cc575f5ffd5b505af11580156118de573d5f5f3e3d5ffd5b50505050806001019050611810565b506119f0565b6040518060800160405280466001600160401b031681526020018560800160208101906119209190612aab565b6001600160a01b0316815260200161194661194160a0880160808901612aab565b612032565b815260200161196361195e60a0880160808901612aab565b6120dc565b9052915061197760a0850160808601612aab565b6001600160a01b0316632eb2c2d6333061199460c08901896133fa565b6119a160e08b018b6133fa565b6040518763ffffffff1660e01b81526004016119c2969594939291906139bb565b5f604051808303815f87803b1580156119d9575f5ffd5b505af11580156119eb573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a096060880160408901612aab565b611a1660c08901896133fa565b611a2360e08b018b6133fa565b604051602001611a399796959493929190613a18565b60408051601f1981840301815290829052611a5691602401613ac8565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061421e5f395f51905f52546001600160a01b031690565b610c25611d07565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ae0576111fb83612122565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b3a575060408051601f3d908101601f19168201909252611b3791810190613ada565b60015b611b9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba0565b5f51602061421e5f395f51905f528114611c0b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba0565b506111fb8383836121bd565b5f611c2284846121e7565b90508180611c3857506001600160a01b03811615155b84849091611c6a57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ba0565b50509392505050565b611c8760c954610100900460ff1660021490565b611ca45760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106965b6033546001600160a01b03163314610c4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba0565b606580546001600160a01b0319169055610c2581612289565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611dab8160016110d6565b6001600160a01b0316336001600160a01b031614611ddc57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3c919061388f565b91505f611e5e83604001516109c66c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e9657604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eb957506001600160a01b03811630145b15610c2557604051635b50f3f960e01b815260040160405180910390fd5b611eeb60c954610100900460ff1660021490565b15611f095760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611cf9565b806001600160a01b038116611f705760405163538ba4f960e01b815260040160405180910390fd5b611f79836122da565b6111fb82612338565b5f54610100900460ff16610c4e5760405162461bcd60e51b8152600401610ba090613af1565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fea576106b3826123a8565b919050565b815f03611ffb57505050565b61201583838360405180602001604052805f815250612584565b6111fb57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120789190613985565b5f60405180830381855afa9150503d805f81146120b0576040519150601f19603f3d011682016040523d82523d5f602084013e6120b5565b606091505b5091509150816120d35760405180602001604052805f815250610c34565b610c34816125c1565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120789190613985565b6001600160a01b0381163b61218f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba0565b5f51602061421e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c68361272e565b5f825111806121d25750805b156111fb576121e1838361276d565b50505050565b6097545f906001600160a01b03168061221357604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612265573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190613b3c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123005760405162461bcd60e51b8152600401610ba090613af1565b612308611f82565b6123266001600160a01b038216156123205781611d61565b33611d61565b5060c9805461ff001916610100179055565b5f54610100900460ff1661235e5760405162461bcd60e51b8152600401610ba090613af1565b6001600160401b034611156123865760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123bc6033546001600160a01b031690565b60975460208501518551604080880151606089015191516123ed96956001600160a01b031694939290602401613b57565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124356e627269646765645f6572633131353560881b5f6110d6565b816040516124429061289e565b61244d929190613bb8565b604051809103905ff080158015612466573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124ca9082613c26565b50606082015160028201906124df9082613c26565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125769290613ce0565b60405180910390a450919050565b5f6001600160a01b0385166125ac57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125e057818060200190518101906106b39190613d04565b815160200361271b575f5b60208160ff161080156126205750828160ff168151811061260e5761260e61343f565b01602001516001600160f81b03191615155b15612637578061262f81613d35565b9150506125eb565b5f8160ff166001600160401b0381111561265357612653612b31565b6040519080825280601f01601f19166020018201604052801561267d576020820181803683370190505b5090505f91505b60208260ff161080156126b95750838260ff16815181106126a7576126a761343f565b01602001516001600160f81b03191615155b156110e257838260ff16815181106126d3576126d361343f565b602001015160f81c60f81b818360ff16815181106126f3576126f361343f565b60200101906001600160f81b03191690815f1a9053508161271381613d35565b925050612684565b505060408051602081019091525f815290565b61273781612122565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606110e2838360405180606001604052806027815260200161423e6027913960605f5f856001600160a01b0316856040516127a99190613985565b5f60405180830381855af49150503d805f81146127e1576040519150601f19603f3d011682016040523d82523d5f602084013e6127e6565b606091505b50915091506127f786838387612801565b9695505050505050565b6060831561286f5782515f03612868576001600160a01b0385163b6128685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba0565b5081610c34565b610c3483838151156128845781518083602001fd5b8060405162461bcd60e51b8152600401610ba09190613ac8565b6104ca80613d5483390190565b5f5f604083850312156128bc575f5ffd5b82356001600160401b038111156128d1575f5ffd5b830161016081860312156128e3575f5ffd5b946020939093013593505050565b5f60208284031215612901575f5ffd5b81356001600160e01b0319811681146110e2575f5ffd5b5f60208284031215612928575f5ffd5b81356001600160401b0381111561293d575f5ffd5b820161010081850312156110e2575f5ffd5b5f5b83811015612969578181015183820152602001612951565b50505f910152565b5f815180845261298881602086016020860161294f565b601f01601f19169290920160200192915050565b602081526129b66020820183516001600160401b03169052565b5f60208301516129d160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152610c34610180840182612971565b6001600160a01b0381168114610c25575f5ffd5b8035611fea81612a8c565b5f60208284031215612abb575f5ffd5b81356110e281612a8c565b6001600160401b0381168114610c25575f5ffd5b8035611fea81612ac6565b8015158114610c25575f5ffd5b5f5f5f60608486031215612b04575f5ffd5b8335612b0f81612ac6565b9250602084013591506040840135612b2681612ae5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b6757612b67612b31565b60405290565b60405161010081016001600160401b0381118282101715612b6757612b67612b31565b60405161016081016001600160401b0381118282101715612b6757612b67612b31565b604051601f8201601f191681016001600160401b0381118282101715612bdb57612bdb612b31565b604052919050565b5f6001600160401b03821115612bfb57612bfb612b31565b50601f01601f191660200190565b5f82601f830112612c18575f5ffd5b8135602083015f612c30612c2b84612be3565b612bb3565b9050828152858383011115612c43575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c6e575f5ffd5b8235612c7981612a8c565b915060208301356001600160401b03811115612c93575f5ffd5b612c9f85828601612c09565b9150509250929050565b5f5f60408385031215612cba575f5ffd5b823591506020830135612ccc81612a8c565b809150509250929050565b5f5f83601f840112612ce7575f5ffd5b5081356001600160401b03811115612cfd575f5ffd5b602083019150836020828501011115612d14575f5ffd5b9250929050565b5f5f60208385031215612d2c575f5ffd5b82356001600160401b03811115612d41575f5ffd5b612d4d85828601612cd7565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d8b90830185612971565b8281036060840152612d9d8185612971565b979650505050505050565b5f5f60408385031215612db9575f5ffd5b823591506020830135612ccc81612ae5565b5f5f83601f840112612ddb575f5ffd5b5081356001600160401b03811115612df1575f5ffd5b6020830191508360208260051b8501011115612d14575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612e22575f5ffd5b8835612e2d81612a8c565b97506020890135612e3d81612a8c565b965060408901356001600160401b03811115612e57575f5ffd5b612e638b828c01612dcb565b90975095505060608901356001600160401b03811115612e81575f5ffd5b612e8d8b828c01612dcb565b90955093505060808901356001600160401b03811115612eab575f5ffd5b612eb78b828c01612cd7565b999c989b5096995094979396929594505050565b5f5f60408385031215612edc575f5ffd5b8235612ee781612a8c565b91506020830135612ccc81612a8c565b5f5f5f5f5f5f60a08789031215612f0c575f5ffd5b8635612f1781612a8c565b95506020870135612f2781612a8c565b9450604087013593506060870135925060808701356001600160401b03811115612f4f575f5ffd5b612f5b89828a01612cd7565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f82575f5ffd5b8301803591506001600160401b03821115612f9b575f5ffd5b602001915036819003821315612d14575f5ffd5b5f5f85851115612fbd575f5ffd5b83861115612fc9575f5ffd5b5050820193919092039150565b5f60208284031215612fe6575f5ffd5b81356001600160401b03811115612ffb575f5ffd5b610c3484828501612c09565b8051611fea81612ac6565b8051611fea81612a8c565b5f82601f83011261302c575f5ffd5b8151602083015f61303f612c2b84612be3565b9050828152858383011115613052575f5ffd5b61306083602083018461294f565b95945050505050565b5f6001600160401b0382111561308157613081612b31565b5060051b60200190565b5f82601f83011261309a575f5ffd5b81516130a8612c2b82613069565b8082825260208201915060208360051b8601019250858311156130c9575f5ffd5b602085015b838110156130e65780518352602092830192016130ce565b5095945050505050565b5f5f5f5f5f60a08688031215613104575f5ffd5b85516001600160401b03811115613119575f5ffd5b86016080818903121561312a575f5ffd5b613132612b45565b815161313d81612ac6565b8152602082015161314d81612a8c565b602082015260408201516001600160401b0381111561316a575f5ffd5b6131768a82850161301d565b60408301525060608201516001600160401b03811115613194575f5ffd5b6131a08a82850161301d565b60608301525095506131b6905060208701613012565b93506131c460408701613012565b925060608601516001600160401b038111156131de575f5ffd5b6131ea8882890161308b565b92505060808601516001600160401b03811115613205575f5ffd5b6132118882890161308b565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561324e578151865260209586019590910190600101613230565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906132839083018561321e565b8281036060840152612d9d818561321e565b63ffffffff81168114610c25575f5ffd5b8035611fea81613295565b5f82601f8301126132c0575f5ffd5b81356132ce612c2b82613069565b8082825260208201915060208360051b8601019250858311156132ef575f5ffd5b602085015b838110156130e65780358352602092830192016132f4565b5f610100823603121561331d575f5ffd5b613325612b6d565b61332e83612ada565b815261333c60208401612aa0565b602082015261334d60408401612aa0565b604082015261335e60608401612ada565b606082015261336f60808401612aa0565b608082015261338060a084016132a6565b60a082015260c08301356001600160401b0381111561339d575f5ffd5b6133a9368286016132b1565b60c08301525060e08301356001600160401b038111156133c7575f5ffd5b6133d3368286016132b1565b60e08301525092915050565b5f602082840312156133ef575f5ffd5b81356110e281612ac6565b5f5f8335601e1984360301811261340f575f5ffd5b8301803591506001600160401b03821115613428575f5ffd5b6020019150600581901b3603821315612d14575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613463575f5ffd5b81356110e281613295565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b3576106b361346e565b8051611fea81613295565b5f5f604083850312156134b1575f5ffd5b825160208401519092506001600160401b038111156134ce575f5ffd5b830161016081860312156134e0575f5ffd5b6134e8612b90565b6134f182613007565b81526134ff60208301613007565b602082015261351060408301613495565b604082015261352160608301613012565b606082015261353260808301613007565b608082015261354360a08301613012565b60a082015261355460c08301613007565b60c082015261356560e08301613012565b60e08201526135776101008301613012565b61010082015261012082810151908201526101408201516001600160401b038111156135a1575f5ffd5b6135ad8782850161301d565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156135d7575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061362b90830186886135c0565b828103608084015261363e8185876135c0565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136f8575f5ffd5b85356001600160401b0381111561370d575f5ffd5b86016080818903121561371e575f5ffd5b613726612b45565b813561373181612ac6565b8152602082013561374181612a8c565b602082015260408201356001600160401b0381111561375e575f5ffd5b61376a8a828501612c09565b60408301525060608201356001600160401b03811115613788575f5ffd5b6137948a828501612c09565b60608301525095506137aa905060208701612aa0565b93506137b860408701612aa0565b925060608601356001600160401b038111156137d2575f5ffd5b6137de888289016132b1565b92505060808601356001600160401b038111156137f9575f5ffd5b613211888289016132b1565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061383f9083018561321e565b8281036080840152613851818561321e565b98975050505050505050565b600181811c9082168061387157607f821691505b602082108103610b3a57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156138a0575f5ffd5b50604051606081016001600160401b03811182821017156138c3576138c3612b31565b6040528251815260208301516138d881612a8c565b602082015260408301516138eb81612ac6565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906139229083018561321e565b8281036060840152613934818561321e565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f906139739083018561321e565b82810360408401526127f7818561321e565b5f825161399681846020870161294f565b9190910192915050565b5f602082840312156139b0575f5ffd5b81516110e281612ae5565b6001600160a01b0387811682528616602082015260a0604082018190525f906139e790830186886135c0565b82810360608401526139fa8185876135c0565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613a5b610120840182612971565b905060608a0151609f1984830301610100850152613a798282612971565b915050613a91602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613ab38187896135c0565b9050828103608084015261363e8185876135c0565b602081525f6110e26020830184612971565b5f60208284031215613aea575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613b4c575f5ffd5b81516110e281612a8c565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b9990830185612971565b82810360a0840152613bab8185612971565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3490830184612971565b601f8211156111fb57805f5260205f20601f840160051c81016020851015613c005750805b601f840160051c820191505b81811015613c1f575f8155600101613c0c565b5050505050565b81516001600160401b03811115613c3f57613c3f612b31565b613c5381613c4d845461385d565b84613bdb565b6020601f821160018114613c85575f8315613c6e5750848201515b5f19600385901b1c1916600184901b178455613c1f565b5f84815260208120601f198516915b82811015613cb45787850151825560209485019460019092019101613c94565b5084821015613cd157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613cf26040830185612971565b82810360208401526130608185612971565b5f60208284031215613d14575f5ffd5b81516001600160401b03811115613d29575f5ffd5b610c348482850161301d565b5f60ff821660ff8103613d4a57613d4a61346e565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203e164d80a5bf888f120843fbb6a1d20044e55ebe0e054374c174b7a64300b39064736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000004": { @@ -223,25 +223,25 @@ "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000004" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010096": { "contractName": "BridgedERC20", "storage": {}, - "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106e0578063f12506c1146106fd578063f2fde38b14610711575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b5061025661025136600461218c565b610730565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107d2565b60405161026291906121d5565b348015610297575f5ffd5b506102566102a636600461221b565b610862565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b50610256610304366004612245565b610879565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b5061025661089e565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a8366004612283565b6108b6565b005b3480156103ba575f5ffd5b506102566103c936600461221b565b610986565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122b2565b6109a7565b34801561042f575f5ffd5b506103ad6109bb565b348015610443575f5ffd5b506103ad61045236600461221b565b6109cf565b348015610462575f5ffd5b506103ad6104713660046122f8565b610ae9565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a366004612323565b610c26565b3480156104aa575f5ffd5b506102dc610cdb565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed366004612283565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d8c565b348015610526575f5ffd5b506103ad610d9d565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e14565b34801561058e575f5ffd5b506103ed610e27565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e35565b3480156105d3575f5ffd5b506102566105e236600461221b565b610e44565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123e6565b610ec9565b348015610632575f5ffd5b5061025661064136600461221b565b610ed5565b348015610651575f5ffd5b506103ad610660366004612410565b610ee2565b348015610670575f5ffd5b506103ad61067f36600461247e565b61105f565b34801561068f575f5ffd5b506102dc61069e366004612544565b61121f565b3480156106ae575f5ffd5b5060c9546106c8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610262565b3480156106eb575f5ffd5b506065546001600160a01b03166103ed565b348015610708575f5ffd5b50610256611249565b34801561071c575f5ffd5b506103ad61072b366004612283565b611274565b5f6001600160e01b0319821663093e326b60e21b148061076057506001600160e01b0319821663bb86ef9360e01b145b8061077b57506001600160e01b0319821663b8f2e0c560e01b145b8061079657506001600160e01b031982166336372b0760e01b145b806107b157506001600160e01b0319821663a219a02560e01b145b806107cc57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107e19061257b565b80601f016020809104026020016040519081016040528092919081815260200182805461080d9061257b565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f3361086f8185856112e5565b5060019392505050565b5f33610886858285611408565b610891858585611480565b60019150505b9392505050565b5f60026108ad60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036109075760405162461bcd60e51b81526004016108fe906125b3565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610939611634565b6001600160a01b03161461095f5760405162461bcd60e51b81526004016108fe906125ff565b6109688161164f565b604080515f8082526020820190925261098391839190611657565b50565b5f3361086f818585610998838361121f565b6109a2919061264b565b6112e5565b5f6109b38484846117c1565b949350505050565b6109c3611813565b6109cd335f6118a3565b565b6109e360c954610100900460ff1660021490565b15610a015760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0f60c95460ff1690565b60ff1603610a305760405163dfc60d8560e01b815260040160405180910390fd5b610a3a60026118ab565b610a42611249565b15610a605760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610ac757826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610aba91815260200190565b60405180910390a3610ad0565b610ad0336118c1565b610ada838361193d565b50610ae560016118ab565b5050565b610afd60c954610100900460ff1660021490565b15610b1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2960c95460ff1690565b60ff1603610b4a5760405163dfc60d8560e01b815260040160405180910390fd5b610b5460026118ab565b610b5c611249565b15610c095761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610bed575f5ffd5b505af1158015610bff573d5f5f3e3d5ffd5b5050505050610c12565b610c12336118c1565b610c1c3382611a07565b61098360016118ab565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610c6e5760405162461bcd60e51b81526004016108fe906125b3565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610ca0611634565b6001600160a01b031614610cc65760405162461bcd60e51b81526004016108fe906125ff565b610ccf8261164f565b610ae582826001611657565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610d7a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b505f5160206128085f395f51905f5290565b610d94611b44565b6109cd5f611b9e565b60655433906001600160a01b03168114610e0b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108fe565b61098381611b9e565b610e1c611bb7565b6109cd3360016118a3565b5f610e30611634565b905090565b606060ff80546107e19061257b565b5f3381610e51828661121f565b905083811015610eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108fe565b610ebe82868684036112e5565b506001949350505050565b5f6108974684846117c1565b5f3361086f818585611480565b610ef660c954610100900460ff1660021490565b15610f145760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f2e816001610ec9565b6001600160a01b0316336001600160a01b031614610f5f57604051630d85cccf60e11b815260040160405180910390fd5b6002610f6d60c95460ff1690565b60ff1603610f8e5760405163dfc60d8560e01b815260040160405180910390fd5b610f9860026118ab565b61012f546001600160a01b038481169116148015610fc9575061012f60149054906101000a900460ff161515821515145b15610fe75760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161105a60016118ab565b505050565b5f54610100900460ff161580801561107d57505f54600160ff909116105b806110965750303b15801561109657505f5460ff166001145b6110f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108fe565b5f805460ff19166001179055801561111a575f805461ff0019166101001790555b6111248888611c28565b61112e8a8a611c64565b61119f83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9e92505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611213575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e3057505061012f54600160a01b900460ff161590565b61127c611b44565b606580546001600160a01b0383166001600160a01b031990911681179091556112ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166113475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108fe565b6001600160a01b0382166113a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108fe565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611413848461121f565b90505f19811461147a578181101561146d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108fe565b61147a84848484036112e5565b50505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108fe565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108fe565b611551838383611cce565b6001600160a01b0383165f90815260fb6020526040902054818110156115c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108fe565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116279086815260200190565b60405180910390a361147a565b5f5160206128085f395f51905f52546001600160a01b031690565b610983611b44565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561168a5761105a83611d09565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e4575060408051601f3d908101601f191682019092526116e19181019061266a565b60015b6117475760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b5f5160206128085f395f51905f5281146117b55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b5061105a838383611da4565b5f6117cc8484611dc8565b9050811580156117e357506001600160a01b038116155b1561089757604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016108fe565b61182760c954610100900460ff1660021490565b6118445760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610ae5611b44565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118e26033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415801561191f5750611909816001610ec9565b6001600160a01b0316336001600160a01b031614155b15610ae557604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b0382166119935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108fe565b61199e5f8383611cce565b8060fd5f8282546119af919061264b565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108fe565b611a72825f83611cce565b6001600160a01b0382165f90815260fb602052604090205481811015611ae55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108fe565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fe565b606580546001600160a01b031916905561098381611e6a565b611bcb60c954610100900460ff1660021490565b15611be95760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611899565b6001600160a01b0382161580611c3c575080155b80611c4657504681145b15610ae55760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c8c5760405163538ba4f960e01b815260040160405180910390fd5b611c9583611ebb565b61105a82611f19565b5f54610100900460ff16611cc45760405162461bcd60e51b81526004016108fe90612681565b610ae58282611f89565b611ce260c954610100900460ff1660021490565b15611d005760405163bae6e2a960e01b815260040160405180910390fd5b61105a82611fc8565b6001600160a01b0381163b611d765760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b5f5160206128085f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611dad83611ff1565b5f82511180611db95750805b1561105a5761147a8383612030565b6097545f906001600160a01b031680611df457604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e46573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b391906126cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611ee15760405162461bcd60e51b81526004016108fe90612681565b611ee9612055565b611f076001600160a01b03821615611f015781611b9e565b33611b9e565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f3f5760405162461bcd60e51b81526004016108fe90612681565b6001600160401b03461115611f675760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611faf5760405162461bcd60e51b81526004016108fe90612681565b60fe611fbb8382612732565b5060ff61105a8282612732565b306001600160a01b0382160361098357604051630c292c9d60e21b815260040160405180910390fd5b611ffa81611d09565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061089783836040518060600160405280602781526020016128286027913961207b565b5f54610100900460ff166109cd5760405162461bcd60e51b81526004016108fe90612681565b60605f5f856001600160a01b03168560405161209791906127ec565b5f60405180830381855af49150503d805f81146120cf576040519150601f19603f3d011682016040523d82523d5f602084013e6120d4565b606091505b50915091506120e5868383876120ef565b9695505050505050565b6060831561215d5782515f03612156576001600160a01b0385163b6121565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108fe565b50816109b3565b6109b383838151156121725781518083602001fd5b8060405162461bcd60e51b81526004016108fe91906121d5565b5f6020828403121561219c575f5ffd5b81356001600160e01b031981168114610897575f5ffd5b5f5b838110156121cd5781810151838201526020016121b5565b50505f910152565b602081525f82518060208401526121f38160408501602087016121b3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610983575f5ffd5b5f5f6040838503121561222c575f5ffd5b823561223781612207565b946020939093013593505050565b5f5f5f60608486031215612257575f5ffd5b833561226281612207565b9250602084013561227281612207565b929592945050506040919091013590565b5f60208284031215612293575f5ffd5b813561089781612207565b803580151581146122ad575f5ffd5b919050565b5f5f5f606084860312156122c4575f5ffd5b83356001600160401b03811681146122da575f5ffd5b9250602084013591506122ef6040850161229e565b90509250925092565b5f60208284031215612308575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612334575f5ffd5b823561233f81612207565b915060208301356001600160401b03811115612359575f5ffd5b8301601f81018513612369575f5ffd5b80356001600160401b038111156123825761238261230f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123b0576123b061230f565b6040528181528282016020018710156123c7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f7575f5ffd5b823591506124076020840161229e565b90509250929050565b5f5f60408385031215612421575f5ffd5b823561242c81612207565b91506124076020840161229e565b5f5f83601f84011261244a575f5ffd5b5081356001600160401b03811115612460575f5ffd5b602083019150836020828501011115612477575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c031215612496575f5ffd5b89356124a181612207565b985060208a01356124b181612207565b975060408a01356124c181612207565b965060608a0135955060808a013560ff811681146124dd575f5ffd5b945060a08a01356001600160401b038111156124f7575f5ffd5b6125038c828d0161243a565b90955093505060c08a01356001600160401b03811115612521575f5ffd5b61252d8c828d0161243a565b915080935050809150509295985092959850929598565b5f5f60408385031215612555575f5ffd5b823561256081612207565b9150602083013561257081612207565b809150509250929050565b600181811c9082168061258f57607f821691505b6020821081036125ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107cc57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121561267a575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126dc575f5ffd5b815161089781612207565b601f82111561105a57805f5260205f20601f840160051c8101602085101561270c5750805b601f840160051c820191505b8181101561272b575f8155600101612718565b5050505050565b81516001600160401b0381111561274b5761274b61230f565b61275f81612759845461257b565b846126e7565b6020601f821160018114612791575f831561277a5750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b828110156127c057878501518255602094850194600190920191016127a0565b50848210156127dd57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127fd8184602087016121b3565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220dec5585ac9f14965c2d07c5c756ef6669673d1f4505a57458651ee804a9ac76a64736f6c634300081b0033", + "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106d9578063f12506c1146106f6578063f2fde38b1461070a575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612185565b610729565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107cb565b60405161026291906121ce565b348015610297575f5ffd5b506102566102a6366004612214565b61085b565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b5061025661030436600461223e565b610872565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b50610256610895565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a836600461227c565b6108ad565b005b3480156103ba575f5ffd5b506102566103c9366004612214565b61097d565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122ab565b61099e565b34801561042f575f5ffd5b506103ad6109b2565b348015610443575f5ffd5b506103ad610452366004612214565b6109c6565b348015610462575f5ffd5b506103ad6104713660046122f1565b610ae0565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a36600461231c565b610c1d565b3480156104aa575f5ffd5b506102dc610cd2565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed36600461227c565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d83565b348015610526575f5ffd5b506103ad610d94565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e0b565b34801561058e575f5ffd5b506103ed610e1e565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e2c565b3480156105d3575f5ffd5b506102566105e2366004612214565b610e3b565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123df565b610eb5565b348015610632575f5ffd5b50610256610641366004612214565b610ec8565b348015610651575f5ffd5b506103ad610660366004612409565b610ed5565b348015610670575f5ffd5b506103ad61067f366004612477565b611052565b34801561068f575f5ffd5b506102dc61069e36600461253d565b611212565b3480156106ae575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610262565b3480156106e4575f5ffd5b506065546001600160a01b03166103ed565b348015610701575f5ffd5b5061025661123c565b348015610715575f5ffd5b506103ad61072436600461227c565b611267565b5f6001600160e01b0319821663093e326b60e21b148061075957506001600160e01b0319821663bb86ef9360e01b145b8061077457506001600160e01b0319821663b8f2e0c560e01b145b8061078f57506001600160e01b031982166336372b0760e01b145b806107aa57506001600160e01b0319821663a219a02560e01b145b806107c557506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107da90612574565b80601f016020809104026020016040519081016040528092919081815260200182805461080690612574565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050905090565b5f336108688185856112d8565b5060019392505050565b5f3361087f8582856113fb565b61088a858585611473565b506001949350505050565b5f60026108a460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108fe5760405162461bcd60e51b81526004016108f5906125ac565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610930611627565b6001600160a01b0316146109565760405162461bcd60e51b81526004016108f5906125f8565b61095f81611642565b604080515f8082526020820190925261097a9183919061164a565b50565b5f3361086881858561098f8383611212565b6109999190612644565b6112d8565b5f6109aa8484846117b4565b949350505050565b6109ba611810565b6109c4335f6118a0565b565b6109da60c954610100900460ff1660021490565b156109f85760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0660c95460ff1690565b60ff1603610a275760405163dfc60d8560e01b815260040160405180910390fd5b610a3160026118a8565b610a3961123c565b15610a575760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610abe57826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610ab191815260200190565b60405180910390a3610ac7565b610ac7336118be565b610ad18383611936565b50610adc60016118a8565b5050565b610af460c954610100900460ff1660021490565b15610b125760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2060c95460ff1690565b60ff1603610b415760405163dfc60d8560e01b815260040160405180910390fd5b610b4b60026118a8565b610b5361123c565b15610c005761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610be4575f5ffd5b505af1158015610bf6573d5f5f3e3d5ffd5b5050505050610c09565b610c09336118be565b610c133382611a00565b61097a60016118a8565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610c655760405162461bcd60e51b81526004016108f5906125ac565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610c97611627565b6001600160a01b031614610cbd5760405162461bcd60e51b81526004016108f5906125f8565b610cc682611642565b610adc8282600161164a565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610d715760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f5565b505f5160206128015f395f51905f5290565b610d8b611b3d565b6109c45f611b97565b60655433906001600160a01b03168114610e025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108f5565b61097a81611b97565b610e13611bb0565b6109c43360016118a0565b5f610e27611627565b905090565b606060ff80546107da90612574565b5f3381610e488286611212565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108f5565b61088a82868684036112d8565b5f610ec14684846117b4565b9392505050565b5f33610868818585611473565b610ee960c954610100900460ff1660021490565b15610f075760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f21816001610eb5565b6001600160a01b0316336001600160a01b031614610f5257604051630d85cccf60e11b815260040160405180910390fd5b6002610f6060c95460ff1690565b60ff1603610f815760405163dfc60d8560e01b815260040160405180910390fd5b610f8b60026118a8565b61012f546001600160a01b038481169116148015610fbc575061012f60149054906101000a900460ff161515821515145b15610fda5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161104d60016118a8565b505050565b5f54610100900460ff161580801561107057505f54600160ff909116105b806110895750303b15801561108957505f5460ff166001145b6110ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f5565b5f805460ff19166001179055801561110d575f805461ff0019166101001790555b6111178888611c21565b6111218a8a611c5d565b61119283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9792505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611206575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e2757505061012f54600160a01b900460ff161590565b61126f611b3d565b606580546001600160a01b0383166001600160a01b031990911681179091556112a06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b03831661133a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f5565b6001600160a01b03821661139b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f5565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114068484611212565b90505f19811461146d57818110156114605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f5565b61146d84848484036112d8565b50505050565b6001600160a01b0383166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f5565b6001600160a01b0382166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f5565b611544838383611cc7565b6001600160a01b0383165f90815260fb6020526040902054818110156115bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f5565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061161a9086815260200190565b60405180910390a361146d565b5f5160206128015f395f51905f52546001600160a01b031690565b61097a611b3d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561167d5761104d83611d02565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116d7575060408051601f3d908101601f191682019092526116d491810190612663565b60015b61173a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f5565b5f5160206128015f395f51905f5281146117a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f5565b5061104d838383611d9d565b5f6117bf8484611dc1565b905081806117d557506001600160a01b03811615155b8484909161180757604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016108f5565b50509392505050565b61182460c954610100900460ff1660021490565b6118415760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610adc611b3d565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118df6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806119195750611904816001610eb5565b6001600160a01b0316336001600160a01b0316145b610adc57604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108f5565b6119975f8383611cc7565b8060fd5f8282546119a89190612644565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108f5565b611a6b825f83611cc7565b6001600160a01b0382165f90815260fb602052604090205481811015611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108f5565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b606580546001600160a01b031916905561097a81611e63565b611bc460c954610100900460ff1660021490565b15611be25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611896565b6001600160a01b0382161580611c35575080155b80611c3f57504681145b15610adc5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c855760405163538ba4f960e01b815260040160405180910390fd5b611c8e83611eb4565b61104d82611f12565b5f54610100900460ff16611cbd5760405162461bcd60e51b81526004016108f59061267a565b610adc8282611f82565b611cdb60c954610100900460ff1660021490565b15611cf95760405163bae6e2a960e01b815260040160405180910390fd5b61104d82611fc1565b6001600160a01b0381163b611d6f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f5565b5f5160206128015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611da683611fea565b5f82511180611db25750805b1561104d5761146d8383612029565b6097545f906001600160a01b031680611ded57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e3f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa91906126c5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611eda5760405162461bcd60e51b81526004016108f59061267a565b611ee261204e565b611f006001600160a01b03821615611efa5781611b97565b33611b97565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f385760405162461bcd60e51b81526004016108f59061267a565b6001600160401b03461115611f605760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611fa85760405162461bcd60e51b81526004016108f59061267a565b60fe611fb4838261272b565b5060ff61104d828261272b565b306001600160a01b0382160361097a57604051630c292c9d60e21b815260040160405180910390fd5b611ff381611d02565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ec1838360405180606001604052806027815260200161282160279139612074565b5f54610100900460ff166109c45760405162461bcd60e51b81526004016108f59061267a565b60605f5f856001600160a01b03168560405161209091906127e5565b5f60405180830381855af49150503d805f81146120c8576040519150601f19603f3d011682016040523d82523d5f602084013e6120cd565b606091505b50915091506120de868383876120e8565b9695505050505050565b606083156121565782515f0361214f576001600160a01b0385163b61214f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f5565b50816109aa565b6109aa838381511561216b5781518083602001fd5b8060405162461bcd60e51b81526004016108f591906121ce565b5f60208284031215612195575f5ffd5b81356001600160e01b031981168114610ec1575f5ffd5b5f5b838110156121c65781810151838201526020016121ae565b50505f910152565b602081525f82518060208401526121ec8160408501602087016121ac565b601f01601f19169190910160400192915050565b6001600160a01b038116811461097a575f5ffd5b5f5f60408385031215612225575f5ffd5b823561223081612200565b946020939093013593505050565b5f5f5f60608486031215612250575f5ffd5b833561225b81612200565b9250602084013561226b81612200565b929592945050506040919091013590565b5f6020828403121561228c575f5ffd5b8135610ec181612200565b803580151581146122a6575f5ffd5b919050565b5f5f5f606084860312156122bd575f5ffd5b83356001600160401b03811681146122d3575f5ffd5b9250602084013591506122e860408501612297565b90509250925092565b5f60208284031215612301575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561232d575f5ffd5b823561233881612200565b915060208301356001600160401b03811115612352575f5ffd5b8301601f81018513612362575f5ffd5b80356001600160401b0381111561237b5761237b612308565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123a9576123a9612308565b6040528181528282016020018710156123c0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f0575f5ffd5b8235915061240060208401612297565b90509250929050565b5f5f6040838503121561241a575f5ffd5b823561242581612200565b915061240060208401612297565b5f5f83601f840112612443575f5ffd5b5081356001600160401b03811115612459575f5ffd5b602083019150836020828501011115612470575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c03121561248f575f5ffd5b893561249a81612200565b985060208a01356124aa81612200565b975060408a01356124ba81612200565b965060608a0135955060808a013560ff811681146124d6575f5ffd5b945060a08a01356001600160401b038111156124f0575f5ffd5b6124fc8c828d01612433565b90955093505060c08a01356001600160401b0381111561251a575f5ffd5b6125268c828d01612433565b915080935050809150509295985092959850929598565b5f5f6040838503121561254e575f5ffd5b823561255981612200565b9150602083013561256981612200565b809150509250929050565b600181811c9082168061258857607f821691505b6020821081036125a657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107c557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612673575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126d5575f5ffd5b8151610ec181612200565b601f82111561104d57805f5260205f20601f840160051c810160208510156127055750805b601f840160051c820191505b81811015612724575f8155600101612711565b5050505050565b81516001600160401b0381111561274457612744612308565b612758816127528454612574565b846126e0565b6020601f82116001811461278a575f83156127735750848201515b5f19600385901b1c1916600184901b178455612724565b5f84815260208120601f198516915b828110156127b95787850151825560209485019460019092019101612799565b50848210156127d657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127f68184602087016121ac565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220217a3819e82070457abbbadebb33fc33a95ce341341171f04951c38aca59c1ee64736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010097": { "contractName": "BridgedERC721", "storage": {}, - "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c397814610600578063e985e9c51461061d578063ef8c4ae614610665578063f2fde38b14610684575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461253b565b6106a3565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e8565b60405161023691906125a3565b34801561026b575f5ffd5b5061027f61027a3660046125b5565b610779565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e0565b61079f565b005b3480156102c3575f5ffd5b506102b66102d236600461260a565b6108b8565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e9565b34801561033a575f5ffd5b506102b6610349366004612648565b610901565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f610387366004612677565b6109c8565b348015610397575f5ffd5b506102b66109de565b3480156103ab575f5ffd5b506102b66103ba3660046125e0565b6109f2565b3480156103ca575f5ffd5b506102b66103d936600461260a565b610abd565b3480156103e9575f5ffd5b506102b66103f83660046125b5565b610ad7565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f36600461275a565b610bd6565b34801561043f575f5ffd5b50610413610c8b565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125b5565b610d3c565b348015610492575f5ffd5b506104136104a1366004612648565b610d9c565b3480156104b1575f5ffd5b506102b6610e21565b3480156104c5575f5ffd5b506102b6610e32565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea9565b34801561050d575f5ffd5b5061027f610ebc565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610eca565b348015610552575f5ffd5b506102b66105613660046127a6565b610eda565b348015610571575f5ffd5b5061027f6105803660046127d9565b610ee5565b348015610590575f5ffd5b506102b661059f3660046127fa565b610ef1565b3480156105af575f5ffd5b506102536105be3660046125b5565b610f29565b3480156105ce575f5ffd5b5060c9546105e8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610236565b34801561060b575f5ffd5b506065546001600160a01b031661027f565b348015610628575f5ffd5b5061022a610637366004612861565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610670575f5ffd5b506102b661067f3660046128dc565b610f52565b34801561068f575f5ffd5b506102b661069e366004612648565b611104565b5f6001600160e01b0319821663093e326b60e21b14806106d357506001600160e01b031982166377c6257360e11b145b806106e257506106e282611175565b92915050565b606061012d80546106f890612989565b80601f016020809104026020016040519081016040528092919081815260200182805461072490612989565b801561076f5780601f106107465761010080835404028352916020019161076f565b820191905f5260205f20905b81548152906001019060200180831161075257829003601f168201915b5050505050905090565b5f610783826111c4565b505f90815261013160205260409020546001600160a01b031690565b5f6107a982610d3c565b9050806001600160a01b0316836001600160a01b03160361081b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083757506108378133610637565b6108a95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610812565b6108b38383611223565b505050565b6108c23382611291565b6108de5760405162461bcd60e51b8152600401610812906129c1565b6108b383838361130f565b5f60026108f860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109495760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661097b611481565b6001600160a01b0316146109a15760405162461bcd60e51b815260040161081290612a5a565b6109aa8161149c565b604080515f808252602082019092526109c5918391906114a4565b50565b5f6109d484848461160e565b90505b9392505050565b6109e6611660565b6109f0335f6116f0565b565b610a0660c954610100900460ff1660021490565b15610a245760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a3f816001610ee5565b6001600160a01b0316336001600160a01b031614610a7057604051630d85cccf60e11b815260040160405180910390fd5b6002610a7e60c95460ff1690565b60ff1603610a9f5760405163dfc60d8560e01b815260040160405180910390fd5b610aa960026116f8565b610ab3838361170e565b6108b360016116f8565b6108b383838360405180602001604052805f815250610ef1565b610aeb60c954610100900460ff1660021490565b15610b095760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b24816001610ee5565b6001600160a01b0316336001600160a01b031614610b5557604051630d85cccf60e11b815260040160405180910390fd5b6002610b6360c95460ff1690565b60ff1603610b845760405163dfc60d8560e01b815260040160405180910390fd5b610b8e60026116f8565b33610b9883610d3c565b6001600160a01b031614610bbf5760405163358bf3d960e01b815260040160405180910390fd5b610bc882611727565b610bd260016116f8565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610c1e5760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610c50611481565b6001600160a01b031614610c765760405162461bcd60e51b815260040161081290612a5a565b610c7f8261149c565b610bd2828260016114a4565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610d2a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610812565b505f516020612e175f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106e25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f6001600160a01b038216610e055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610812565b506001600160a01b03165f908152610130602052604090205490565b610e296117c9565b6109f05f611823565b60655433906001600160a01b03168114610ea05760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610812565b6109c581611823565b610eb161183c565b6109f03360016116f0565b5f610ec5611481565b905090565b606061012e80546106f890612989565b610bd23383836118ad565b5f6109d746848461160e565b610efb3383611291565b610f175760405162461bcd60e51b8152600401610812906129c1565b610f238484848461197b565b50505050565b61015f54610160546060916106e2916001600160a01b0390911690610f4d856119ae565b611a3d565b5f54610100900460ff1615808015610f7057505f54600160ff909116105b80610f895750303b158015610f8957505f5460ff166001145b610fec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610812565b5f805460ff19166001179055801561100d575f805461ff0019166101001790555b6110178787611a87565b6110218989611ac3565b61109283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611afd92505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110c6117c9565b606580546001600160a01b0383166001600160a01b0319909116811790915561113d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a557506001600160e01b03198216635b5e139f60e01b145b806106e257506301ffc9a760e01b6001600160e01b03198316146106e2565b5f81815261012f60205260409020546001600160a01b03166109c55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125882610d3c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129c83610d3c565b9050806001600160a01b0316846001600160a01b031614806112e357506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806113075750836001600160a01b03166112fc84610779565b6001600160a01b0316145b949350505050565b826001600160a01b031661132282610d3c565b6001600160a01b0316146113485760405162461bcd60e51b815260040161081290612aa6565b6001600160a01b0382166113aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6113b78383836001611b2d565b826001600160a01b03166113ca82610d3c565b6001600160a01b0316146113f05760405162461bcd60e51b815260040161081290612aa6565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e175f395f51905f52546001600160a01b031690565b6109c56117c9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d7576108b383611b6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611531575060408051601f3d908101601f1916820190925261152e91810190612aeb565b60015b6115945760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610812565b5f516020612e175f395f51905f5281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610812565b506108b3838383611c08565b5f6116198484611c2c565b90508115801561163057506001600160a01b038116155b156109d757604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610812565b61167460c954610100900460ff1660021490565b6116915760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bd26117c9565b60c9805460ff191660ff92909216919091179055565b610bd2828260405180602001604052805f815250611cce565b5f61173182610d3c565b9050611740815f846001611b2d565b61174982610d3c565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610812565b606580546001600160a01b03191690556109c581611d00565b61185060c954610100900460ff1660021490565b1561186e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116e6565b816001600160a01b0316836001600160a01b03160361190e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610812565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198684848461130f565b61199284848484611d51565b610f235760405162461bcd60e51b815260040161081290612b02565b60605f6119ba83611e4e565b60010190505f816001600160401b038111156119d8576119d86126bd565b6040519080825280601f01601f191660200182016040528015611a02576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a0c57509392505050565b6060611a53846001600160a01b03166014611f25565b611a5c846119ae565b83604051602001611a6f93929190612b54565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611a9b575080155b80611aa557504681145b15610bd25760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611aeb5760405163538ba4f960e01b815260040160405180910390fd5b611af4836120ba565b6108b382612118565b5f54610100900460ff16611b235760405162461bcd60e51b815260040161081290612bdc565b610bd28282612188565b611b4160c954610100900460ff1660021490565b15611b5f5760405163bae6e2a960e01b815260040160405180910390fd5b611b68836121c9565b610f23565b6001600160a01b0381163b611bda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610812565b5f516020612e175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c11836121f2565b5f82511180611c1d5750805b156108b357610f238383612231565b6097545f906001600160a01b031680611c5857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611caa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113079190612c27565b611cd88383612256565b611ce45f848484611d51565b6108b35760405162461bcd60e51b815260040161081290612b02565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d94903390899088908890600401612c42565b6020604051808303815f875af1925050508015611dce575060408051601f3d908101601f19168201909252611dcb91810190612c74565b60015b611e29573d808015611dfb576040519150601f19603f3d011682016040523d82523d5f602084013e611e00565b606091505b5080515f03611e215760405162461bcd60e51b815260040161081290612b02565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611307565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e8c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611eb8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611ed657662386f26fc10000830492506010015b6305f5e1008310611eee576305f5e100830492506008015b6127108310611f0257612710830492506004015b60648310611f14576064830492506002015b600a83106106e25760010192915050565b60605f611f33836002612ca3565b611f3e906002612cba565b6001600160401b03811115611f5557611f556126bd565b6040519080825280601f01601f191660200182016040528015611f7f576020820181803683370190505b509050600360fc1b815f81518110611f9957611f99612ccd565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fc757611fc7612ccd565b60200101906001600160f81b03191690815f1a9053505f611fe9846002612ca3565b611ff4906001612cba565b90505b600181111561206b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202857612028612ccd565b1a60f81b82828151811061203e5761203e612ccd565b60200101906001600160f81b03191690815f1a90535060049490941c9361206481612ce1565b9050611ff7565b5083156109d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610812565b5f54610100900460ff166120e05760405162461bcd60e51b815260040161081290612bdc565b6120e86123ef565b6121066001600160a01b038216156121005781611823565b33611823565b5060c9805461ff001916610100179055565b5f54610100900460ff1661213e5760405162461bcd60e51b815260040161081290612bdc565b6001600160401b034611156121665760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121ae5760405162461bcd60e51b815260040161081290612bdc565b61012d6121bb8382612d41565b5061012e6108b38282612d41565b306001600160a01b038216036109c557604051630c292c9d60e21b815260040160405180910390fd5b6121fb81611b6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109d78383604051806060016040528060278152602001612e3760279139612415565b6001600160a01b0382166122ac5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610812565b5f81815261012f60205260409020546001600160a01b0316156123115760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b61231e5f83836001611b2d565b5f81815261012f60205260409020546001600160a01b0316156123835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109f05760405162461bcd60e51b815260040161081290612bdc565b60605f5f856001600160a01b0316856040516124319190612dfb565b5f60405180830381855af49150503d805f8114612469576040519150601f19603f3d011682016040523d82523d5f602084013e61246e565b606091505b509150915061247f86838387612489565b9695505050505050565b606083156124f75782515f036124f0576001600160a01b0385163b6124f05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610812565b5081611307565b611307838381511561250c5781518083602001fd5b8060405162461bcd60e51b815260040161081291906125a3565b6001600160e01b0319811681146109c5575f5ffd5b5f6020828403121561254b575f5ffd5b81356109d781612526565b5f5b83811015612570578181015183820152602001612558565b50505f910152565b5f815180845261258f816020860160208601612556565b601f01601f19169290920160200192915050565b602081525f6109d76020830184612578565b5f602082840312156125c5575f5ffd5b5035919050565b6001600160a01b03811681146109c5575f5ffd5b5f5f604083850312156125f1575f5ffd5b82356125fc816125cc565b946020939093013593505050565b5f5f5f6060848603121561261c575f5ffd5b8335612627816125cc565b92506020840135612637816125cc565b929592945050506040919091013590565b5f60208284031215612658575f5ffd5b81356109d7816125cc565b80358015158114612672575f5ffd5b919050565b5f5f5f60608486031215612689575f5ffd5b83356001600160401b038116811461269f575f5ffd5b9250602084013591506126b460408501612663565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e0575f5ffd5b81356001600160401b038111156126f9576126f96126bd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612727576127276126bd565b60405281815283820160200185101561273e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561276b575f5ffd5b8235612776816125cc565b915060208301356001600160401b03811115612790575f5ffd5b61279c858286016126d1565b9150509250929050565b5f5f604083850312156127b7575f5ffd5b82356127c2816125cc565b91506127d060208401612663565b90509250929050565b5f5f604083850312156127ea575f5ffd5b823591506127d060208401612663565b5f5f5f5f6080858703121561280d575f5ffd5b8435612818816125cc565b93506020850135612828816125cc565b92506040850135915060608501356001600160401b03811115612849575f5ffd5b612855878288016126d1565b91505092959194509250565b5f5f60408385031215612872575f5ffd5b823561287d816125cc565b9150602083013561288d816125cc565b809150509250929050565b5f5f83601f8401126128a8575f5ffd5b5081356001600160401b038111156128be575f5ffd5b6020830191508360208285010111156128d5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128f3575f5ffd5b88356128fe816125cc565b9750602089013561290e816125cc565b9650604089013561291e816125cc565b95506060890135945060808901356001600160401b0381111561293f575f5ffd5b61294b8b828c01612898565b90955093505060a08901356001600160401b03811115612969575f5ffd5b6129758b828c01612898565b999c989b5096995094979396929594505050565b600181811c9082168061299d57607f821691505b6020821081036129bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612afb575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b77816009850160208901612556565b600160fe1b6009918401918201528451612b9881600a840160208901612556565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bcf816013840160208801612556565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c37575f5ffd5b81516109d7816125cc565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061247f90830184612578565b5f60208284031215612c84575f5ffd5b81516109d781612526565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106e2576106e2612c8f565b808201808211156106e2576106e2612c8f565b634e487b7160e01b5f52603260045260245ffd5b5f81612cef57612cef612c8f565b505f190190565b601f8211156108b357805f5260205f20601f840160051c81016020851015612d1b5750805b601f840160051c820191505b81811015612d3a575f8155600101612d27565b5050505050565b81516001600160401b03811115612d5a57612d5a6126bd565b612d6e81612d688454612989565b84612cf6565b6020601f821160018114612da0575f8315612d895750848201515b5f19600385901b1c1916600184901b178455612d3a565b5f84815260208120601f198516915b82811015612dcf5787850151825560209485019460019092019101612daf565b5084821015612dec57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e0c818460208701612556565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220468d181b80982a506e91b08e26dcb5d4d9c9294c7c849722ad827999cce1d53f64736f6c634300081b0033", + "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c3978146105f9578063e985e9c514610616578063ef8c4ae61461065e578063f2fde38b1461067d575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612542565b61069c565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e1565b60405161023691906125aa565b34801561026b575f5ffd5b5061027f61027a3660046125bc565b610772565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e7565b610798565b005b3480156102c3575f5ffd5b506102b66102d2366004612611565b6108b1565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e2565b34801561033a575f5ffd5b506102b661034936600461264f565b6108fa565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f61038736600461267e565b6109c1565b348015610397575f5ffd5b506102b66109d5565b3480156103ab575f5ffd5b506102b66103ba3660046125e7565b6109e9565b3480156103ca575f5ffd5b506102b66103d9366004612611565b610ab4565b3480156103e9575f5ffd5b506102b66103f83660046125bc565b610ace565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f366004612761565b610bcd565b34801561043f575f5ffd5b50610413610c82565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125bc565b610d33565b348015610492575f5ffd5b506104136104a136600461264f565b610d93565b3480156104b1575f5ffd5b506102b6610e18565b3480156104c5575f5ffd5b506102b6610e29565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea0565b34801561050d575f5ffd5b5061027f610eb3565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610ec1565b348015610552575f5ffd5b506102b66105613660046127ad565b610ed1565b348015610571575f5ffd5b5061027f6105803660046127e0565b610edc565b348015610590575f5ffd5b506102b661059f366004612801565b610eef565b3480156105af575f5ffd5b506102536105be3660046125bc565b610f27565b3480156105ce575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610236565b348015610604575f5ffd5b506065546001600160a01b031661027f565b348015610621575f5ffd5b5061022a610630366004612868565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610669575f5ffd5b506102b66106783660046128e3565b610f50565b348015610688575f5ffd5b506102b661069736600461264f565b611102565b5f6001600160e01b0319821663093e326b60e21b14806106cc57506001600160e01b031982166377c6257360e11b145b806106db57506106db82611173565b92915050565b606061012d80546106f190612990565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90612990565b80156107685780601f1061073f57610100808354040283529160200191610768565b820191905f5260205f20905b81548152906001019060200180831161074b57829003601f168201915b5050505050905090565b5f61077c826111c2565b505f90815261013160205260409020546001600160a01b031690565b5f6107a282610d33565b9050806001600160a01b0316836001600160a01b0316036108145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083057506108308133610630565b6108a25760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161080b565b6108ac8383611221565b505050565b6108bb338261128f565b6108d75760405162461bcd60e51b815260040161080b906129c8565b6108ac83838361130c565b5f60026108f160c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109425760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661097461147e565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161080b90612a61565b6109a381611499565b604080515f808252602082019092526109be918391906114a1565b50565b5f6109cd84848461160b565b949350505050565b6109dd611667565b6109e7335f6116f7565b565b6109fd60c954610100900460ff1660021490565b15610a1b5760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a36816001610edc565b6001600160a01b0316336001600160a01b031614610a6757604051630d85cccf60e11b815260040160405180910390fd5b6002610a7560c95460ff1690565b60ff1603610a965760405163dfc60d8560e01b815260040160405180910390fd5b610aa060026116ff565b610aaa8383611715565b6108ac60016116ff565b6108ac83838360405180602001604052805f815250610eef565b610ae260c954610100900460ff1660021490565b15610b005760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b1b816001610edc565b6001600160a01b0316336001600160a01b031614610b4c57604051630d85cccf60e11b815260040160405180910390fd5b6002610b5a60c95460ff1690565b60ff1603610b7b5760405163dfc60d8560e01b815260040160405180910390fd5b610b8560026116ff565b33610b8f83610d33565b6001600160a01b031614610bb65760405163358bf3d960e01b815260040160405180910390fd5b610bbf8261172e565b610bc960016116ff565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610c155760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610c4761147e565b6001600160a01b031614610c6d5760405162461bcd60e51b815260040161080b90612a61565b610c7682611499565b610bc9828260016114a1565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610d215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161080b565b505f516020612e1e5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106db5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f6001600160a01b038216610dfc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161080b565b506001600160a01b03165f908152610130602052604090205490565b610e206117d0565b6109e75f61182a565b60655433906001600160a01b03168114610e975760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161080b565b6109be8161182a565b610ea8611843565b6109e73360016116f7565b5f610ebc61147e565b905090565b606061012e80546106f190612990565b610bc93383836118b4565b5f610ee846848461160b565b9392505050565b610ef9338361128f565b610f155760405162461bcd60e51b815260040161080b906129c8565b610f2184848484611982565b50505050565b61015f54610160546060916106db916001600160a01b0390911690610f4b856119b5565b611a44565b5f54610100900460ff1615808015610f6e57505f54600160ff909116105b80610f875750303b158015610f8757505f5460ff166001145b610fea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161080b565b5f805460ff19166001179055801561100b575f805461ff0019166101001790555b6110158787611a8e565b61101f8989611aca565b61109083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b0492505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110a6117d0565b606580546001600160a01b0383166001600160a01b0319909116811790915561113b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a357506001600160e01b03198216635b5e139f60e01b145b806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b5f81815261012f60205260409020546001600160a01b03166109be5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125682610d33565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129a83610d33565b9050806001600160a01b0316846001600160a01b031614806112e157506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806109cd5750836001600160a01b03166112fa84610772565b6001600160a01b031614949350505050565b826001600160a01b031661131f82610d33565b6001600160a01b0316146113455760405162461bcd60e51b815260040161080b90612aad565b6001600160a01b0382166113a75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080b565b6113b48383836001611b34565b826001600160a01b03166113c782610d33565b6001600160a01b0316146113ed5760405162461bcd60e51b815260040161080b90612aad565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e1e5f395f51905f52546001600160a01b031690565b6109be6117d0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d4576108ac83611b74565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561152e575060408051601f3d908101601f1916820190925261152b91810190612af2565b60015b6115915760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161080b565b5f516020612e1e5f395f51905f5281146115ff5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161080b565b506108ac838383611c0f565b5f6116168484611c33565b9050818061162c57506001600160a01b03811615155b8484909161165e57604051632b0d65db60e01b81526001600160401b039092166004830152602482015260440161080b565b50509392505050565b61167b60c954610100900460ff1660021490565b6116985760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bc96117d0565b60c9805460ff191660ff92909216919091179055565b610bc9828260405180602001604052805f815250611cd5565b5f61173882610d33565b9050611747815f846001611b34565b61175082610d33565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161080b565b606580546001600160a01b03191690556109be81611d07565b61185760c954610100900460ff1660021490565b156118755760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116ed565b816001600160a01b0316836001600160a01b0316036119155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080b565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198d84848461130c565b61199984848484611d58565b610f215760405162461bcd60e51b815260040161080b90612b09565b60605f6119c183611e55565b60010190505f816001600160401b038111156119df576119df6126c4565b6040519080825280601f01601f191660200182016040528015611a09576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a1357509392505050565b6060611a5a846001600160a01b03166014611f2c565b611a63846119b5565b83604051602001611a7693929190612b5b565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611aa2575080155b80611aac57504681145b15610bc95760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611af25760405163538ba4f960e01b815260040160405180910390fd5b611afb836120c1565b6108ac8261211f565b5f54610100900460ff16611b2a5760405162461bcd60e51b815260040161080b90612be3565b610bc9828261218f565b611b4860c954610100900460ff1660021490565b15611b665760405163bae6e2a960e01b815260040160405180910390fd5b611b6f836121d0565b610f21565b6001600160a01b0381163b611be15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161080b565b5f516020612e1e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c18836121f9565b5f82511180611c245750805b156108ac57610f218383612238565b6097545f906001600160a01b031680611c5f57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd9190612c2e565b611cdf838361225d565b611ceb5f848484611d58565b6108ac5760405162461bcd60e51b815260040161080b90612b09565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d9b903390899088908890600401612c49565b6020604051808303815f875af1925050508015611dd5575060408051601f3d908101601f19168201909252611dd291810190612c7b565b60015b611e30573d808015611e02576040519150601f19603f3d011682016040523d82523d5f602084013e611e07565b606091505b5080515f03611e285760405162461bcd60e51b815260040161080b90612b09565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109cd565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611ebf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611edd57662386f26fc10000830492506010015b6305f5e1008310611ef5576305f5e100830492506008015b6127108310611f0957612710830492506004015b60648310611f1b576064830492506002015b600a83106106db5760010192915050565b60605f611f3a836002612caa565b611f45906002612cc1565b6001600160401b03811115611f5c57611f5c6126c4565b6040519080825280601f01601f191660200182016040528015611f86576020820181803683370190505b509050600360fc1b815f81518110611fa057611fa0612cd4565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fce57611fce612cd4565b60200101906001600160f81b03191690815f1a9053505f611ff0846002612caa565b611ffb906001612cc1565b90505b6001811115612072576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202f5761202f612cd4565b1a60f81b82828151811061204557612045612cd4565b60200101906001600160f81b03191690815f1a90535060049490941c9361206b81612ce8565b9050611ffe565b508315610ee85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161080b565b5f54610100900460ff166120e75760405162461bcd60e51b815260040161080b90612be3565b6120ef6123f6565b61210d6001600160a01b03821615612107578161182a565b3361182a565b5060c9805461ff001916610100179055565b5f54610100900460ff166121455760405162461bcd60e51b815260040161080b90612be3565b6001600160401b0346111561216d5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121b55760405162461bcd60e51b815260040161080b90612be3565b61012d6121c28382612d48565b5061012e6108ac8282612d48565b306001600160a01b038216036109be57604051630c292c9d60e21b815260040160405180910390fd5b61220281611b74565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ee88383604051806060016040528060278152602001612e3e6027913961241c565b6001600160a01b0382166122b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080b565b5f81815261012f60205260409020546001600160a01b0316156123185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6123255f83836001611b34565b5f81815261012f60205260409020546001600160a01b03161561238a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109e75760405162461bcd60e51b815260040161080b90612be3565b60605f5f856001600160a01b0316856040516124389190612e02565b5f60405180830381855af49150503d805f8114612470576040519150601f19603f3d011682016040523d82523d5f602084013e612475565b606091505b509150915061248686838387612490565b9695505050505050565b606083156124fe5782515f036124f7576001600160a01b0385163b6124f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161080b565b50816109cd565b6109cd83838151156125135781518083602001fd5b8060405162461bcd60e51b815260040161080b91906125aa565b6001600160e01b0319811681146109be575f5ffd5b5f60208284031215612552575f5ffd5b8135610ee88161252d565b5f5b8381101561257757818101518382015260200161255f565b50505f910152565b5f815180845261259681602086016020860161255d565b601f01601f19169290920160200192915050565b602081525f610ee8602083018461257f565b5f602082840312156125cc575f5ffd5b5035919050565b6001600160a01b03811681146109be575f5ffd5b5f5f604083850312156125f8575f5ffd5b8235612603816125d3565b946020939093013593505050565b5f5f5f60608486031215612623575f5ffd5b833561262e816125d3565b9250602084013561263e816125d3565b929592945050506040919091013590565b5f6020828403121561265f575f5ffd5b8135610ee8816125d3565b80358015158114612679575f5ffd5b919050565b5f5f5f60608486031215612690575f5ffd5b83356001600160401b03811681146126a6575f5ffd5b9250602084013591506126bb6040850161266a565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e7575f5ffd5b81356001600160401b03811115612700576127006126c4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561272e5761272e6126c4565b604052818152838201602001851015612745575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612772575f5ffd5b823561277d816125d3565b915060208301356001600160401b03811115612797575f5ffd5b6127a3858286016126d8565b9150509250929050565b5f5f604083850312156127be575f5ffd5b82356127c9816125d3565b91506127d76020840161266a565b90509250929050565b5f5f604083850312156127f1575f5ffd5b823591506127d76020840161266a565b5f5f5f5f60808587031215612814575f5ffd5b843561281f816125d3565b9350602085013561282f816125d3565b92506040850135915060608501356001600160401b03811115612850575f5ffd5b61285c878288016126d8565b91505092959194509250565b5f5f60408385031215612879575f5ffd5b8235612884816125d3565b91506020830135612894816125d3565b809150509250929050565b5f5f83601f8401126128af575f5ffd5b5081356001600160401b038111156128c5575f5ffd5b6020830191508360208285010111156128dc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128fa575f5ffd5b8835612905816125d3565b97506020890135612915816125d3565b96506040890135612925816125d3565b95506060890135945060808901356001600160401b03811115612946575f5ffd5b6129528b828c0161289f565b90955093505060a08901356001600160401b03811115612970575f5ffd5b61297c8b828c0161289f565b999c989b5096995094979396929594505050565b600181811c908216806129a457607f821691505b6020821081036129c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612b02575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b7e81600985016020890161255d565b600160fe1b6009918401918201528451612b9f81600a84016020890161255d565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bd681601384016020880161255d565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c3e575f5ffd5b8151610ee8816125d3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906124869083018461257f565b5f60208284031215612c8b575f5ffd5b8151610ee88161252d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106db576106db612c96565b808201808211156106db576106db612c96565b634e487b7160e01b5f52603260045260245ffd5b5f81612cf657612cf6612c96565b505f190190565b601f8211156108ac57805f5260205f20601f840160051c81016020851015612d225750805b601f840160051c820191505b81811015612d41575f8155600101612d2e565b5050505050565b81516001600160401b03811115612d6157612d616126c4565b612d7581612d6f8454612990565b84612cfd565b6020601f821160018114612da7575f8315612d905750848201515b5f19600385901b1c1916600184901b178455612d41565b5f84815260208120601f198516915b82811015612dd65787850151825560209485019460019092019101612db6565b5084821015612df357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e1381846020870161255d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208e7f20477658f6c21c4be2af9744b613a47f16bf810f8e2ba3e96632cba2471a64736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010098": { "contractName": "BridgedERC1155", "storage": {}, - "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c39781461056f578063e985e9c51461058c578063ef8c4ae6146105d4578063f242432a146105f3578063f2fde38b14610612575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b610631565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106cb565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e61070a565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610797565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b61082a565b005b3480156102fa575f5ffd5b5061023a610876565b34801561030e575f5ffd5b506102ed61031d366004612970565b61088e565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b610955565b348015610383575f5ffd5b506102ed61096b565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b61097f565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a9e565b3480156103ec575f5ffd5b50610208610b57565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c09565b348015610434575f5ffd5b506102ed610c1a565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c91565b34801561047c575f5ffd5b50610341610ca4565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610cb2565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cc0565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610ccb565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd7565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da9565b34801561053d575f5ffd5b5060c954610557906201000090046001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561057a575f5ffd5b506065546001600160a01b0316610341565b348015610597575f5ffd5b5061023a6105a6366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105df575f5ffd5b506102ed6105ee366004612cf1565b610eed565b3480156105fe575f5ffd5b506102ed61060d366004612d9e565b61106d565b34801561061d575f5ffd5b506102ed61062c366004612970565b6110b2565b5f6001600160a01b0383166106a05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106fb57506001600160e01b031982166377c6257360e11b145b806106c557506106c582611123565b610162805461071890612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612df5565b801561078f5780601f106107665761010080835404028352916020019161078f565b820191905f5260205f20905b81548152906001019060200180831161077257829003601f168201915b505050505081565b606061012f80546107a790612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390612df5565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b50505050509050919050565b6001600160a01b038516331480610846575061084685336105a6565b6108625760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611172565b5050505050565b5f600261088560c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108d65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b031661090861130d565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161069790612ec7565b61093781611328565b604080515f8082526020820190925261095291839190611330565b50565b5f61096184848461149a565b90505b9392505050565b6109736114ec565b61097d335f61157c565b565b606081518351146109e45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610697565b5f83516001600160401b038111156109fe576109fe61277e565b604051908082528060200260200182016040528015610a27578160200160208202803683370190505b5090505f5b8451811015610a9657610a71858281518110610a4a57610a4a612f13565b6020026020010151858381518110610a6457610a64612f13565b6020026020010151610631565b828281518110610a8357610a83612f13565b6020908102919091010152600101610a2c565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610ae65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610b1861130d565b6001600160a01b031614610b3e5760405162461bcd60e51b815260040161069790612ec7565b610b4782611328565b610b5382826001611330565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bf65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610697565b505f5160206134ec5f395f51905f525b90565b610c11611580565b61097d5f6115da565b60655433906001600160a01b03168114610c885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610697565b610952816115da565b610c996115f3565b61097d33600161157c565b5f610cad61130d565b905090565b610161805461071890612df5565b610b53338383611664565b5f61096446848461149a565b610ceb60c954610100900460ff1660021490565b15610d095760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d25816001610ccb565b6001600160a01b0316336001600160a01b031614610d5657604051630d85cccf60e11b815260040160405180910390fd5b6002610d6460c95460ff1690565b60ff1603610d855760405163dfc60d8560e01b815260040160405180910390fd5b610d8f6002611744565b610d9a33848461175a565b610da46001611744565b505050565b610dbd60c954610100900460ff1660021490565b15610ddb5760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df7816001610ccb565b6001600160a01b0316336001600160a01b031614610e2857604051630d85cccf60e11b815260040160405180910390fd5b6002610e3660c95460ff1690565b60ff1603610e575760405163dfc60d8560e01b815260040160405180910390fd5b610e616002611744565b610edb868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118ee915050565b610ee56001611744565b505050505050565b5f54610100900460ff1615808015610f0b57505f54600160ff909116105b80610f245750303b158015610f2457505f5460ff166001145b610f875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b5f805460ff191660011790558015610fa8575f805461ff0019166101001790555b610fb28787611a70565b610fbc8989611aac565b610fdd610fd8888860405180602001604052805f815250611ae6565b611b30565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100d858783612f6b565b5061016261101c838583612f6b565b508015611062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b038516331480611089575061108985336105a6565b6110a55760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611b5f565b6110ba611580565b606580546001600160a01b0383166001600160a01b031990911681179091556110eb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115357506001600160e01b031982166303a24d0760e21b145b806106c557506301ffc9a760e01b6001600160e01b03198316146106c5565b81518351146111935760405162461bcd60e51b815260040161069790613024565b6001600160a01b0384166111b95760405162461bcd60e51b81526004016106979061306c565b336111c8818787878787611c8e565b5f5b84518110156112a7575f8582815181106111e6576111e6612f13565b602002602001015190505f85838151811061120357611203612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112545760405162461bcd60e51b8152600401610697906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129390849061310f565b9091555050600190930192506111ca915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f7929190613122565b60405180910390a4610ee5818787878787611cce565b5f5160206134ec5f395f51905f52546001600160a01b031690565b610952611580565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136357610da483611e28565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bd575060408051601f3d908101601f191682019092526113ba9181019061314f565b60015b6114205760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610697565b5f5160206134ec5f395f51905f52811461148e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610697565b50610da4838383611ec3565b5f6114a58484611eed565b9050811580156114bc57506001600160a01b038116155b1561096457604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610697565b61150060c954610100900460ff1660021490565b61151d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b535b6033546001600160a01b0316331461097d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b606580546001600160a01b031916905561095281611f97565b61160760c954610100900460ff1660021490565b156116255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611572565b816001600160a01b0316836001600160a01b0316036116d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610697565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610697565b335f6117c784611fe8565b90505f6117d384611fe8565b90506117f183875f858560405180602001604052805f815250611c8e565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118705760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610697565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b03841661194e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610697565b815183511461196f5760405162461bcd60e51b815260040161069790613024565b3361197e815f87878787611c8e565b5f5b8451811015611a0a5783818151811061199b5761199b612f13565b602002602001015161012d5f8784815181106119b9576119b9612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119fd919061310f565b9091555050600101611980565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a5a929190613122565b60405180910390a461086f815f87878787611cce565b6001600160a01b0382161580611a84575080155b80611a8e57504681145b15610b535760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611ad45760405163538ba4f960e01b815260040160405180910390fd5b611add83612031565b610da48261208f565b6060611afc846001600160a01b031660146120ff565b611b0584612294565b83604051602001611b1893929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b565760405162461bcd60e51b8152600401610697906131ee565b61095281612323565b6001600160a01b038416611b855760405162461bcd60e51b81526004016106979061306c565b335f611b9085611fe8565b90505f611b9c85611fe8565b9050611bac838989858589611c8e565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bef5760405162461bcd60e51b8152600401610697906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c2e90849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611062848a8a8a8a8a612352565b611ca260c954610100900460ff1660021490565b15611cc05760405163bae6e2a960e01b815260040160405180910390fd5b611cc98461240c565b610ee5565b6001600160a01b0384163b15610ee55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d129089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d4c575060408051601f3d908101601f19168201909252611d4991810190613296565b60015b611df857611d586132b1565b806308c379a003611d915750611d6c6132c9565b80611d775750611d93565b8060405162461bcd60e51b81526004016106979190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610697565b6001600160e01b0319811663bc197c8160e01b146118e55760405162461bcd60e51b815260040161069790613343565b6001600160a01b0381163b611e955760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610697565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ecc83612435565b5f82511180611ed85750805b15610da457611ee78383612474565b50505050565b6097545f906001600160a01b031680611f1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f919061338b565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610697906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115da565b336115da565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610697906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b5083156109645760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610697565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610697906131ee565b61095281612596565b6001600160a01b0384163b15610ee55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d586132b1565b6001600160e01b0319811663f23a6e6160e01b146118e55760405162461bcd60e51b815260040161069790613343565b306001600160a01b0382160361095257604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e28565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610964838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff1661097d5760405162461bcd60e51b8152600401610697906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106c55760010192915050565b61012f610b538282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610697565b5081611f8f565b611f8f8383815115611d775781518083602001fd5b6001600160a01b0381168114610952575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b031981168114610952575f5ffd5b5f602082840312156126fd575f5ffd5b8135610964816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610964602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b81356109648161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f6109646020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da457805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b8181101561086f575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b17835561086f565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106c5576106c56130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610964816126d8565b5f60033d1115610c065760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a9660208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b81516109648161269a565b80820281158282048414176106c5576106c56130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b17845561086f565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202ef181e0a4e8fc7bc737d6a40bdb2405e49c769d7f124fa0298408a46d7bc05a64736f6c634300081b0033", + "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c397814610568578063e985e9c514610585578063ef8c4ae6146105cd578063f242432a146105ec578063f2fde38b1461060b575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b61062a565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106c4565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e610703565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610790565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b610823565b005b3480156102fa575f5ffd5b5061023a61086f565b34801561030e575f5ffd5b506102ed61031d366004612970565b610887565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b61094e565b348015610383575f5ffd5b506102ed610962565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b610976565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a95565b3480156103ec575f5ffd5b50610208610b4e565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c00565b348015610434575f5ffd5b506102ed610c11565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c88565b34801561047c575f5ffd5b50610341610c9b565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610ca9565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cb7565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610cc2565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd5565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da7565b34801561053d575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610212565b348015610573575f5ffd5b506065546001600160a01b0316610341565b348015610590575f5ffd5b5061023a61059f366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105d8575f5ffd5b506102ed6105e7366004612cf1565b610eeb565b3480156105f7575f5ffd5b506102ed610606366004612d9e565b61106b565b348015610616575f5ffd5b506102ed610625366004612970565b6110b0565b5f6001600160a01b0383166106995760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106f457506001600160e01b031982166377c6257360e11b145b806106be57506106be82611121565b610162805461071190612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461073d90612df5565b80156107885780601f1061075f57610100808354040283529160200191610788565b820191905f5260205f20905b81548152906001019060200180831161076b57829003601f168201915b505050505081565b606061012f80546107a090612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107cc90612df5565b80156108175780601f106107ee57610100808354040283529160200191610817565b820191905f5260205f20905b8154815290600101906020018083116107fa57829003601f168201915b50505050509050919050565b6001600160a01b03851633148061083f575061083f853361059f565b61085b5760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611170565b5050505050565b5f600261087e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108cf5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b031661090161130b565b6001600160a01b0316146109275760405162461bcd60e51b815260040161069090612ec7565b61093081611326565b604080515f8082526020820190925261094b9183919061132e565b50565b5f61095a848484611498565b949350505050565b61096a6114f4565b610974335f611584565b565b606081518351146109db5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610690565b5f83516001600160401b038111156109f5576109f561277e565b604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b5090505f5b8451811015610a8d57610a68858281518110610a4157610a41612f13565b6020026020010151858381518110610a5b57610a5b612f13565b602002602001015161062a565b828281518110610a7a57610a7a612f13565b6020908102919091010152600101610a23565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610add5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610b0f61130b565b6001600160a01b031614610b355760405162461bcd60e51b815260040161069090612ec7565b610b3e82611326565b610b4a8282600161132e565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610690565b505f5160206134ec5f395f51905f525b90565b610c08611588565b6109745f6115e2565b60655433906001600160a01b03168114610c7f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610690565b61094b816115e2565b610c906115fb565b610974336001611584565b5f610ca461130b565b905090565b610161805461071190612df5565b610b4a33838361166c565b5f610cce468484611498565b9392505050565b610ce960c954610100900460ff1660021490565b15610d075760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d23816001610cc2565b6001600160a01b0316336001600160a01b031614610d5457604051630d85cccf60e11b815260040160405180910390fd5b6002610d6260c95460ff1690565b60ff1603610d835760405163dfc60d8560e01b815260040160405180910390fd5b610d8d600261174c565b610d98338484611762565b610da2600161174c565b505050565b610dbb60c954610100900460ff1660021490565b15610dd95760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df5816001610cc2565b6001600160a01b0316336001600160a01b031614610e2657604051630d85cccf60e11b815260040160405180910390fd5b6002610e3460c95460ff1690565b60ff1603610e555760405163dfc60d8560e01b815260040160405180910390fd5b610e5f600261174c565b610ed9868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118f6915050565b610ee3600161174c565b505050505050565b5f54610100900460ff1615808015610f0957505f54600160ff909116105b80610f225750303b158015610f2257505f5460ff166001145b610f855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610690565b5f805460ff191660011790558015610fa6575f805461ff0019166101001790555b610fb08787611a78565b610fba8989611ab4565b610fdb610fd6888860405180602001604052805f815250611aee565b611b38565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100b858783612f6b565b5061016261101a838583612f6b565b508015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b0385163314806110875750611087853361059f565b6110a35760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611b67565b6110b8611588565b606580546001600160a01b0383166001600160a01b031990911681179091556110e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115157506001600160e01b031982166303a24d0760e21b145b806106be57506301ffc9a760e01b6001600160e01b03198316146106be565b81518351146111915760405162461bcd60e51b815260040161069090613024565b6001600160a01b0384166111b75760405162461bcd60e51b81526004016106909061306c565b336111c6818787878787611c96565b5f5b84518110156112a5575f8582815181106111e4576111e4612f13565b602002602001015190505f85838151811061120157611201612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112525760405162461bcd60e51b8152600401610690906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129190849061310f565b9091555050600190930192506111c8915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f5929190613122565b60405180910390a4610ee3818787878787611cd6565b5f5160206134ec5f395f51905f52546001600160a01b031690565b61094b611588565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136157610da283611e30565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bb575060408051601f3d908101601f191682019092526113b89181019061314f565b60015b61141e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610690565b5f5160206134ec5f395f51905f52811461148c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610690565b50610da2838383611ecb565b5f6114a38484611ef5565b905081806114b957506001600160a01b03811615155b848490916114eb57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610690565b50509392505050565b61150860c954610100900460ff1660021490565b6115255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b4a5b6033546001600160a01b031633146109745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610690565b606580546001600160a01b031916905561094b81611f97565b61160f60c954610100900460ff1660021490565b1561162d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161157a565b816001600160a01b0316836001600160a01b0316036116df5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610690565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117c45760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610690565b335f6117cf84611fe8565b90505f6117db84611fe8565b90506117f983875f858560405180602001604052805f815250611c96565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118785760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610690565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0384166119565760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610690565b81518351146119775760405162461bcd60e51b815260040161069090613024565b33611986815f87878787611c96565b5f5b8451811015611a12578381815181106119a3576119a3612f13565b602002602001015161012d5f8784815181106119c1576119c1612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611a05919061310f565b9091555050600101611988565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a62929190613122565b60405180910390a4610868815f87878787611cd6565b6001600160a01b0382161580611a8c575080155b80611a9657504681145b15610b4a5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611adc5760405163538ba4f960e01b815260040160405180910390fd5b611ae583612031565b610da28261208f565b6060611b04846001600160a01b031660146120ff565b611b0d84612294565b83604051602001611b2093929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b5e5760405162461bcd60e51b8152600401610690906131ee565b61094b81612323565b6001600160a01b038416611b8d5760405162461bcd60e51b81526004016106909061306c565b335f611b9885611fe8565b90505f611ba485611fe8565b9050611bb4838989858589611c96565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bf75760405162461bcd60e51b8152600401610690906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c3690849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611060848a8a8a8a8a612352565b611caa60c954610100900460ff1660021490565b15611cc85760405163bae6e2a960e01b815260040160405180910390fd5b611cd18461240c565b610ee3565b6001600160a01b0384163b15610ee35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d1a9089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d54575060408051601f3d908101601f19168201909252611d5191810190613296565b60015b611e0057611d606132b1565b806308c379a003611d995750611d746132c9565b80611d7f5750611d9b565b8060405162461bcd60e51b81526004016106909190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610690565b6001600160e01b0319811663bc197c8160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b6001600160a01b0381163b611e9d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610690565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ed483612435565b5f82511180611ee05750805b15610da257611eef8383612474565b50505050565b6097545f906001600160a01b031680611f2157604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f73573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095a919061338b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610690906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115e2565b336115e2565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610690906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b508315610cce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610690565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610690906131ee565b61094b81612596565b6001600160a01b0384163b15610ee35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d606132b1565b6001600160e01b0319811663f23a6e6160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b306001600160a01b0382160361094b57604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e30565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610cce838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff166109745760405162461bcd60e51b8152600401610690906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106be5760010192915050565b61012f610b4a8282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610690565b508161095a565b61095a8383815115611d7f5781518083602001fd5b6001600160a01b038116811461094b575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b03198116811461094b575f5ffd5b5f602082840312156126fd575f5ffd5b8135610cce816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610cce602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b8135610cce8161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f610cce6020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da257805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b81811015610868575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b178355610868565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106be576106be6130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610cce816126d8565b5f60033d1115610bfd5760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a8d60208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b8151610cce8161269a565b80820281158282048414176106be576106be6130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b178455610868565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c61a0d82a4e192122d117e9aa6be00523577e93729686599c4b7a65f3e3ad5c264736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000000005": { @@ -249,7 +249,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052f578063f09a40161461054c578063f2fde38b1461056b578063fe9fbb801461058a575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e336600461351b565b6105b8565b005b3480156101f5575f5ffd5b506101fe61065e565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d36600461354e565b610676565b34801561023d575f5ffd5b5061027161024c36600461358e565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135a8565b61068c565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135c3565b61075c565b348015610309575f5ffd5b506102c7610318366004613604565b6107a3565b348015610328575f5ffd5b506101e86107b9565b6101e861033f366004613714565b6107cd565b34801561034f575f5ffd5b5061036361035e3660046135c3565b610886565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108cc565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613760565b61097d565b3480156103cf575f5ffd5b506101e8610989565b3480156103e3575f5ffd5b506101e861099a565b3480156103f7575f5ffd5b506101e8610a11565b34801561040b575f5ffd5b506102c7610a24565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b366004613777565b610a32565b34801561045b575f5ffd5b5061036361046a36600461380c565b610b0d565b34801561047a575f5ffd5b50610363610489366004613848565b610b78565b348015610499575f5ffd5b506102c76104a8366004613878565b610ba4565b3480156104b8575f5ffd5b506101e86104c7366004613777565b610bb0565b3480156104d7575f5ffd5b506104eb6104e6366004613848565b610bc6565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c954610271906201000090046001600160401b031681565b34801561053a575f5ffd5b506065546001600160a01b03166102c7565b348015610557575f5ffd5b506101e8610566366004613899565b610c5a565b348015610576575f5ffd5b506101e86105853660046135a8565b610d69565b348015610595575f5ffd5b506101fe6105a43660046135a8565b60fc6020525f908152604090205460ff1681565b6105c0610dda565b6001600160a01b0382165f90815260fc602052604090205481151560ff909116151503610600576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066d60c95460ff1690565b60ff1614905090565b5f6106818383610e34565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106dd5760405162461bcd60e51b81526004016106d4906138d0565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661070f610e96565b6001600160a01b0316146107355760405162461bcd60e51b81526004016106d49061391c565b61073e81610eb1565b604080515f8082526020820190925261075991839190610eb9565b50565b5f8180820361077e5760405163ec73295960e01b815260040160405180910390fd5b5f61078a878787610b78565b9050836107973083610e34565b14979650505050505050565b5f6107af848484611023565b90505b9392505050565b6107c1611075565b6107cb335f611105565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108155760405162461bcd60e51b81526004016106d4906138d0565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610847610e96565b6001600160a01b03161461086d5760405162461bcd60e51b81526004016106d49061391c565b61087682610eb1565b61088282826001610eb9565b5050565b335f90815260fc602052604081205460ff166108b557604051631f67751f60e01b815260040160405180910390fd5b6108c18585858561111e565b90505b949350505050565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000005161461096b5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d4565b505f516020613eb05f395f51905f5290565b5f610686338384611200565b610991610dda565b6107cb5f6112d9565b60655433906001600160a01b03168114610a085760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d4565b610759816112d9565b610a196112f2565b6107cb336001611105565b5f610a2d610e96565b905090565b5f610a4760c954610100900460ff1660021490565b15610a655760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7360c95460ff1690565b60ff1603610a945760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610ab187878787876001611363565b90505f5b8151811015610af457610ae0828281518110610ad357610ad3613968565b602002602001015161181f565b610aea9084613990565b9250600101610ab5565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b59565b5f6107b2468484611023565b610bbe85858585855f611363565b505050505050565b5f5f826001600160401b03165f03610c02576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c04565b825b91506001600160401b03821615610c52575f610c21868685610b78565b9050610c2d3082610e34565b91505f829003610c505760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7857505f54600160ff909116105b80610c915750303b158015610c9157505f5460ff166001145b610cf45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d4565b5f805460ff191660011790558015610d15575f805461ff0019166101001790555b610d1f8383611963565b8015610d64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d71610dda565b606580546001600160a01b0383166001600160a01b03199091168117909155610da26033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d4565b5f826001600160a01b038116610e5d5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7f5760405163ec73295960e01b815260040160405180910390fd5b5f610e8b468787610b0d565b549695505050505050565b5f516020613eb05f395f51905f52546001600160a01b031690565b610759610dda565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eec57610d648361199d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f46575060408051601f3d908101601f19168201909252610f43918101906139a3565b60015b610fa95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d4565b5f516020613eb05f395f51905f5281146110175760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d4565b50610d64838383611a38565b5f61102e8484611a62565b90508115801561104557506001600160a01b038116155b156107b257604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106d4565b61108960c954610100900460ff1660021490565b6110a65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f61112a858585610b78565b9050611137308284611200565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a1576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f0929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112295760405163538ba4f960e01b815260040160405180910390fd5b835f81900361124b5760405163ec73295960e01b815260040160405180910390fd5b835f81900361126d5760405163ec73295960e01b815260040160405180910390fd5b611278468888610b0d565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075981611b04565b61130660c954610100900460ff1660021490565b156113245760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016110fb565b6060856001600160a01b03811661138d5760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113af5760405163ec73295960e01b815260040160405180910390fd5b5f6113bc86880188613a77565b905080515f036113df57604051630b92daef60e21b815260040160405180910390fd5b5f600182516113ee9190613bbd565b6001600160401b038111156114055761140561363d565b60405190808252806020026020018201604052801561142e578160200160208202803683370190505b50905085156114c15781516001600160401b038111156114505761145061363d565b6040519080825280602002602001820160405280156114bd57816020015b6114aa6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161146e5790505b5094505b8a8a8a805f6114e2856d7369676e616c5f7365727669636560901b836107a3565b9050306001600160a01b0382160361150d57604051637556223560e11b815260040160405180910390fd5b6115456040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117d3578b818151811061156557611565613968565b602002602001015194505f5b818110156115cf57855f01516001600160401b03168c828151811061159857611598613968565b60200260200101516001600160401b0316036115c7576040516348362c2760e11b815260040160405180910390fd5b600101611571565b506115de8a8a8a8a898b611b55565b93508a5181149150811561161e5784516001600160401b03164614611616576040516338bf822760e21b815260040160405180910390fd5b3095506116c9565b845f01518b828151811061163457611634613968565b6001600160401b0392831660209182029290920101528551161580611662575084516001600160401b031646145b1561168057604051637556223560e11b815260040160405180910390fd5b845161169e906d7369676e616c5f7365727669636560901b5f6107a3565b9550306001600160a01b038716036116c957604051637556223560e11b815260040160405180910390fd5b608085015151151592508f1561175d576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561173c5761173c613bd0565b8152508f828151811061175157611751613968565b60200260200101819052505b6117b88a8461178c577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117ae565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b78565b604086015186519b509699509750949550879460010161154a565b508515806117ea57506117e63088610e34565b8614155b156118085760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561183957611839613bd0565b148061185a575060028360c00151600381111561185857611858613bd0565b145b905080801561186a575082608001515b801561187857508260a00151155b156118ba57600191506118b883604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f015161111e565b505b5f60038460c0015160038111156118d3576118d3613bd0565b14806118f4575060018460c0015160038111156118f2576118f2613bd0565b145b9050808015611910575083608001518061191057508360a00151155b1561195c57611920600184613990565b925061195a84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf58660600151876020015161111e565b505b5050919050565b806001600160a01b03811661198b5760405163538ba4f960e01b815260040160405180910390fd5b61199483611bf4565b610d6482611c52565b6001600160a01b0381163b611a0a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d4565b5f516020613eb05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4183611cc2565b5f82511180611a4d5750805b15610d6457611a5c8383611d01565b50505050565b6097545f906001600160a01b031680611a8e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190613be4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b7e5760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba05760405163ec73295960e01b815260040160405180910390fd5b855f819003611bc25760405163ec73295960e01b815260040160405180910390fd5b611be6866040015186611bd68d8d8d610b0d565b8a8a608001518b60a00151611d26565b9a9950505050505050505050565b5f54610100900460ff16611c1a5760405162461bcd60e51b81526004016106d490613bff565b611c22611e33565b611c406001600160a01b03821615611c3a57816112d9565b336112d9565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c785760405162461bcd60e51b81526004016106d490613bff565b6001600160401b03461115611ca05760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611ccb8161199d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b28383604051806060016040528060278152602001613ed060279139611e59565b5f82515f14611dce576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d6a90603401604051602081830303815290604052858a611ecd565b905080515f03611d8d57604051630414cd5b60e31b815260040160405180910390fd5b5f611d9782611ee6565b9050611dbc81600281518110611daf57611daf613968565b6020026020010151611ef9565b611dc590613c4a565b92505050611dd1565b50855b5f611e0886604051602001611de891815260200190565b60408051601f19818403018152919052611e0187611f78565b8585611f8b565b905080611e2857604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107cb5760405162461bcd60e51b81526004016106d490613bff565b60605f5f856001600160a01b031685604051611e759190613c92565b5f60405180830381855af49150503d805f8114611ead576040519150601f19603f3d011682016040523d82523d5f602084013e611eb2565b606091505b5091509150611ec386838387611fa4565b9695505050505050565b60605f611ed98561201c565b9050610b0481858561204e565b6060610686611ef4836128bc565b61290e565b60605f5f5f611f0785612a8c565b919450925090505f816001811115611f2157611f21613bd0565b14611f3f576040516307fe6cb960e21b815260040160405180910390fd5b611f498284613990565b855114611f6957604051630b8aa6f760e31b815260040160405180910390fd5b610b0485602001518484612d6f565b6060610686611f8683612dff565b612f13565b5f5f611f968661201c565b9050611ec381868686612f6b565b606083156120125782515f0361200b576001600160a01b0385163b61200b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d4565b50816108c4565b6108c48383612f91565b6060818051906020012060405160200161203891815260200190565b6040516020818303038152906040529050919050565b60605f8451116120985760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d4565b5f6120a284612fbb565b90505f6120ae8661309e565b90505f846040516020016120c491815260200190565b60408051601f1981840301815291905290505f805b8451811015612865575f8582815181106120f5576120f5613968565b6020026020010151905084518311156121675760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d4565b825f0361220557805180516020918201206040516121b49261218e92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122005760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d4565b6122fb565b80515160201161228b578051805160209182012060405161222f9261218e92910190815260200190565b6122005760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d4565b8051845160208087019190912082519190920120146122fb5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d4565b61230760106001613990565b8160200151510361249f5784518303612439576123348160200151601081518110611daf57611daf613968565b96505f8751116123ac5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d4565b600186516123ba9190613bbd565b821461242e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d4565b5050505050506107b2565b5f85848151811061244c5761244c613968565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247657612476613968565b60200260200101519050612489816130ff565b9550612496600186613990565b9450505061285c565b600281602001515103612803575f6124b682613123565b90505f815f815181106124cb576124cb613968565b016020015160f81c90505f6124e1600283613cc1565b6124ec906002613ce2565b90505f6124fc848360ff16613146565b90505f6125098a89613146565b90505f612516838361317b565b90508083511461258e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d4565b60ff8516600214806125a3575060ff85166003145b15612743578082511461261e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d4565b6126388760200151600181518110611daf57611daf613968565b9c505f8d51116126b05760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d4565b60018c516126be9190613bbd565b88146127325760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d4565b5050505050505050505050506107b2565b60ff85161580612756575060ff85166001145b1561279557612782876020015160018151811061277557612775613968565b60200260200101516130ff565b995061278e818a613990565b98506127f8565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d4565b50505050505061285c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d4565b506001016120d9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d4565b604080518082019091525f808252602082015281515f036128f057604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61291c85612a8c565b91945092509050600181600181111561293757612937613bd0565b14612955576040516325ce355f60e11b815260040160405180910390fd5b84516129618385613990565b1461297f57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f80825260208201528152602001906001900390816129965790505093505f835b8651811015612a80575f5f612a056040518060400160405280858c5f01516129e99190613bbd565b8152602001858c602001516129fe9190613990565b9052612a8c565b509150915060405180604001604052808383612a219190613990565b8152602001848b60200151612a369190613990565b815250888581518110612a4b57612a4b613968565b6020908102919091010152612a61600185613990565b9350612a6d8183613990565b612a779084613990565b925050506129c1565b50845250919392505050565b5f5f5f835f01515f03612ab257604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612ad4575f60015f9450945094505050612d68565b60b78111612b69575f612ae8608083613bbd565b905080875f015111612b0d576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b395750600160ff1b6001600160f81b03198216105b15612b575760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d68915050565b60bf8111612c47575f612b7d60b783613bbd565b905080875f015111612ba2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bd25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c015760405163babb01dd60e01b815260040160405180910390fd5b612c0b8184613990565b895111612c2b576040516366c9448560e01b815260040160405180910390fd5b612c36836001613990565b975095505f9450612d689350505050565b60f78111612c91575f612c5b60c083613bbd565b905080875f015111612c80576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d68915050565b5f612c9d60f783613bbd565b905080875f015111612cc2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cf25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d215760405163babb01dd60e01b815260040160405180910390fd5b612d2b8184613990565b895111612d4b576040516366c9448560e01b815260040160405180910390fd5b612d56836001613990565b9750955060019450612d689350505050565b9193909250565b6060816001600160401b03811115612d8957612d8961363d565b6040519080825280601f01601f191660200182016040528015612db3576020820181803683370190505b50905081156107b2575f612dc78486613990565b9050602082015f5b84811015612de7578281015182820152602001612dcf565b84811115612df5575f858301525b5050509392505050565b60605f82604051602001612e1591815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6157818181518110612e4457612e44613968565b01602001516001600160f81b0319165f03612e6157600101612e29565b612e6c816020613bbd565b6001600160401b03811115612e8357612e8361363d565b6040519080825280601f01601f191660200182016040528015612ead576020820181803683370190505b5092505f5b835181101561195a578282612ec681613cfb565b935081518110612ed857612ed8613968565b602001015160f81c60f81b848281518110612ef557612ef5613968565b60200101906001600160f81b03191690815f1a905350600101612eb2565b606081516001148015612f3f57506080825f81518110612f3557612f35613968565b016020015160f81c105b15612f48575090565b612f54825160806131fe565b82604051602001612038929190613d13565b919050565b5f6108c184612f7b87868661204e565b8051602091820120825192909101919091201490565b815115612fa15781518083602001fd5b8060405162461bcd60e51b81526004016106d49190613d41565b8051606090806001600160401b03811115612fd857612fd861363d565b60405190808252806020026020018201604052801561301d57816020015b6040805180820190915260608082526020820152815260200190600190039081612ff65790505b5091505f5b8181101561195c57604051806040016040528085838151811061304757613047613968565b6020026020010151815260200161307686848151811061306957613069613968565b6020026020010151611ee6565b81525083828151811061308b5761308b613968565b6020908102919091010152600101613022565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130f4578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130c7565b509295945050505050565b60606020825f01511061311a5761311582611ef9565b610686565b610686826133a3565b606061068661314183602001515f81518110611daf57611daf613968565b61309e565b606082518210613164575060408051602081019091525f8152610686565b6107b283838486516131769190613bbd565b6133b7565b5f5f825184511061318d578251613190565b83515b90505b80821080156131e757508282815181106131af576131af613968565b602001015160f81c60f81b6001600160f81b0319168483815181106131d6576131d6613968565b01602001516001600160f81b031916145b156131f757816001019150613193565b5092915050565b6060603883101561326257604080516001808252818301909252906020820181803683370190505090506132328284613d73565b60f81b815f8151811061324757613247613968565b60200101906001600160f81b03191690815f1a905350610686565b5f60015b6132708186613d8c565b15613296578161327f81613cfb565b925061328f905061010082613d9f565b9050613266565b6132a1826001613990565b6001600160401b038111156132b8576132b861363d565b6040519080825280601f01601f1916602001820160405280156132e2576020820181803683370190505b5092506132ef8483613d73565b6132fa906037613d73565b60f81b835f8151811061330f5761330f613968565b60200101906001600160f81b03191690815f1a905350600190505b81811161339b5761010061333e8284613bbd565b61334a90610100613e91565b6133549087613d8c565b61335e9190613e9c565b60f81b83828151811061337357613373613968565b60200101906001600160f81b03191690815f1a9053508061339381613cfb565b91505061332a565b505092915050565b606061068682602001515f845f0151612d6f565b60608182601f0110156133fd5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b8282840110156134405760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b818301845110156134875760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d4565b6060821580156134a55760405191505f8252602082016040526134ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134de5780518352602092830192016134c6565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610759575f5ffd5b80358015158114612f66575f5ffd5b5f5f6040838503121561352c575f5ffd5b8235613537816134f8565b91506135456020840161350c565b90509250929050565b5f5f6040838503121561355f575f5ffd5b823561356a816134f8565b946020939093013593505050565b80356001600160401b0381168114612f66575f5ffd5b5f5f6040838503121561359f575f5ffd5b61356a83613578565b5f602082840312156135b8575f5ffd5b81356107b2816134f8565b5f5f5f5f608085870312156135d6575f5ffd5b6135df85613578565b9350602085013592506135f460408601613578565b9396929550929360600135925050565b5f5f5f60608486031215613616575f5ffd5b61361f84613578565b9250602084013591506136346040850161350c565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156136735761367361363d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a1576136a161363d565b604052919050565b5f82601f8301126136b8575f5ffd5b81356001600160401b038111156136d1576136d161363d565b6136e4601f8201601f1916602001613679565b8181528460208386010111156136f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613725575f5ffd5b8235613730816134f8565b915060208301356001600160401b0381111561374a575f5ffd5b613756858286016136a9565b9150509250929050565b5f60208284031215613770575f5ffd5b5035919050565b5f5f5f5f5f6080868803121561378b575f5ffd5b61379486613578565b945060208601356137a4816134f8565b93506040860135925060608601356001600160401b038111156137c5575f5ffd5b8601601f810188136137d5575f5ffd5b80356001600160401b038111156137ea575f5ffd5b8860208284010111156137fb575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561381e575f5ffd5b61382784613578565b92506020840135613837816134f8565b929592945050506040919091013590565b5f5f5f6060848603121561385a575f5ffd5b61386384613578565b92506020840135915061363460408501613578565b5f5f60408385031215613889575f5ffd5b823591506135456020840161350c565b5f5f604083850312156138aa575f5ffd5b82356138b5816134f8565b915060208301356138c5816134f8565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106865761068661397c565b5f602082840312156139b3575f5ffd5b5051919050565b5f6001600160401b038211156139d2576139d261363d565b5060051b60200190565b803560048110612f66575f5ffd5b5f82601f8301126139f9575f5ffd5b8135613a0c613a07826139ba565b613679565b8082825260208201915060208360051b860101925085831115613a2d575f5ffd5b602085015b83811015613a6d5780356001600160401b03811115613a4f575f5ffd5b613a5e886020838a01016136a9565b84525060209283019201613a32565b5095945050505050565b5f60208284031215613a87575f5ffd5b81356001600160401b03811115613a9c575f5ffd5b8201601f81018413613aac575f5ffd5b8035613aba613a07826139ba565b8082825260208201915060208360051b850101925086831115613adb575f5ffd5b602084015b83811015611e285780356001600160401b03811115613afd575f5ffd5b850160c0818a03601f19011215613b12575f5ffd5b613b1a613651565b613b2660208301613578565b8152613b3460408301613578565b602082015260608201356040820152613b4f608083016139dc565b606082015260a08201356001600160401b03811115613b6c575f5ffd5b613b7b8b6020838601016139ea565b60808301525060c08201356001600160401b03811115613b99575f5ffd5b613ba88b6020838601016139ea565b60a08301525084525060209283019201613ae0565b818103818111156106865761068661397c565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bf4575f5ffd5b81516107b2816134f8565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c6a575f198160200360031b1b821691505b50919050565b5f5b83811015613c8a578181015183820152602001613c72565b50505f910152565b5f8251613ca3818460208701613c70565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cd357613cd3613cad565b8060ff84160691505092915050565b60ff82811682821603908111156106865761068661397c565b5f60018201613d0c57613d0c61397c565b5060010190565b5f8351613d24818460208801613c70565b835190830190613d38818360208801613c70565b01949350505050565b602081525f8251806020840152613d5f816040850160208701613c70565b601f01601f19169190910160400192915050565b60ff81811683821601908111156106865761068661397c565b5f82613d9a57613d9a613cad565b500490565b80820281158282048414176106865761068661397c565b6001815b6001841115610c5257808504811115613dd557613dd561397c565b6001841615613de357908102905b60019390931c928002613dba565b5f82613dff57506001610686565b81613e0b57505f610686565b8160018114613e215760028114613e2b57613e47565b6001915050610686565b60ff841115613e3c57613e3c61397c565b50506001821b610686565b5060208310610133831016604e8410600b8410161715613e6a575081810a610686565b613e765f198484613db6565b805f1904821115613e8957613e8961397c565b029392505050565b5f6107b28383613df1565b5f82613eaa57613eaa613cad565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208077a5d9ff8b376f92f119ab17c07a4e229f91477f70fd923b6d322b4a48a2f364736f6c634300081b0033", + "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052d578063f09a40161461054a578063f2fde38b14610569578063fe9fbb8014610588575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e3366004613523565b6105b6565b005b3480156101f5575f5ffd5b506101fe61065c565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d366004613556565b610674565b34801561023d575f5ffd5b5061027161024c366004613596565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135b0565b61068a565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135cb565b61075a565b348015610309575f5ffd5b506102c761031836600461360c565b6107a1565b348015610328575f5ffd5b506101e86107b7565b6101e861033f36600461371c565b6107cb565b34801561034f575f5ffd5b5061036361035e3660046135cb565b610884565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108ca565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613768565b61097b565b3480156103cf575f5ffd5b506101e8610987565b3480156103e3575f5ffd5b506101e8610998565b3480156103f7575f5ffd5b506101e8610a0f565b34801561040b575f5ffd5b506102c7610a22565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b36600461377f565b610a30565b34801561045b575f5ffd5b5061036361046a366004613814565b610b0b565b34801561047a575f5ffd5b50610363610489366004613850565b610b76565b348015610499575f5ffd5b506102c76104a8366004613880565b610ba2565b3480156104b8575f5ffd5b506101e86104c736600461377f565b610bae565b3480156104d7575f5ffd5b506104eb6104e6366004613850565b610bc4565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c9546201000090046001600160401b0316610271565b348015610538575f5ffd5b506065546001600160a01b03166102c7565b348015610555575f5ffd5b506101e86105643660046138a1565b610c58565b348015610574575f5ffd5b506101e86105833660046135b0565b610d67565b348015610593575f5ffd5b506101fe6105a23660046135b0565b60fc6020525f908152604090205460ff1681565b6105be610dd8565b6001600160a01b0382165f90815260fc602052604090205481151560ff9091161515036105fe576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066b60c95460ff1690565b60ff1614905090565b5f61067f8383610e32565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106db5760405162461bcd60e51b81526004016106d2906138d8565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661070d610e94565b6001600160a01b0316146107335760405162461bcd60e51b81526004016106d290613924565b61073c81610eaf565b604080515f8082526020820190925261075791839190610eb7565b50565b5f8180820361077c5760405163ec73295960e01b815260040160405180910390fd5b5f610788878787610b76565b9050836107953083610e32565b14979650505050505050565b5f6107ad848484611021565b90505b9392505050565b6107bf61107d565b6107c9335f61110d565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108135760405162461bcd60e51b81526004016106d2906138d8565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610845610e94565b6001600160a01b03161461086b5760405162461bcd60e51b81526004016106d290613924565b61087482610eaf565b61088082826001610eb7565b5050565b335f90815260fc602052604081205460ff166108b357604051631f67751f60e01b815260040160405180910390fd5b6108bf85858585611126565b90505b949350505050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000516146109695760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d2565b505f516020613eb85f395f51905f5290565b5f610684338384611208565b61098f610dd8565b6107c95f6112e1565b60655433906001600160a01b03168114610a065760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d2565b610757816112e1565b610a176112fa565b6107c933600161110d565b5f610a2b610e94565b905090565b5f610a4560c954610100900460ff1660021490565b15610a635760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7160c95460ff1690565b60ff1603610a925760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610aaf8787878787600161136b565b90505f5b8151811015610af257610ade828281518110610ad157610ad1613970565b6020026020010151611827565b610ae89084613998565b9250600101610ab3565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b57565b5f6107b0468484611021565b610bbc85858585855f61136b565b505050505050565b5f5f826001600160401b03165f03610c00576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c02565b825b91506001600160401b03821615610c50575f610c1f868685610b76565b9050610c2b3082610e32565b91505f829003610c4e5760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7657505f54600160ff909116105b80610c8f5750303b158015610c8f57505f5460ff166001145b610cf25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d2565b5f805460ff191660011790558015610d13575f805461ff0019166101001790555b610d1d838361196b565b8015610d62575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d6f610dd8565b606580546001600160a01b0383166001600160a01b03199091168117909155610da06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d2565b5f826001600160a01b038116610e5b5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7d5760405163ec73295960e01b815260040160405180910390fd5b5f610e89468787610b0b565b549695505050505050565b5f516020613eb85f395f51905f52546001600160a01b031690565b610757610dd8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eea57610d62836119a5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f44575060408051601f3d908101601f19168201909252610f41918101906139ab565b60015b610fa75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d2565b5f516020613eb85f395f51905f5281146110155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d2565b50610d62838383611a40565b5f61102c8484611a6a565b9050818061104257506001600160a01b03811615155b8484909161107457604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106d2565b50509392505050565b61109160c954610100900460ff1660021490565b6110ae5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f611132858585610b76565b905061113f308284611208565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a9576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f8929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112315760405163538ba4f960e01b815260040160405180910390fd5b835f8190036112535760405163ec73295960e01b815260040160405180910390fd5b835f8190036112755760405163ec73295960e01b815260040160405180910390fd5b611280468888610b0b565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075781611b0c565b61130e60c954610100900460ff1660021490565b1561132c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611103565b6060856001600160a01b0381166113955760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113b75760405163ec73295960e01b815260040160405180910390fd5b5f6113c486880188613a7f565b905080515f036113e757604051630b92daef60e21b815260040160405180910390fd5b5f600182516113f69190613bc5565b6001600160401b0381111561140d5761140d613645565b604051908082528060200260200182016040528015611436578160200160208202803683370190505b50905085156114c95781516001600160401b0381111561145857611458613645565b6040519080825280602002602001820160405280156114c557816020015b6114b26040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816114765790505b5094505b8a8a8a805f6114ea856d7369676e616c5f7365727669636560901b836107a1565b9050306001600160a01b0382160361151557604051637556223560e11b815260040160405180910390fd5b61154d6040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117db578b818151811061156d5761156d613970565b602002602001015194505f5b818110156115d757855f01516001600160401b03168c82815181106115a0576115a0613970565b60200260200101516001600160401b0316036115cf576040516348362c2760e11b815260040160405180910390fd5b600101611579565b506115e68a8a8a8a898b611b5d565b93508a518114915081156116265784516001600160401b0316461461161e576040516338bf822760e21b815260040160405180910390fd5b3095506116d1565b845f01518b828151811061163c5761163c613970565b6001600160401b039283166020918202929092010152855116158061166a575084516001600160401b031646145b1561168857604051637556223560e11b815260040160405180910390fd5b84516116a6906d7369676e616c5f7365727669636560901b5f6107a1565b9550306001600160a01b038716036116d157604051637556223560e11b815260040160405180910390fd5b608085015151151592508f15611765576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561174457611744613bd8565b8152508f828151811061175957611759613970565b60200260200101819052505b6117c08a84611794577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117b6565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b76565b604086015186519b5096995097509495508794600101611552565b508515806117f257506117ee3088610e32565b8614155b156118105760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561184157611841613bd8565b1480611862575060028360c00151600381111561186057611860613bd8565b145b9050808015611872575082608001515b801561188057508260a00151155b156118c257600191506118c083604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f0151611126565b505b5f60038460c0015160038111156118db576118db613bd8565b14806118fc575060018460c0015160038111156118fa576118fa613bd8565b145b9050808015611918575083608001518061191857508360a00151155b1561196457611928600184613998565b925061196284604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf586606001518760200151611126565b505b5050919050565b806001600160a01b0381166119935760405163538ba4f960e01b815260040160405180910390fd5b61199c83611bfc565b610d6282611c5a565b6001600160a01b0381163b611a125760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d2565b5f516020613eb85f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4983611cca565b5f82511180611a555750805b15610d6257611a648383611d09565b50505050565b6097545f906001600160a01b031680611a9657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c29190613bec565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b865760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba85760405163ec73295960e01b815260040160405180910390fd5b855f819003611bca5760405163ec73295960e01b815260040160405180910390fd5b611bee866040015186611bde8d8d8d610b0b565b8a8a608001518b60a00151611d2e565b9a9950505050505050505050565b5f54610100900460ff16611c225760405162461bcd60e51b81526004016106d290613c07565b611c2a611e3b565b611c486001600160a01b03821615611c4257816112e1565b336112e1565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c805760405162461bcd60e51b81526004016106d290613c07565b6001600160401b03461115611ca85760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611cd3816119a5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b08383604051806060016040528060278152602001613ed860279139611e61565b5f82515f14611dd6576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d7290603401604051602081830303815290604052858a611ed5565b905080515f03611d9557604051630414cd5b60e31b815260040160405180910390fd5b5f611d9f82611eee565b9050611dc481600281518110611db757611db7613970565b6020026020010151611f01565b611dcd90613c52565b92505050611dd9565b50855b5f611e1086604051602001611df091815260200190565b60408051601f19818403018152919052611e0987611f80565b8585611f93565b905080611e3057604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107c95760405162461bcd60e51b81526004016106d290613c07565b60605f5f856001600160a01b031685604051611e7d9190613c9a565b5f60405180830381855af49150503d805f8114611eb5576040519150601f19603f3d011682016040523d82523d5f602084013e611eba565b606091505b5091509150611ecb86838387611fac565b9695505050505050565b60605f611ee185612024565b9050610b02818585612056565b6060610684611efc836128c4565b612916565b60605f5f5f611f0f85612a94565b919450925090505f816001811115611f2957611f29613bd8565b14611f47576040516307fe6cb960e21b815260040160405180910390fd5b611f518284613998565b855114611f7157604051630b8aa6f760e31b815260040160405180910390fd5b610b0285602001518484612d77565b6060610684611f8e83612e07565b612f1b565b5f5f611f9e86612024565b9050611ecb81868686612f73565b6060831561201a5782515f03612013576001600160a01b0385163b6120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d2565b50816108c2565b6108c28383612f99565b6060818051906020012060405160200161204091815260200190565b6040516020818303038152906040529050919050565b60605f8451116120a05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d2565b5f6120aa84612fc3565b90505f6120b6866130a6565b90505f846040516020016120cc91815260200190565b60408051601f1981840301815291905290505f805b845181101561286d575f8582815181106120fd576120fd613970565b60200260200101519050845183111561216f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d2565b825f0361220d57805180516020918201206040516121bc9261219692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122085760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d2565b612303565b80515160201161229357805180516020918201206040516122379261219692910190815260200190565b6122085760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d2565b8051845160208087019190912082519190920120146123035760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d2565b61230f60106001613998565b816020015151036124a757845183036124415761233c8160200151601081518110611db757611db7613970565b96505f8751116123b45760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d2565b600186516123c29190613bc5565b82146124365760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d2565b5050505050506107b0565b5f85848151811061245457612454613970565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247e5761247e613970565b6020026020010151905061249181613107565b955061249e600186613998565b94505050612864565b60028160200151510361280b575f6124be8261312b565b90505f815f815181106124d3576124d3613970565b016020015160f81c90505f6124e9600283613cc9565b6124f4906002613cea565b90505f612504848360ff1661314e565b90505f6125118a8961314e565b90505f61251e8383613183565b9050808351146125965760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d2565b60ff8516600214806125ab575060ff85166003145b1561274b57808251146126265760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d2565b6126408760200151600181518110611db757611db7613970565b9c505f8d51116126b85760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d2565b60018c516126c69190613bc5565b881461273a5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d2565b5050505050505050505050506107b0565b60ff8516158061275e575060ff85166001145b1561279d5761278a876020015160018151811061277d5761277d613970565b6020026020010151613107565b9950612796818a613998565b9850612800565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d2565b505050505050612864565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d2565b506001016120e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d2565b604080518082019091525f808252602082015281515f036128f857604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61292485612a94565b91945092509050600181600181111561293f5761293f613bd8565b1461295d576040516325ce355f60e11b815260040160405180910390fd5b84516129698385613998565b1461298757604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f808252602082015281526020019060019003908161299e5790505093505f835b8651811015612a88575f5f612a0d6040518060400160405280858c5f01516129f19190613bc5565b8152602001858c60200151612a069190613998565b9052612a94565b509150915060405180604001604052808383612a299190613998565b8152602001848b60200151612a3e9190613998565b815250888581518110612a5357612a53613970565b6020908102919091010152612a69600185613998565b9350612a758183613998565b612a7f9084613998565b925050506129c9565b50845250919392505050565b5f5f5f835f01515f03612aba57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612adc575f60015f9450945094505050612d70565b60b78111612b71575f612af0608083613bc5565b905080875f015111612b15576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b415750600160ff1b6001600160f81b03198216105b15612b5f5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d70915050565b60bf8111612c4f575f612b8560b783613bc5565b905080875f015111612baa576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bda5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c095760405163babb01dd60e01b815260040160405180910390fd5b612c138184613998565b895111612c33576040516366c9448560e01b815260040160405180910390fd5b612c3e836001613998565b975095505f9450612d709350505050565b60f78111612c99575f612c6360c083613bc5565b905080875f015111612c88576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d70915050565b5f612ca560f783613bc5565b905080875f015111612cca576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cfa5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d295760405163babb01dd60e01b815260040160405180910390fd5b612d338184613998565b895111612d53576040516366c9448560e01b815260040160405180910390fd5b612d5e836001613998565b9750955060019450612d709350505050565b9193909250565b6060816001600160401b03811115612d9157612d91613645565b6040519080825280601f01601f191660200182016040528015612dbb576020820181803683370190505b50905081156107b0575f612dcf8486613998565b9050602082015f5b84811015612def578281015182820152602001612dd7565b84811115612dfd575f858301525b5050509392505050565b60605f82604051602001612e1d91815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6957818181518110612e4c57612e4c613970565b01602001516001600160f81b0319165f03612e6957600101612e31565b612e74816020613bc5565b6001600160401b03811115612e8b57612e8b613645565b6040519080825280601f01601f191660200182016040528015612eb5576020820181803683370190505b5092505f5b8351811015611962578282612ece81613d03565b935081518110612ee057612ee0613970565b602001015160f81c60f81b848281518110612efd57612efd613970565b60200101906001600160f81b03191690815f1a905350600101612eba565b606081516001148015612f4757506080825f81518110612f3d57612f3d613970565b016020015160f81c105b15612f50575090565b612f5c82516080613206565b82604051602001612040929190613d1b565b919050565b5f6108bf84612f83878686612056565b8051602091820120825192909101919091201490565b815115612fa95781518083602001fd5b8060405162461bcd60e51b81526004016106d29190613d49565b8051606090806001600160401b03811115612fe057612fe0613645565b60405190808252806020026020018201604052801561302557816020015b6040805180820190915260608082526020820152815260200190600190039081612ffe5790505b5091505f5b8181101561196457604051806040016040528085838151811061304f5761304f613970565b6020026020010151815260200161307e86848151811061307157613071613970565b6020026020010151611eee565b81525083828151811061309357613093613970565b602090810291909101015260010161302a565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130fc578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130cf565b509295945050505050565b60606020825f0151106131225761311d82611f01565b610684565b610684826133ab565b606061068461314983602001515f81518110611db757611db7613970565b6130a6565b60608251821061316c575060408051602081019091525f8152610684565b6107b0838384865161317e9190613bc5565b6133bf565b5f5f8251845110613195578251613198565b83515b90505b80821080156131ef57508282815181106131b7576131b7613970565b602001015160f81c60f81b6001600160f81b0319168483815181106131de576131de613970565b01602001516001600160f81b031916145b156131ff5781600101915061319b565b5092915050565b6060603883101561326a576040805160018082528183019092529060208201818036833701905050905061323a8284613d7b565b60f81b815f8151811061324f5761324f613970565b60200101906001600160f81b03191690815f1a905350610684565b5f60015b6132788186613d94565b1561329e578161328781613d03565b9250613297905061010082613da7565b905061326e565b6132a9826001613998565b6001600160401b038111156132c0576132c0613645565b6040519080825280601f01601f1916602001820160405280156132ea576020820181803683370190505b5092506132f78483613d7b565b613302906037613d7b565b60f81b835f8151811061331757613317613970565b60200101906001600160f81b03191690815f1a905350600190505b8181116133a3576101006133468284613bc5565b61335290610100613e99565b61335c9087613d94565b6133669190613ea4565b60f81b83828151811061337b5761337b613970565b60200101906001600160f81b03191690815f1a9053508061339b81613d03565b915050613332565b505092915050565b606061068482602001515f845f0151612d77565b60608182601f0110156134055760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8282840110156134485760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8183018451101561348f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d2565b6060821580156134ad5760405191505f8252602082016040526134f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134e65780518352602092830192016134ce565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610757575f5ffd5b80358015158114612f6e575f5ffd5b5f5f60408385031215613534575f5ffd5b823561353f81613500565b915061354d60208401613514565b90509250929050565b5f5f60408385031215613567575f5ffd5b823561357281613500565b946020939093013593505050565b80356001600160401b0381168114612f6e575f5ffd5b5f5f604083850312156135a7575f5ffd5b61357283613580565b5f602082840312156135c0575f5ffd5b81356107b081613500565b5f5f5f5f608085870312156135de575f5ffd5b6135e785613580565b9350602085013592506135fc60408601613580565b9396929550929360600135925050565b5f5f5f6060848603121561361e575f5ffd5b61362784613580565b92506020840135915061363c60408501613514565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561367b5761367b613645565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a9576136a9613645565b604052919050565b5f82601f8301126136c0575f5ffd5b81356001600160401b038111156136d9576136d9613645565b6136ec601f8201601f1916602001613681565b818152846020838601011115613700575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561372d575f5ffd5b823561373881613500565b915060208301356001600160401b03811115613752575f5ffd5b61375e858286016136b1565b9150509250929050565b5f60208284031215613778575f5ffd5b5035919050565b5f5f5f5f5f60808688031215613793575f5ffd5b61379c86613580565b945060208601356137ac81613500565b93506040860135925060608601356001600160401b038111156137cd575f5ffd5b8601601f810188136137dd575f5ffd5b80356001600160401b038111156137f2575f5ffd5b886020828401011115613803575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215613826575f5ffd5b61382f84613580565b9250602084013561383f81613500565b929592945050506040919091013590565b5f5f5f60608486031215613862575f5ffd5b61386b84613580565b92506020840135915061363c60408501613580565b5f5f60408385031215613891575f5ffd5b8235915061354d60208401613514565b5f5f604083850312156138b2575f5ffd5b82356138bd81613500565b915060208301356138cd81613500565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068457610684613984565b5f602082840312156139bb575f5ffd5b5051919050565b5f6001600160401b038211156139da576139da613645565b5060051b60200190565b803560048110612f6e575f5ffd5b5f82601f830112613a01575f5ffd5b8135613a14613a0f826139c2565b613681565b8082825260208201915060208360051b860101925085831115613a35575f5ffd5b602085015b83811015613a755780356001600160401b03811115613a57575f5ffd5b613a66886020838a01016136b1565b84525060209283019201613a3a565b5095945050505050565b5f60208284031215613a8f575f5ffd5b81356001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8035613ac2613a0f826139c2565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015611e305780356001600160401b03811115613b05575f5ffd5b850160c0818a03601f19011215613b1a575f5ffd5b613b22613659565b613b2e60208301613580565b8152613b3c60408301613580565b602082015260608201356040820152613b57608083016139e4565b606082015260a08201356001600160401b03811115613b74575f5ffd5b613b838b6020838601016139f2565b60808301525060c08201356001600160401b03811115613ba1575f5ffd5b613bb08b6020838601016139f2565b60a08301525084525060209283019201613ae8565b8181038181111561068457610684613984565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bfc575f5ffd5b81516107b081613500565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c72575f198160200360031b1b821691505b50919050565b5f5b83811015613c92578181015183820152602001613c7a565b50505f910152565b5f8251613cab818460208701613c78565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cdb57613cdb613cb5565b8060ff84160691505092915050565b60ff828116828216039081111561068457610684613984565b5f60018201613d1457613d14613984565b5060010190565b5f8351613d2c818460208801613c78565b835190830190613d40818360208801613c78565b01949350505050565b602081525f8251806020840152613d67816040850160208701613c78565b601f01601f19169190910160400192915050565b60ff818116838216019081111561068457610684613984565b5f82613da257613da2613cb5565b500490565b808202811582820484141761068457610684613984565b6001815b6001841115610c5057808504811115613ddd57613ddd613984565b6001841615613deb57908102905b60019390931c928002613dc2565b5f82613e0757506001610684565b81613e1357505f610684565b8160018114613e295760028114613e3357613e4f565b6001915050610684565b60ff841115613e4457613e44613984565b50506001821b610684565b5060208310610133831016604e8410600b8410161715613e72575081810a610684565b613e7e5f198484613dbe565b805f1904821115613e9157613e91613984565b029392505050565b5f6107b08383613df9565b5f82613eb257613eb2613cb5565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204468b8adee6c324d6a7192cb1aada2b474837cf3f594d8153d9826cdf00171ee64736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000000005": { @@ -262,7 +262,7 @@ "0xe3ad9bc7a782493ccba4f8a469cc3f9e8fb5647c2076401c8a7c4945a999c777": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000005" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010001": { @@ -270,7 +270,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105cb578063ee82ac5e146105ea578063f2fde38b14610609578063f940e38514610628578063fd85eb2d14610647575f5ffd5b8063da69d3db14610555578063dac5df7814610574578063e07baba614610589578063e30c3978146105ae575f5ffd5b8063a7137c0f116100e3578063a7137c0f1461047d578063a7e022d1146104a3578063a86f9d9e146104df578063b8c7b30c146104fe578063c3f909d41461051d575f5ffd5b80638456cb59146104135780638abf6077146104275780638da5cb5b1461043b5780639ee512f214610458575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103865780635950f9f1146103ac5780635c975abb146103cb578063715018a6146103eb57806379ba5097146103ff575f5ffd5b80633eb6b8cf1461031e5780633f4ba83a1461033d5780634f1ef2861461035157806352d1902d14610364575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c65780633ab76e9f146102e7575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f610256366004612829565b610666565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b5061026961067c565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b50600261021f565b3480156102d1575f5ffd5b506102e56102e036600461287d565b610694565b005b3480156102f2575f5ffd5b50609754610306906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610329575f5ffd5b506103066103383660046128a5565b610764565b348015610348575f5ffd5b506102e5610770565b6102e561035f3660046128f6565b610784565b34801561036f575f5ffd5b5061037861083d565b604051908152602001610233565b348015610391575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b7575f5ffd5b506102e56103c63660046129b9565b6108ee565b3480156103d6575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f6575f5ffd5b506102e5610af7565b34801561040a575f5ffd5b506102e5610b08565b34801561041e575f5ffd5b506102e5610b7f565b348015610432575f5ffd5b50610306610b92565b348015610446575f5ffd5b506033546001600160a01b0316610306565b348015610463575f5ffd5b5061030671777735367b36bc9b61c50022d9d0700db4ec81565b348015610488575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104ae575f5ffd5b506104c26104bd366004612a21565b610ba0565b604080519283526001600160401b03909116602083015201610233565b3480156104ea575f5ffd5b506103066104f9366004612a52565b610c16565b348015610509575f5ffd5b5060fd5461021f906001600160401b031681565b348015610528575f5ffd5b50610531610c2b565b60408051825163ffffffff16815260209283015160ff169281019290925201610233565b348015610560575f5ffd5b506102e561056f366004612a80565b610c5c565b34801561057f575f5ffd5b5061037860fc5481565b348015610594575f5ffd5b5060c95461021f906201000090046001600160401b031681565b3480156105b9575f5ffd5b506065546001600160a01b0316610306565b3480156105d6575f5ffd5b506104c26105e5366004612ac8565b610f77565b3480156105f5575f5ffd5b50610378610604366004612b10565b611059565b348015610614575f5ffd5b506102e561062336600461287d565b611091565b348015610633575f5ffd5b506102e5610642366004612b27565b611102565b348015610652575f5ffd5b506102e5610661366004612b53565b6112c1565b5f610672848484611748565b90505b9392505050565b5f600261068b60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036106e55760405162461bcd60e51b81526004016106dc90612b94565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b0316610717611803565b6001600160a01b03161461073d5760405162461bcd60e51b81526004016106dc90612be0565b6107468161181e565b604080515f8082526020820190925261076191839190611826565b50565b5f610672848484611990565b6107786119e2565b610782335f611a72565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036107cc5760405162461bcd60e51b81526004016106dc90612b94565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b03166107fe611803565b6001600160a01b0316146108245760405162461bcd60e51b81526004016106dc90612be0565b61082d8261181e565b61083982826001611826565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116146108dc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106dc565b505f516020612e6d5f395f51905f5290565b5f54610100900460ff161580801561090c57505f54600160ff909116105b806109255750303b15801561092557505f5460ff166001145b6109885760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106dc565b5f805460ff1916600117905580156109a9575f805461ff0019166101001790555b6109b38585611a7a565b6001600160401b03831615806109d1575046836001600160401b0316145b156109ef576040516308279a2560e31b815260040160405180910390fd5b600146111580610a0557506001600160401b0346115b15610a2357604051638f972ecb60e01b815260040160405180910390fd5b4315610a6d5743600103610a54575f610a3d600143612c40565b5f81815260fb602052604090209040905550610a6d565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610aa743611ab4565b5060fc558015610af0575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610aff611b44565b6107825f611b9e565b60655433906001600160a01b03168114610b765760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106dc565b61076181611b9e565b610b87611bb7565b610782336001611a72565b5f610b9b611803565b905090565b5f5f5f610bab610c2b565b9050610c0a816020015160ff16825f015163ffffffff16610bcc9190612c53565b60fd5483516001600160401b038083169263ffffffff90921691610bf991600160401b909104168a612c6a565b610c039190612c89565b875f611c28565b90969095509350505050565b5f610c22468484611990565b90505b92915050565b604080518082019091525f8082526020820152610b9b60408051808201909152630393870081526008602082015290565b825f819003610c7e5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610ca85760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610cda57604051636494e9f760e01b815260040160405180910390fd5b6002610ce860c95460ff1690565b60ff1603610d095760405163dfc60d8560e01b815260040160405180910390fd5b610d136002611cb1565b60024310610d3457604051631799c89b60e01b815260040160405180910390fd5b5f610d40600143612c40565b90505f5f610d4d83611ab4565b915091508160fc5414610d735760405163d719258d60e01b815260040160405180910390fd5b5f5f610d7f8989610ba0565b91509150610d8a5f90565b158015610d975750814814155b15610db5576040516336d54d4f60e11b815260040160405180910390fd5b60fd546001600160401b03600160401b9091048116908a161115610ec057610dee6d7369676e616c5f7365727669636560901b5f610c16565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018c90526001600160a01b039190911690634f90a674906084016020604051808303815f875af1158015610e75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e999190612cb2565b5060fd805467ffffffffffffffff60401b1916600160401b6001600160401b038c16021790555b5f85815260fb60205260409081902086409081905560fc85905560fd8054426001600160401b03908116600160801b0277ffffffffffffffff0000000000000000ffffffffffffffff199092169086161717905590517f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe490610f5790839085909182526001600160401b0316602082015260400190565b60405180910390a1505050505050610f6f6001611cb1565b505050505050565b5f8080610f8a6060880160408901612cc9565b610f9a9063ffffffff1687612c89565b9050610fac60a0880160808901612cc9565b63ffffffff1615801590610fdd5750610fcb60a0880160808901612cc9565b63ffffffff16816001600160401b0316115b15610ffb57610ff260a0880160808901612cc9565b63ffffffff1690505b5f6110096020890189612ce2565b60ff1661101c60608a0160408b01612cc9565b63ffffffff1661102c9190612c53565b905061104a8187848861104560808e0160608f01612d02565b611c28565b93509350505094509492505050565b5f43821061106857505f919050565b4361107583610100612d1b565b1061107f57504090565b505f90815260fb602052604090205490565b611099611b44565b606580546001600160a01b0383166001600160a01b031990911681179091556110ca6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61111660c954610100900460ff1660021490565b156111345760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b6111546033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015611191575061117b816001610c16565b6001600160a01b0316336001600160a01b031614155b156111af57604051630d85cccf60e11b815260040160405180910390fd5b60026111bd60c95460ff1690565b60ff16036111de5760405163dfc60d8560e01b815260040160405180910390fd5b6111e86002611cb1565b6001600160a01b03821661120f5760405163053fd54760e01b815260040160405180910390fd5b6001600160a01b038316611235576112306001600160a01b03831647611cc7565b6112b2565b6040516370a0823160e01b81523060048201526112b29083906001600160a01b038616906370a0823190602401602060405180830381865afa15801561127d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a19190612cb2565b6001600160a01b0386169190611cd2565b6112bc6001611cb1565b505050565b825f8190036112e35760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f0361130d5760405163ec73295960e01b815260040160405180910390fd5b61131d6060840160408501612cc9565b63ffffffff16805f036113435760405163ec73295960e01b815260040160405180910390fd5b6113506020850185612ce2565b60ff16805f036113735760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec146113a557604051636494e9f760e01b815260040160405180910390fd5b60026113b360c95460ff1690565b60ff16036113d45760405163dfc60d8560e01b815260040160405180910390fd5b6113de6002611cb1565b600243101561140057604051631799c89b60e01b815260040160405180910390fd5b5f61140c600143612c40565b90505f5f61141983611ab4565b915091508160fc541461143f5760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6114516020880188612ce2565b60ff166114646060890160408a01612cc9565b63ffffffff166114749190612c89565b60fd549091506001600160401b03808316600160c01b909204161461150f5760fd54600160c01b90046001600160401b0316156114ee5760fd546114cc906001600160401b0380821691600160c01b90041683610666565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f90819061154990899061153790600160801b90046001600160401b031642612c40565b60fd546001600160401b03168c610f77565b915091506115545f90565b1580156115615750814814155b1561157f576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b161115905061169f576115cd6d7369676e616c5f7365727669636560901b5f610c16565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af1158015611654573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116789190612cb2565b5060fd805467ffffffffffffffff60401b1916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe49361172a938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a1505061173e6001611cb1565b5050505050505050565b5f826001600160401b03165f03611760575080610675565b670de0b6b3a76400005f6001600160401b038086169061178290861684612c53565b61178c9190612d42565b90506001600160ff1b038111156117b657604051636296f1b960e11b815260040160405180910390fd5b5f6117c082611d24565b90505f828802828702015f8112600181146117df5785820492506117e3565b5f92505b506117f79050816001600160401b03611f41565b98975050505050505050565b5f516020612e6d5f395f51905f52546001600160a01b031690565b610761611b44565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611859576112bc83611f55565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118b3575060408051601f3d908101601f191682019092526118b091810190612cb2565b60015b6119165760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106dc565b5f516020612e6d5f395f51905f5281146119845760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106dc565b506112bc838383611ff0565b5f61199b848461201a565b9050811580156119b257506001600160a01b038116155b1561067557604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106dc565b6119f660c954610100900460ff1660021490565b611a135760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610839611b44565b806001600160a01b038116611aa25760405163538ba4f960e01b815260040160405180910390fd5b611aab836120c4565b6112bc82612122565b5f5f611abe6127ee565b5f5b60ff81108015611ad35750806001018510155b15611b04575f198186030180408360ff83066101008110611af657611af6612d55565b602002015250600101611ac0565b5046611fe082015261200081209250834081611b2160ff87612d69565b6101008110611b3257611b32612d55565b60200201526120009020919391925050565b6033546001600160a01b031633146107825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106dc565b606580546001600160a01b031916905561076181612192565b611bcb60c954610100900460ff1660021490565b15611be95760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611a68565b5f8080611c4463ffffffff86166001600160401b038916612d1b565b9050856001600160401b03168111611c5d576001611c70565b611c706001600160401b03871682612c40565b9050611c8f6001600160401b03611c89838783166121e3565b90611f41565b9150611ca4826001600160401b0316896121f8565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61083982825a612227565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112bc90849061226a565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611d8057631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611f4f5782610c22565b50919050565b6001600160a01b0381163b611fc25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106dc565b5f516020612e6d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ff98361233d565b5f825111806120055750805b156112bc57612014838361237c565b50505050565b6097545f906001600160a01b03168061204657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612098573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120bc9190612d7c565b949350505050565b5f54610100900460ff166120ea5760405162461bcd60e51b81526004016106dc90612d97565b6120f26123a1565b6121106001600160a01b0382161561210a5781611b9e565b33611b9e565b5060c9805461ff001916610100179055565b5f54610100900460ff166121485760405162461bcd60e51b81526004016106dc90612d97565b6001600160401b034611156121705760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8183116121f15781610c22565b5090919050565b5f5f8261220585856123c7565b61220f9190612d42565b9050801561221d57806120bc565b5060019392505050565b815f0361223357505050565b61224d83838360405180602001604052805f815250612441565b6112bc57604051634c67134d60e11b815260040160405180910390fd5b5f6122be826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661247e9092919063ffffffff16565b905080515f14806122de5750808060200190518101906122de9190612de2565b6112bc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106dc565b61234681611f55565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c228383604051806060016040528060278152602001612e8d6027913961248c565b5f54610100900460ff166107825760405162461bcd60e51b81526004016106dc90612d97565b5f815f036123e857604051636296f1b960e11b815260040160405180910390fd5b5f826123fc85670de0b6b3a7640000612c53565b6124069190612d42565b9050680755bf798b4a1bf1e48111156124255750680755bf798b4a1bf1e45b670de0b6b3a764000061243782612500565b6120bc9190612d42565b5f6001600160a01b03851661246957604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061067284845f8561267a565b60605f5f856001600160a01b0316856040516124a89190612e1f565b5f60405180830381855af49150503d805f81146124e0576040519150601f19603f3d011682016040523d82523d5f602084013e6124e5565b606091505b50915091506124f686838387612751565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361251757919050565b680755bf798b4a1bf1e582126125345763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156126db5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106dc565b5f5f866001600160a01b031685876040516126f69190612e1f565b5f6040518083038185875af1925050503d805f8114612730576040519150601f19603f3d011682016040523d82523d5f602084013e612735565b606091505b509150915061274687838387612751565b979650505050505050565b606083156127bf5782515f036127b8576001600160a01b0385163b6127b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106dc565b50816120bc565b6120bc83838151156127d45781518083602001fd5b8060405162461bcd60e51b81526004016106dc9190612e3a565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114612824575f5ffd5b919050565b5f5f5f6060848603121561283b575f5ffd5b6128448461280e565b92506128526020850161280e565b91506128606040850161280e565b90509250925092565b6001600160a01b0381168114610761575f5ffd5b5f6020828403121561288d575f5ffd5b813561067581612869565b8015158114610761575f5ffd5b5f5f5f606084860312156128b7575f5ffd5b6128c08461280e565b92506020840135915060408401356128d781612898565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612907575f5ffd5b823561291281612869565b915060208301356001600160401b0381111561292c575f5ffd5b8301601f8101851361293c575f5ffd5b80356001600160401b03811115612955576129556128e2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612983576129836128e2565b60405281815282820160200187101561299a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f608085870312156129cc575f5ffd5b84356129d781612869565b935060208501356129e781612869565b92506129f56040860161280e565b9150612a036060860161280e565b905092959194509250565b803563ffffffff81168114612824575f5ffd5b5f5f60408385031215612a32575f5ffd5b612a3b8361280e565b9150612a4960208401612a0e565b90509250929050565b5f5f60408385031215612a63575f5ffd5b823591506020830135612a7581612898565b809150509250929050565b5f5f5f5f60808587031215612a93575f5ffd5b8435935060208501359250612aaa6040860161280e565b9150612a0360608601612a0e565b5f60a08284031215611f4f575f5ffd5b5f5f5f5f6101008587031215612adc575f5ffd5b612ae68686612ab8565b9350612af460a0860161280e565b9250612b0260c0860161280e565b9150612a0360e08601612a0e565b5f60208284031215612b20575f5ffd5b5035919050565b5f5f60408385031215612b38575f5ffd5b8235612b4381612869565b91506020830135612a7581612869565b5f5f5f5f6101008587031215612b67575f5ffd5b612b708561280e565b935060208501359250612b8560408601612a0e565b9150612a038660608701612ab8565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2557610c25612c2c565b8082028115828204841417610c2557610c25612c2c565b6001600160401b038281168282160390811115610c2557610c25612c2c565b6001600160401b038181168382160290811690818114612cab57612cab612c2c565b5092915050565b5f60208284031215612cc2575f5ffd5b5051919050565b5f60208284031215612cd9575f5ffd5b610c2282612a0e565b5f60208284031215612cf2575f5ffd5b813560ff81168114610675575f5ffd5b5f60208284031215612d12575f5ffd5b610c228261280e565b80820180821115610c2557610c25612c2c565b634e487b7160e01b5f52601260045260245ffd5b5f82612d5057612d50612d2e565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612d7757612d77612d2e565b500690565b5f60208284031215612d8c575f5ffd5b815161067581612869565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612df2575f5ffd5b815161067581612898565b5f5b83811015612e17578181015183820152602001612dff565b50505f910152565b5f8251612e30818460208701612dfd565b9190910192915050565b602081525f8251806020840152612e58816040850160208701612dfd565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122097c371566085ca0815d54688c02ffbd5f87528c4a61cfe4cdec3cbc3ac01c0c764736f6c634300081b0033", + "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105b4578063ee82ac5e146105d3578063f2fde38b146105f2578063f940e38514610611578063fd85eb2d14610630575f5ffd5b8063da69d3db14610540578063dac5df781461055f578063e07baba614610574578063e30c397814610597575f5ffd5b8063a578781e116100e3578063a578781e1461047c578063a7137c0f146104a0578063a7e022d1146104c6578063a86f9d9e14610502578063b8c7b30c14610521575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f61025636600461259f565b61064f565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b50610269610665565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df3660046125f3565b61067d565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461261b565b61074d565b348015610347575f5ffd5b506102e4610759565b6102e461035e36600461266c565b61076d565b34801561036e575f5ffd5b50610377610826565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c536600461272f565b6108d7565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610ae0565b348015610409575f5ffd5b506102e4610af1565b34801561041d575f5ffd5b506102e4610b68565b348015610431575f5ffd5b50610305610b7b565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd54600160801b90046001600160401b031661021f565b3480156104ab575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104d1575f5ffd5b506104e56104e0366004612797565b610b89565b604080519283526001600160401b03909116602083015201610233565b34801561050d575f5ffd5b5061030561051c3660046127c8565b610c15565b34801561052c575f5ffd5b5060fd5461021f906001600160401b031681565b34801561054b575f5ffd5b506102e461055a3660046127f6565b610c2a565b34801561056a575f5ffd5b5061037760fc5481565b34801561057f575f5ffd5b5060c9546201000090046001600160401b031661021f565b3480156105a2575f5ffd5b506065546001600160a01b0316610305565b3480156105bf575f5ffd5b506104e56105ce36600461283e565b610cfa565b3480156105de575f5ffd5b506103776105ed366004612886565b610ddc565b3480156105fd575f5ffd5b506102e461060c3660046125f3565b610e14565b34801561061c575f5ffd5b506102e461062b36600461289d565b610e85565b34801561063b575f5ffd5b506102e461064a3660046128c9565b611042565b5f61065b8484846114ac565b90505b9392505050565b5f600261067460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036106ce5760405162461bcd60e51b81526004016106c59061290a565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b0316610700611570565b6001600160a01b0316146107265760405162461bcd60e51b81526004016106c590612956565b61072f8161158b565b604080515f8082526020820190925261074a91839190611593565b50565b5f61065b848484611702565b61076161175e565b61076b335f6117ee565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036107b55760405162461bcd60e51b81526004016106c59061290a565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b03166107e7611570565b6001600160a01b03161461080d5760405162461bcd60e51b81526004016106c590612956565b6108168261158b565b61082282826001611593565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116146108c55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106c5565b505f516020612be35f395f51905f5290565b5f54610100900460ff16158080156108f557505f54600160ff909116105b8061090e5750303b15801561090e57505f5460ff166001145b6109715760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c5565b5f805460ff191660011790558015610992575f805461ff0019166101001790555b61099c85856117f6565b6001600160401b03831615806109ba575046836001600160401b0316145b156109d8576040516308279a2560e31b815260040160405180910390fd5b6001461115806109ee57506001600160401b0346115b15610a0c57604051638f972ecb60e01b815260040160405180910390fd5b4315610a565743600103610a3d575f610a266001436129b6565b5f81815260fb602052604090209040905550610a56565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610a9043611830565b5060fc558015610ad9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610ae86118c0565b61076b5f61191a565b60655433906001600160a01b03168114610b5f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106c5565b61074a8161191a565b610b70611933565b61076b3360016117ee565b5f610b84611570565b905090565b5f5f5f610baa60408051808201909152630393870081526008602082015290565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129c9565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a6129e0565b610c0291906129ff565b875f6119a4565b90969095509350505050565b5f610c21468484611702565b90505b92915050565b825f819003610c4c5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610c765760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610ca857604051636494e9f760e01b815260040160405180910390fd5b6002610cb660c95460ff1690565b60ff1603610cd75760405163dfc60d8560e01b815260040160405180910390fd5b610ce16002611a2d565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d0d6060880160408901612a3f565b610d1d9063ffffffff16876129ff565b9050610d2f60a0880160808901612a3f565b63ffffffff1615801590610d605750610d4e60a0880160808901612a3f565b63ffffffff16816001600160401b0316115b15610d7e57610d7560a0880160808901612a3f565b63ffffffff1690505b5f610d8c6020890189612a58565b60ff16610d9f60608a0160408b01612a3f565b63ffffffff16610daf91906129c9565b9050610dcd81878488610dc860808e0160608f01612a78565b6119a4565b93509350505094509492505050565b5f438210610deb57505f919050565b43610df883610100612a91565b10610e0257504090565b505f90815260fb602052604090205490565b610e1c6118c0565b606580546001600160a01b0383166001600160a01b03199091168117909155610e4d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b038116610ead5760405163538ba4f960e01b815260040160405180910390fd5b610ec160c954610100900460ff1660021490565b15610edf5760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610eff6033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610f395750610f24816001610c15565b6001600160a01b0316336001600160a01b0316145b610f5657604051630d85cccf60e11b815260040160405180910390fd5b6002610f6460c95460ff1690565b60ff1603610f855760405163dfc60d8560e01b815260040160405180910390fd5b610f8f6002611a2d565b6001600160a01b038416610fb557610fb06001600160a01b03841647611a43565b611032565b6040516370a0823160e01b81523060048201526110329084906001600160a01b038716906370a0823190602401602060405180830381865afa158015610ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110219190612a28565b6001600160a01b0387169190611a4e565b61103c6001611a2d565b50505050565b825f8190036110645760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f0361108e5760405163ec73295960e01b815260040160405180910390fd5b61109e6060840160408501612a3f565b63ffffffff16805f036110c45760405163ec73295960e01b815260040160405180910390fd5b6110d16020850185612a58565b60ff16805f036110f45760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461112657604051636494e9f760e01b815260040160405180910390fd5b600261113460c95460ff1690565b60ff16036111555760405163dfc60d8560e01b815260040160405180910390fd5b61115f6002611a2d565b5f61116b6001436129b6565b90505f5f61117883611830565b915091508160fc541461119e5760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111b06020880188612a58565b60ff166111c36060890160408a01612a3f565b63ffffffff166111d391906129ff565b60fd549091506001600160401b03808316600160c01b909204161461126e5760fd54600160c01b90046001600160401b03161561124d5760fd5461122b906001600160401b0380821691600160c01b9004168361064f565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112a890899061129690600160801b90046001600160401b0316426129b6565b60fd546001600160401b03168c610cfa565b915091506112b35f90565b1580156112c05750814814155b156112de576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114035761132c6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d79190612a28565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe49361148e938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114a26001611a2d565b5050505050505050565b5f826001600160401b03165f036114c457508061065e565b670de0b6b3a76400005f6001600160401b03808616906114e6908616846129c9565b6114f09190612ab8565b905080158061150557506001600160ff1b0381115b1561152357604051636296f1b960e11b815260040160405180910390fd5b5f61152d82611aa0565b90505f828802828702015f81126001811461154c578582049250611550565b5f92505b506115649050816001600160401b03611cbd565b98975050505050505050565b5f516020612be35f395f51905f52546001600160a01b031690565b61074a6118c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115cb576115c683611cd1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611625575060408051601f3d908101601f1916820190925261162291810190612a28565b60015b6116885760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106c5565b5f516020612be35f395f51905f5281146116f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106c5565b506115c6838383611d6c565b5f61170d8484611d90565b9050818061172357506001600160a01b03811615155b8484909161175557604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106c5565b50509392505050565b61177260c954610100900460ff1660021490565b61178f5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108226118c0565b806001600160a01b03811661181e5760405163538ba4f960e01b815260040160405180910390fd5b61182783611e3a565b6115c682611e98565b5f5f61183a612564565b5f5b60ff8110801561184f5750806001018510155b15611880575f198186030180408360ff8306610100811061187257611872612acb565b60200201525060010161183c565b5046611fe08201526120008120925083408161189d60ff87612adf565b61010081106118ae576118ae612acb565b60200201526120009020919391925050565b6033546001600160a01b0316331461076b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c5565b606580546001600160a01b031916905561074a81611f08565b61194760c954610100900460ff1660021490565b156119655760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117e4565b5f80806119c063ffffffff86166001600160401b038916612a91565b9050856001600160401b031681116119d95760016119ec565b6119ec6001600160401b038716826129b6565b9050611a0b6001600160401b03611a0583878316611f59565b90611cbd565b9150611a20826001600160401b031689611f6e565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61082282825a611f9d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115c6908490611fe0565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611afc57631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ccb5782610c21565b50919050565b6001600160a01b0381163b611d3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106c5565b5f516020612be35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d75836120b3565b5f82511180611d815750805b156115c65761103c83836120f2565b6097545f906001600160a01b031680611dbc57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e329190612af2565b949350505050565b5f54610100900460ff16611e605760405162461bcd60e51b81526004016106c590612b0d565b611e68612117565b611e866001600160a01b03821615611e80578161191a565b3361191a565b5060c9805461ff001916610100179055565b5f54610100900460ff16611ebe5760405162461bcd60e51b81526004016106c590612b0d565b6001600160401b03461115611ee65760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f675781610c21565b5090919050565b5f5f82611f7b858561213d565b611f859190612ab8565b90508015611f935780611e32565b5060019392505050565b815f03611fa957505050565b611fc383838360405180602001604052805f8152506121b7565b6115c657604051634c67134d60e11b815260040160405180910390fd5b5f612034826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121f49092919063ffffffff16565b905080515f14806120545750808060200190518101906120549190612b58565b6115c65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106c5565b6120bc81611cd1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c0360279139612202565b5f54610100900460ff1661076b5760405162461bcd60e51b81526004016106c590612b0d565b5f815f0361215e57604051636296f1b960e11b815260040160405180910390fd5b5f8261217285670de0b6b3a76400006129c9565b61217c9190612ab8565b9050680755bf798b4a1bf1e481111561219b5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ad82612276565b611e329190612ab8565b5f6001600160a01b0385166121df57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061065b84845f856123f0565b60605f5f856001600160a01b03168560405161221e9190612b95565b5f60405180830381855af49150503d805f8114612256576040519150601f19603f3d011682016040523d82523d5f602084013e61225b565b606091505b509150915061226c868383876124c7565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361228d57919050565b680755bf798b4a1bf1e582126122aa5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106c5565b5f5f866001600160a01b0316858760405161246c9190612b95565b5f6040518083038185875af1925050503d805f81146124a6576040519150601f19603f3d011682016040523d82523d5f602084013e6124ab565b606091505b50915091506124bc878383876124c7565b979650505050505050565b606083156125355782515f0361252e576001600160a01b0385163b61252e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106c5565b5081611e32565b611e32838381511561254a5781518083602001fd5b8060405162461bcd60e51b81526004016106c59190612bb0565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b038116811461259a575f5ffd5b919050565b5f5f5f606084860312156125b1575f5ffd5b6125ba84612584565b92506125c860208501612584565b91506125d660408501612584565b90509250925092565b6001600160a01b038116811461074a575f5ffd5b5f60208284031215612603575f5ffd5b813561065e816125df565b801515811461074a575f5ffd5b5f5f5f6060848603121561262d575f5ffd5b61263684612584565b925060208401359150604084013561264d8161260e565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561267d575f5ffd5b8235612688816125df565b915060208301356001600160401b038111156126a2575f5ffd5b8301601f810185136126b2575f5ffd5b80356001600160401b038111156126cb576126cb612658565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126f9576126f9612658565b604052818152828201602001871015612710575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612742575f5ffd5b843561274d816125df565b9350602085013561275d816125df565b925061276b60408601612584565b915061277960608601612584565b905092959194509250565b803563ffffffff8116811461259a575f5ffd5b5f5f604083850312156127a8575f5ffd5b6127b183612584565b91506127bf60208401612784565b90509250929050565b5f5f604083850312156127d9575f5ffd5b8235915060208301356127eb8161260e565b809150509250929050565b5f5f5f5f60808587031215612809575f5ffd5b843593506020850135925061282060408601612584565b915061277960608601612784565b5f60a08284031215611ccb575f5ffd5b5f5f5f5f6101008587031215612852575f5ffd5b61285c868661282e565b935061286a60a08601612584565b925061287860c08601612584565b915061277960e08601612784565b5f60208284031215612896575f5ffd5b5035919050565b5f5f604083850312156128ae575f5ffd5b82356128b9816125df565b915060208301356127eb816125df565b5f5f5f5f61010085870312156128dd575f5ffd5b6128e685612584565b9350602085013592506128fb60408601612784565b9150612779866060870161282e565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129a2565b8082028115828204841417610c2457610c246129a2565b6001600160401b038281168282160390811115610c2457610c246129a2565b6001600160401b038181168382160290811690818114612a2157612a216129a2565b5092915050565b5f60208284031215612a38575f5ffd5b5051919050565b5f60208284031215612a4f575f5ffd5b610c2182612784565b5f60208284031215612a68575f5ffd5b813560ff8116811461065e575f5ffd5b5f60208284031215612a88575f5ffd5b610c2182612584565b80820180821115610c2457610c246129a2565b634e487b7160e01b5f52601260045260245ffd5b5f82612ac657612ac6612aa4565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612aed57612aed612aa4565b500690565b5f60208284031215612b02575f5ffd5b815161065e816125df565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b68575f5ffd5b815161065e8161260e565b5f5b83811015612b8d578181015183820152602001612b75565b50505f910152565b5f8251612ba6818460208701612b73565b9190910192915050565b602081525f8251806020840152612bce816040850160208701612b73565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b86dccef61cd132ca45980c090fbd2b245465c5210ce7b53ab59fa4b3d9b3fc64736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000010001": { @@ -285,7 +285,7 @@ "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010001" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010002": { @@ -293,7 +293,7 @@ "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610398578063f2fde38b146103b5575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103d4565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b610484565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da61054b565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b610563565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b61062a565b348015610252575f5ffd5b5061013e610640565b61013e610269366004611259565b610654565b348015610279575f5ffd5b50610282610709565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107ba565b3480156102cf575f5ffd5b5061013e6107cb565b3480156102e3575f5ffd5b5061013e610842565b3480156102f7575f5ffd5b506101a9610855565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b610863565b348015610347575f5ffd5b5061013e610356366004611346565b61086f565b348015610366575f5ffd5b5060c954610380906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bd565b3480156103a3575f5ffd5b506065546001600160a01b03166101a9565b3480156103c0575f5ffd5b5061013e6103cf36600461119f565b61094b565b6103dc6109bc565b5f54600290610100900460ff161580156103fc57505f5460ff8083169116105b6104215760405162461bcd60e51b815260040161041890611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a257505f54600160ff909116105b806104bb5750303b1580156104bb57505f5460ff166001145b6104d75760405162461bcd60e51b815260040161041890611383565b5f805460ff1916600117905580156104f8575f805461ff0019166101001790555b6105028230610a16565b8015610547575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055a60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105ab5760405162461bcd60e51b8152600401610418906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105dd610a55565b6001600160a01b0316146106035760405162461bcd60e51b81526004016104189061141d565b61060c81610a70565b604080515f8082526020820190925261062791839190610a78565b50565b5f610636848484610be2565b90505b9392505050565b610648610c34565b610652335f610cc4565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216300361069c5760405162461bcd60e51b8152600401610418906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106ce610a55565b6001600160a01b0316146106f45760405162461bcd60e51b81526004016104189061141d565b6106fd82610a70565b61054782826001610a78565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216146107a85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610418565b505f5160206115565f395f51905f5290565b6107c26109bc565b6106525f610cdd565b60655433906001600160a01b031681146108395760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610418565b61062781610cdd565b61084a610cf6565b610652336001610cc4565b5f61085e610a55565b905090565b5f610639468484610be2565b6108776109bc565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c85760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109536109bc565b606580546001600160a01b0383166001600160a01b031990911681179091556109846033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610418565b806001600160a01b038116610a3e5760405163538ba4f960e01b815260040160405180910390fd5b610a4783610d67565b610a5082610dc5565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106276109bc565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aab57610a5083610e35565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b05575060408051601f3d908101601f19168201909252610b0291810190611469565b60015b610b685760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610418565b5f5160206115565f395f51905f528114610bd65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610418565b50610a50838383610ed0565b5f610bed8484610efa565b905081158015610c0457506001600160a01b038116155b1561063957604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610418565b610c4860c954610100900460ff1660021490565b610c655760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062781610fa4565b610d0a60c954610100900460ff1660021490565b15610d285760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cba565b5f54610100900460ff16610d8d5760405162461bcd60e51b815260040161041890611480565b610d95610ff5565b610db36001600160a01b03821615610dad5781610cdd565b33610cdd565b5060c9805461ff001916610100179055565b5f54610100900460ff16610deb5760405162461bcd60e51b815260040161041890611480565b6001600160401b03461115610e135760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610ea25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610418565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ed98361101b565b5f82511180610ee55750805b15610a5057610ef4838361105a565b50505050565b6097545f906001600160a01b031680610f2657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f78573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f9c91906114cb565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106525760405162461bcd60e51b815260040161041890611480565b61102481610e35565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061063983836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610418565b5081610f9c565b610f9c83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104189190611523565b6001600160a01b0381168114610627575f5ffd5b5f602082840312156111af575f5ffd5b81356106398161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516106398161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220aaaf966a2003ebe4671aa9de570afe05d0301fbbd078871e556d1063abb547fc64736f6c634300081b0033", + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", "balance": "0x0" }, "0x1670010000000000000000000000000000010002": { @@ -307,13 +307,13 @@ "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010002" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212205339f45a82df35ebd66aff7c8a93c20457e46388cef179bebf6908c53edcb0ec64736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", "balance": "0x0" }, "0x5dADBb58A8ACfCaec475a08bBB4054F8874A3A8b": { "contractName": "LibNetwork", "storage": {}, - "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220d2ed9c77f04f64361c69bdfb0329b3e5fa56e1ff710741c1e2e741980048e13e64736f6c634300081b0033", + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa28e419f92948effce2eaec534c53f13c8015c95a6be7019674d64d2aac3ae164736f6c634300081b0033", "balance": "0x0" }, "0x0167001000000000000000000000000000010099": { @@ -363,7 +363,7 @@ "0x2589e1958c4e4f4a5f777b0b92a3170cc21771a8d3580331a71232f8624f7628": "0x00000000000000000000000000000000000000000000000000000000000fa000", "0x1f27de92fedf410197c8a09d0f2f03372d92b75c9889a6a61cf491395877fbcf": "0x00000000000000000000000000000000000000000000000000000000000fa000" }, - "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220a2d510f3e3b97dc37742483584d58b9ce6a475c863bdf8ce7d20a867d41e3f3564736f6c634300081b0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220afb53222eb165673ba5dfc3c8883c6d8b4942e876e8c5b0c567a03996e20a58864736f6c634300081b0033", "balance": "0x0" } } \ No newline at end of file From 93ed527e57d5636188984ae6039ba013b4850941 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 3 Nov 2024 21:45:52 +0800 Subject: [PATCH 10/30] feat: remove timestamp check in prepareWork --- miner/worker.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/miner/worker.go b/miner/worker.go index 434f698370dc..bc1f27e2e221 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -165,10 +165,6 @@ func (miner *Miner) prepareWork(genParams *generateParams, witness bool) (*envir return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) } timestamp = parent.Time + 1 - } else { - if parent.Time > timestamp { - return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) - } } } // Construct the sealing block header. From 266c8cabf4d9dae1c4c82db9cea04fb2a2f76a2e Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Nov 2024 15:30:31 +0800 Subject: [PATCH 11/30] feat: merge changes in #281 --- cmd/geth/config.go | 5 + cmd/geth/main.go | 2 +- cmd/utils/taiko_flags.go | 13 +- core/taiko_genesis.go | 7 +- core/taiko_genesis/genesis_alloc.go | 3 + core/taiko_genesis/preconf_devnet.json | 369 +++++++++++++++++++++++ eth/api_backend.go | 14 +- eth/backend.go | 5 +- eth/ethconfig/config.go | 3 + internal/ethapi/api.go | 122 +++++++- internal/ethapi/api_test.go | 5 + internal/ethapi/backend.go | 3 + internal/ethapi/taiko_preconf.go | 94 ++++++ internal/ethapi/transaction_args_test.go | 5 + internal/flags/categories.go | 2 + params/config.go | 1 + params/taiko_config.go | 2 + 17 files changed, 642 insertions(+), 13 deletions(-) create mode 100644 core/taiko_genesis/preconf_devnet.json create mode 100644 internal/ethapi/taiko_preconf.go diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 87481c805086..ef37a55d7014 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -192,6 +192,11 @@ func makeFullNode(ctx *cli.Context) *node.Node { cfg.Eth.OverrideVerkle = &v } + // CHANGE(taiko): set preconfirmation forwarding URL. + if ctx.IsSet(utils.PreconfirmationForwardingURLFlag.Name) { + cfg.Eth.PreconfirmationForwardingURL = ctx.String(utils.PreconfirmationForwardingURLFlag.Name) + } + backend, eth := utils.RegisterEthService(stack, &cfg.Eth) // CHANGE(TAIKO): register Taiko RPC APIs. diff --git a/cmd/geth/main.go b/cmd/geth/main.go index c7056b02d24c..927368e8bb8e 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -261,7 +261,7 @@ func init() { metricsFlags, ) // CHANGE(taiko): append Taiko flags into the original GETH flags - app.Flags = append(app.Flags, &utils.TaikoFlag) + app.Flags = append(app.Flags, utils.TaikoFlag, utils.PreconfirmationForwardingURLFlag) flags.AutoEnvVars(app.Flags, "GETH") diff --git a/cmd/utils/taiko_flags.go b/cmd/utils/taiko_flags.go index 54279f3fedc1..74de57f2f191 100644 --- a/cmd/utils/taiko_flags.go +++ b/cmd/utils/taiko_flags.go @@ -5,6 +5,7 @@ import ( "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/eth/ethconfig" + "github.com/ethereum/go-ethereum/internal/flags" "github.com/ethereum/go-ethereum/node" "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" @@ -12,9 +13,15 @@ import ( ) var ( - TaikoFlag = cli.BoolFlag{ - Name: "taiko", - Usage: "Taiko network", + TaikoFlag = &cli.BoolFlag{ + Name: "taiko", + Usage: "Taiko network", + Category: flags.TaikoCategory, + } + PreconfirmationForwardingURLFlag = &cli.StringFlag{ + Name: "taiko.preconfirmationForwardingUrl", + Usage: "URL to forward RPC requests before confirmation", + Category: flags.TaikoCategory, } ) diff --git a/core/taiko_genesis.go b/core/taiko_genesis.go index 0803749f38e1..2adb96d528bf 100644 --- a/core/taiko_genesis.go +++ b/core/taiko_genesis.go @@ -10,7 +10,8 @@ import ( ) var ( - InternalDevnetOntakeBlock = new(big.Int).SetUint64(0) + InternalDevnetOntakeBlock = common.Big0 + PreconfDevnetOntakeBlock = common.Big0 HeklaOntakeBlock = new(big.Int).SetUint64(840_512) MainnetOntakeBlock = new(big.Int).SetUint64(538_304) ) @@ -54,6 +55,10 @@ func TaikoGenesisBlock(networkID uint64) *Genesis { chainConfig.ChainID = params.HeklaNetworkID chainConfig.OntakeBlock = HeklaOntakeBlock allocJSON = taikoGenesis.HeklaGenesisAllocJSON + case params.PreconfDevnetNetworkID.Uint64(): + chainConfig.ChainID = params.PreconfDevnetNetworkID + chainConfig.OntakeBlock = PreconfDevnetOntakeBlock + allocJSON = taikoGenesis.PreconfDevnetGenesisAllocJSON default: chainConfig.ChainID = params.TaikoInternalL2ANetworkID chainConfig.OntakeBlock = InternalDevnetOntakeBlock diff --git a/core/taiko_genesis/genesis_alloc.go b/core/taiko_genesis/genesis_alloc.go index dbaf56f8dc6e..ca9634635203 100644 --- a/core/taiko_genesis/genesis_alloc.go +++ b/core/taiko_genesis/genesis_alloc.go @@ -33,3 +33,6 @@ var HeklaGenesisAllocJSON []byte //go:embed mainnet.json var MainnetGenesisAllocJSON []byte + +//go:embed preconf_devnet.json +var PreconfDevnetGenesisAllocJSON []byte diff --git a/core/taiko_genesis/preconf_devnet.json b/core/taiko_genesis/preconf_devnet.json new file mode 100644 index 000000000000..24759cb84a54 --- /dev/null +++ b/core/taiko_genesis/preconf_devnet.json @@ -0,0 +1,369 @@ +{ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { + "balance": "0x3782dace9d90000000" + }, + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { + "balance": "0x3782dace9d90000000" + }, + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { + "balance": "0x3782dace9d90000000" + }, + "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { + "balance": "0x3782dace9d90000000" + }, + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { + "balance": "0x3782dace9d90000000" + }, + "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { + "balance": "0x3782dace9d90000000" + }, + "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { + "balance": "0x3782dace9d90000000" + }, + "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { + "balance": "0x3782dace9d90000000" + }, + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { + "balance": "0x3782dace9d90000000" + }, + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { + "balance": "0x3782dace9d90000000" + }, + "0xBcd4042DE499D14e55001CcbB24a551F3b954096": { + "balance": "0x3782dace9d90000000" + }, + "0x71bE63f3384f5fb98995898A86B02Fb2426c5788": { + "balance": "0x3782dace9d90000000" + }, + "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": { + "balance": "0x3782dace9d90000000" + }, + "0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec": { + "balance": "0x3782dace9d90000000" + }, + "0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097": { + "balance": "0x3782dace9d90000000" + }, + "0xcd3B766CCDd6AE721141F452C550Ca635964ce71": { + "balance": "0x3782dace9d90000000" + }, + "0x2546BcD3c84621e976D8185a91A922aE77ECEc30": { + "balance": "0x3782dace9d90000000" + }, + "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E": { + "balance": "0x3782dace9d90000000" + }, + "0xdD2FD4581271e230360230F9337D5c0430Bf44C0": { + "balance": "0x3782dace9d90000000" + }, + "0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199": { + "balance": "0x3782dace9d90000000" + }, + "0x7D86687F980A56b832e9378952B738b614A99dc6": { + "balance": "0x3782dace9d90000000" + }, + "0x11e8F3eA3C6FcF12EcfF2722d75CEFC539c51a1C": { + "balance": "0x3782dace9d90000000" + }, + "0x9eAF5590f2c84912A08de97FA28d0529361Deb9E": { + "balance": "0x3782dace9d90000000" + }, + "0x1003ff39d25F2Ab16dBCc18EcE05a9B6154f65F4": { + "balance": "0x3782dace9d90000000" + }, + "0x4779d18931B35540F84b0cd0e9633855B84df7b8": { + "balance": "0x3782dace9d90000000" + }, + "0x1c87Bb9234aeC6aDc580EaE6C8B59558A4502220": { + "balance": "0x3782dace9d90000000" + }, + "0x0d803cdeEe5990f22C2a8DF10A695D2312dA26CC": { + "balance": "0x3782dace9d90000000" + }, + "0xAb707cb80e7de7C75d815B1A653433F3EEc44c74": { + "balance": "0x3782dace9d90000000" + }, + "0xe8B1ff302A740fD2C6e76B620d45508dAEc2DDFf": { + "balance": "0x3782dace9d90000000" + }, + "0xa0EC9eE47802CeB56eb58ce80F3E41630B771b04": { + "balance": "0x3782dace9d90000000" + }, + "0x042a63149117602129B6922ecFe3111168C2C323": { + "balance": "0x3782dace9d90000000" + }, + "0xA1196426b41627ae75Ea7f7409E074BE97367da2": { + "balance": "0x3782dace9d90000000" + }, + "0xE74cEf90b6CF1a77FEfAd731713e6f53e575C183": { + "balance": "0x3782dace9d90000000" + }, + "0x7Df8Efa6d6F1CB5C4f36315e0AcB82b02Ae8BA40": { + "balance": "0x3782dace9d90000000" + }, + "0x9E126C57330FA71556628e0aabd6B6B6783d99fA": { + "balance": "0x3782dace9d90000000" + }, + "0xcBDc0F9a4C38f1e010bD3B6e43598A55D1868c23": { + "balance": "0x3782dace9d90000000" + }, + "0xBc5BdceE96b1BC47822C74e6f64186fbA7d686be": { + "balance": "0x3782dace9d90000000" + }, + "0x0536896a5e38BbD59F3F369FF3682677965aBD19": { + "balance": "0x3782dace9d90000000" + }, + "0xFE0f143FcAD5B561b1eD2AC960278A2F23559Ef9": { + "balance": "0x3782dace9d90000000" + }, + "0x98D08079928FcCB30598c6C6382ABfd7dbFaA1cD": { + "balance": "0x3782dace9d90000000" + }, + "0x0167001000000000000000000000000000000006": { + "contractName": "SharedAddressManagerImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000006161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000006": { + "contractName": "SharedAddressManager", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", + "0x874594376407a7a3ecea7d4704f3d74c6c46d5ebede74ed82e228810d8de14e8": "0x0000000000000000000000001670010000000000000000000000000000000002", + "0x2723bcf67bd1580da6815ff7d2e86d877ad3a715975e5ec695c979712859d633": "0x0000000000000000000000001670010000000000000000000000000000000003", + "0x0b9331c6e6848711b59bebda4cb38292225176ce8cfca5d6019d5b562dc3ed9e": "0x0000000000000000000000001670010000000000000000000000000000000004", + "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", + "0xfe44fe816c0baa33783639d99e595cb6de463e186ec113aaed043e42d2c4e279": "0x0000000000000000000000000167001000000000000000000000000000010096", + "0xd2d6c2a7f8afdb0440c97960518d1f1133dc92587d9c6884dbaff6290e06319c": "0x0000000000000000000000000167001000000000000000000000000000010097", + "0x6db8284aa664f2ba76ffc7a2219f82b728ba258e79df0e93d3eb45b5cb231a69": "0x0000000000000000000000000167001000000000000000000000000000010098", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000006" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000000001": { + "contractName": "BridgeImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a2578063eefbf17e146106bf578063f09a4016146106e5578063f2fde38b14610704575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f9c565b610723565b005b34801561024d575f5ffd5b50610240610a21565b610269610264366004612fea565b610ad8565b604051610277929190613176565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461318e565b610e8e565b60405161027792919061324b565b3480156102b8575f5ffd5b506102c161134e565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb36600461329a565b611366565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b506103556103413660046132b5565b60fc6020525f908152604090205460ff1681565b60405161027791906132cc565b34801561036d575f5ffd5b5061030f61037c3660046132f0565b61142d565b34801561038c575f5ffd5b50610240611443565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133f3565b611457565b3480156103d7575f5ffd5b506103ab611510565b3480156103eb575f5ffd5b506102c16103fa36600461318e565b6115c2565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fea565b61162d565b348015610449575f5ffd5b506102406116fb565b34801561045d575f5ffd5b5061024061170c565b348015610471575f5ffd5b506104856104803660046132b5565b611783565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b436600461329a565b6117a1565b3480156104c4575f5ffd5b50610240611821565b3480156104d8575f5ffd5b5061030f611834565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461343f565b611842565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fea565b61186e565b348015610566575f5ffd5b5061024061057536600461318e565b611a5d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613458565b611d61565b3480156105ba575f5ffd5b506102c16105c936600461318e565b611d6d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe36600461357b565b611dce565b34801561060e575f5ffd5b50610617611dfd565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab6106653660046132b5565b60031890565b348015610676575f5ffd5b5060c9546201000090046001600160401b03165b6040516001600160401b039091168152602001610277565b3480156106ad575f5ffd5b506065546001600160a01b031661030f565b3480156106ca575f5ffd5b5060fb5461068a90600160401b90046001600160401b031681565b3480156106f0575f5ffd5b506102406106ff3660046135ac565b611ea4565b34801561070f575f5ffd5b5061024061071e36600461329a565b611f6b565b61073360e0830160c0840161343f565b46816001600160401b03161461075c57604051631c6c777560e31b815260040160405180910390fd5b61076c60a084016080850161343f565b6001600160401b038116158061078a575046816001600160401b0316145b156107a857604051631c6c777560e31b815260040160405180910390fd5b6107bc60c954610100900460ff1660021490565b156107da5760405163bae6e2a960e01b815260040160405180910390fd5b60026107e860c95460ff1690565b60ff16036108095760405163dfc60d8560e01b815260040160405180910390fd5b6108136002611fdc565b5f6108206105fe866135d8565b905061082d816001611ff2565b61083b856101200135612044565b610858576040516335856fbd60e21b815260040160405180910390fd5b5f61087d866108786d7369676e616c5f7365727669636560901b5f611d61565b6120e5565b156108c8576108c18661012001356188b860405180602001604052805f8152508960e00160208101906108b0919061329a565b6001600160a01b03169291906121dc565b9050610942565b6108d860608701604088016135e3565b63ffffffff1615806108e75750845b801561091557506108ff610100870160e0880161329a565b6001600160a01b0316336001600160a01b031614155b15610933576040516372b6e1c360e11b815260040160405180910390fd5b61093f86835a5f612219565b90505b80156109585761095382600261233d565b610a0f565b84156109f65761096982600361233d565b6109846d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f091906135fc565b50610a0f565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a1b6001611fdc565b50505050565b610a296123fa565b5f54600290610100900460ff16158015610a4957505f5460ff8083169116105b610a6e5760405162461bcd60e51b8152600401610a6590613613565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b3e60c0840160a0850161329a565b6001600160a01b038116610b655760405163538ba4f960e01b815260040160405180910390fd5b610b76610100850160e0860161329a565b6001600160a01b038116610b9d5760405163538ba4f960e01b815260040160405180910390fd5b610bad60e0860160c0870161343f565b6001600160401b0381161580610bcb575046816001600160401b0316145b15610be957604051631c6c777560e31b815260040160405180910390fd5b610bfd60c954610100900460ff1660021490565b15610c1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2960c95460ff1690565b60ff1603610c4a5760405163dfc60d8560e01b815260040160405180910390fd5b610c546002611fdc565b610c6460608701604088016135e3565b63ffffffff165f03610cac57610c80604087016020880161343f565b6001600160401b031615610ca75760405163c9f5178760e01b815260040160405180910390fd5b610cd4565b610cb586612454565b5f03610cd4576040516308c2ad5360e01b815260040160405180910390fd5b5f610ce861051860e0890160c08a0161343f565b50905080610d0957604051631c6c777560e31b815260040160405180910390fd5b34610d1a6040890160208a0161343f565b610d32906001600160401b03166101208a0135613675565b14610d5057604051634ac2abdf60e11b815260040160405180910390fd5b610d59876135d8565b60fb8054919650600160401b9091046001600160401b0316906008610d7d83613688565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610db885611dce565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610dea91906136b2565b60405180910390a2610e0d6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e3a91815260200190565b6020604051808303815f875af1158015610e56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7a91906135fc565b5050610e866001611fdc565b505050915091565b5f5f610ea460c954610100900460ff1660021490565b15610ec25760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed060c95460ff1690565b60ff1603610ef15760405163dfc60d8560e01b815260040160405180910390fd5b610efb6002611fdc565b5f5a905046610f1060e0880160c0890161343f565b6001600160401b031614610f3757604051631c6c777560e31b815260040160405180910390fd5b610f4760a087016080880161343f565b6001600160401b03161580610f73575046610f6860a088016080890161343f565b6001600160401b0316145b15610f9157604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fc5610100880160e0890161329a565b6001600160a01b031633148015606083015261103457610feb60608801604089016135e3565b63ffffffff165f03611010576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103457604051631e3b03c960e01b815260040160405180910390fd5b5f6110416105fe896135d8565b905061104d815f611ff2565b5f6110696d7369676e616c5f7365727669636560901b5f611d61565b63ffffffff881660208501529050611093818361108c60a08d0160808e0161343f565b8b8b6124a7565b63ffffffff166040808501919091526110d2906110b5908b0160208c0161343f565b6110cd906001600160401b03166101208c0135613675565b612044565b6110ef576040516335856fbd60e21b815260040160405180910390fd5b5f6110fa8a836120e5565b156111135750600295506001945061012089013561115a565b5f8460600151611123575a61112c565b61112c8b612454565b905061113e8b85838860600151612219565b1561114f57600297505f9650611158565b60019750600296505b505b61116a60408b0160208c0161343f565b6001600160401b0316156112cb5761118860408b0160208c0161343f565b61119b906001600160401b031682613675565b9050836060015180156111c257506111b960608b0160408c016135e3565b63ffffffff1615155b156112cb57604084015163ffffffff16614e20025a6111ff6111e86101408e018e6136c4565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112289183919061255216565b0390505f61123c60608e0160408f016135e3565b63ffffffff168d6020016020810190611255919061343f565b6001600160401b031683028161126d5761126d61370d565b0490505f48830290505f6112b18f602001602081019061128d919061343f565b6001600160401b0316848410156112a95784840160011c6112ab565b845b90612567565b958690039590506112c533826188b861257b565b50505050505b6112f3816188b86112e36101008e0160e08f0161329a565b6001600160a01b0316919061257b565b6112fd838861233d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b8660405161132f9291906138a5565b60405180910390a250505050506113466001611fdc565b935093915050565b5f600261135d60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113ae5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166113e06125be565b6001600160a01b0316146114065760405162461bcd60e51b8152600401610a6590613945565b61140f816125d9565b604080515f8082526020820190925261142a918391906125e1565b50565b5f61143984848461274b565b90505b9392505050565b61144b6127a7565b611455335f612837565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116300361149f5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114d16125be565b6001600160a01b0316146114f75760405162461bcd60e51b8152600401610a6590613945565b611500826125d9565b61150c828260016125e1565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146115af5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a65565b505f516020613b5f5f395f51905f525b90565b5f466115d460a086016080870161343f565b6001600160401b0316146115e957505f61143c565b6114396116076d7369676e616c5f7365727669636560901b5f611d61565b6116166106656105fe886135d8565b61162660e0880160c0890161343f565b86866128e4565b5f4661163f60a084016080850161343f565b6001600160401b03161461165457505f919050565b61166f6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166332676bc63061168a6105fe866135d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190613991565b92915050565b6117036123fa565b6114555f612966565b60655433906001600160a01b0316811461177a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a65565b61142a81612966565b5f6116f5620c35006101a06020601f8601819004020160041b6139ac565b806001600160a01b0381166117c95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b158015611807575f5ffd5b505af1158015611819573d5f5f3e3d5ffd5b505050505050565b61182961297f565b611455336001612837565b5f61183d6125be565b905090565b5f5f611859836562726964676560d01b600161142d565b6001600160a01b038116151594909350915050565b61187e60e0820160c0830161343f565b46816001600160401b0316146118a757604051631c6c777560e31b815260040160405180910390fd5b6118b760a083016080840161343f565b6001600160401b03811615806118d5575046816001600160401b0316145b156118f357604051631c6c777560e31b815260040160405180910390fd5b61190760c954610100900460ff1660021490565b156119255760405163bae6e2a960e01b815260040160405180910390fd5b600261193360c95460ff1690565b60ff16036119545760405163dfc60d8560e01b815260040160405180910390fd5b61195e6002611fdc565b61196f610100840160e0850161329a565b6001600160a01b0316336001600160a01b0316146119a0576040516372b6e1c360e11b815260040160405180910390fd5b5f6119ad6105fe856135d8565b90506119ba816001611ff2565b6119c581600361233d565b6119e06d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c91906135fc565b5050611a586001611fdc565b505050565b611a6d60a084016080850161343f565b46816001600160401b031614611a9657604051631c6c777560e31b815260040160405180910390fd5b611aa660e0850160c0860161343f565b6001600160401b0381161580611ac4575046816001600160401b0316145b15611ae257604051631c6c777560e31b815260040160405180910390fd5b611af660c954610100900460ff1660021490565b15611b145760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2260c95460ff1690565b60ff1603611b435760405163dfc60d8560e01b815260040160405180910390fd5b611b4d6002611fdc565b5f611b5a6105fe876135d8565b9050611b66815f611ff2565b5f611b826d7369676e616c5f7365727669636560901b5f611d61565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf29190613991565b611c0f5760405163ab035ad560e01b815260040160405180910390fd5b611c2e8160038418611c2760e08b0160c08c0161343f565b89896124a7565b50611c3a82600461233d565b611c48876101200135612044565b611c65576040516335856fbd60e21b815260040160405180910390fd5b611c8e62bc399d60e11b611c7f60808a0160608b0161329a565b6001600160a01b0316906129f0565b15611d3257611cad8230611ca860a08b0160808c0161343f565b612ac0565b611cbd608088016060890161329a565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf09291906139c8565b5f604051808303818588803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b5050505050611d2d5f195f1b5f1980612ac0565b611d4e565b611d4e6101208801356188b86112e360c08b0160a08c0161329a565b5050611d5a6001611fdc565b5050505050565b5f61143c46848461274b565b5f46611d7f60e0860160c0870161343f565b6001600160401b031614611d9457505f61143c565b611439611db26d7369676e616c5f7365727669636560901b5f611d61565b611dbe6105fe876135d8565b61162660a088016080890161343f565b5f81604051602001611de091906139e9565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e74604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e86575080515f19145b156115bf57604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec257505f54600160ff909116105b80611edb5750303b158015611edb57505f5460ff166001145b611ef75760405162461bcd60e51b8152600401610a6590613613565b5f805460ff191660011790558015611f18575f805461ff0019166101001790555b611f228383612b15565b8015611a58575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f736123fa565b606580546001600160a01b0383166001600160a01b03199091168117909155611fa46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200457612004613223565b5f83815260fc602052604090205460ff16600481111561202657612026613223565b1461150c576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120616c38bab7ba30afb6b0b730b3b2b960991b6001611d61565b90506001600160a01b03811661207a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120bf575f5ffd5b505af19250505080156120d0575060015b6120dc57505f92915050565b50600192915050565b5f806120f96101208501610100860161329a565b6001600160a01b03160361210f575060016116f5565b306121226101208501610100860161329a565b6001600160a01b031603612138575060016116f5565b6001600160a01b0382166121546101208501610100860161329a565b6001600160a01b03160361216a575060016116f5565b600461217a6101408501856136c4565b9050101580156121b15750637f07c94760e01b61219b6101408501856136c4565b6121a491613a1f565b6001600160e01b03191614155b801561143c575061143c6121cd6101208501610100860161329a565b6001600160a01b03163b151590565b5f6001600160a01b03851661220457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061222b608087016060880161329a565b6001600160a01b03160361224157612241613a57565b610120850135158015612261575061225d6101408601866136c4565b1590505b1561226e57506001612335565b825f0361227c57505f612335565b6122a084612290608088016060890161329a565b611ca860a0890160808a0161343f565b5f6122b36101208701610100880161329a565b90506101208601355f6122ca6101408901896136c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612324576123248188612b4f565b6123305f198080612ac0565b505050505b949350505050565b80600481111561234f5761234f613223565b5f83815260fc602052604090205460ff16600481111561237157612371613223565b0361238f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123b9576123b9613223565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123ee91906132cc565b60405180910390a25050565b6033546001600160a01b031633146114555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a65565b5f8061246e6124676101408501856136c4565b9050611783565b63ffffffff1690508061249f61248a60608601604087016135e3565b63ffffffff168361255290919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124cc876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b81526004016124ef959493929190613a6b565b6020604051808303815f875af1925050508015612529575060408051601f3d908101601f19168201909252612526918101906135fc565b60015b612546576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f818311612560578161143c565b5090919050565b5f818311612575578261143c565b50919050565b815f0361258757505050565b6125a183838360405180602001604052805f8152506121dc565b611a5857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b5f5f395f51905f52546001600160a01b031690565b61142a6123fa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561261457611a5883612b63565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561266e575060408051601f3d908101601f1916820190925261266b918101906135fc565b60015b6126d15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a65565b5f516020613b5f5f395f51905f52811461273f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a65565b50611a58838383612bfe565b5f6127568484612c22565b9050818061276c57506001600160a01b03811615155b8484909161279e57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610a65565b50509392505050565b6127bb60c954610100900460ff1660021490565b6127d85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061287f575061286a6d636861696e5f7761746368646f6760901b6001611d61565b6001600160a01b0316826001600160a01b0316145b15612888575050565b8080156128c257506128ad6e6272696467655f7761746368646f6760881b6001611d61565b6001600160a01b0316826001600160a01b0316145b156128cb575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612909876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b815260040161292c959493929190613a6b565b5f6040518083038186803b158015612942575f5ffd5b505afa925050508015612953575060015b61295e57505f612549565b506001612549565b606580546001600160a01b031916905561142a81612cc4565b61299360c954610100900460ff1660021490565b156129b15760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161282d565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612a4c9190613aac565b5f60405180830381855afa9150503d805f8114612a84576040519150601f19603f3d011682016040523d82523d5f602084013e612a89565b606091505b5091509150818015612a9c575080516020145b15612ab85780806020019051810190612ab59190613991565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b3d5760405163538ba4f960e01b815260040160405180910390fd5b612b4683612d15565b611a5882612d73565b612b5a603f82613ac7565b82101561150c57fe5b6001600160a01b0381163b612bd05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a65565b5f516020613b5f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c0783612de3565b5f82511180612c135750805b15611a5857610a1b8383612e22565b6097545f906001600160a01b031680612c4e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123359190613ae6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d3b5760405162461bcd60e51b8152600401610a6590613b01565b612d43612e47565b612d616001600160a01b03821615612d5b5781612966565b33612966565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d995760405162461bcd60e51b8152600401610a6590613b01565b6001600160401b03461115612dc15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612dec81612b63565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061143c8383604051806060016040528060278152602001613b7f60279139612e6d565b5f54610100900460ff166114555760405162461bcd60e51b8152600401610a6590613b01565b60605f5f856001600160a01b031685604051612e899190613aac565b5f60405180830381855af49150503d805f8114612ec1576040519150601f19603f3d011682016040523d82523d5f602084013e612ec6565b606091505b5091509150612ed786838387612ee1565b9695505050505050565b60608315612f4f5782515f03612f48576001600160a01b0385163b612f485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a65565b5081612335565b6123358383815115612f645781518083602001fd5b8060405162461bcd60e51b8152600401610a659190613b4c565b5f6101608284031215612575575f5ffd5b801515811461142a575f5ffd5b5f5f60408385031215612fad575f5ffd5b82356001600160401b03811115612fc2575f5ffd5b612fce85828601612f7e565b9250506020830135612fdf81612f8f565b809150509250929050565b5f60208284031215612ffa575f5ffd5b81356001600160401b0381111561300f575f5ffd5b61233584828501612f7e565b5f5b8381101561303557818101518382015260200161301d565b50505f910152565b5f815180845261305481602086016020860161301b565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161309060208501826001600160401b03169052565b5060408201516130a8604085018263ffffffff169052565b5060608201516130c360608501826001600160a01b03169052565b5060808201516130de60808501826001600160401b03169052565b5060a08201516130f960a08501826001600160a01b03169052565b5060c082015161311460c08501826001600160401b03169052565b5060e082015161312f60e08501826001600160a01b03169052565b5061010082015161314c6101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261233561016085018261303d565b828152604060208201525f6114396040830184613068565b5f5f5f604084860312156131a0575f5ffd5b83356001600160401b038111156131b5575f5ffd5b6131c186828701612f7e565b93505060208401356001600160401b038111156131dc575f5ffd5b8401601f810186136131ec575f5ffd5b80356001600160401b03811115613201575f5ffd5b866020828401011115613212575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b6005811061324757613247613223565b9052565b604081016132598285613237565b6004831061326957613269613223565b8260208301529392505050565b6001600160a01b038116811461142a575f5ffd5b803561329581613276565b919050565b5f602082840312156132aa575f5ffd5b813561143c81613276565b5f602082840312156132c5575f5ffd5b5035919050565b602081016116f58284613237565b80356001600160401b0381168114613295575f5ffd5b5f5f5f60608486031215613302575f5ffd5b61330b846132da565b925060208401359150604084013561332281612f8f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156133645761336461332d565b60405290565b5f82601f830112613379575f5ffd5b81356001600160401b038111156133925761339261332d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156133c0576133c061332d565b6040528181528382016020018510156133d7575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613404575f5ffd5b823561340f81613276565b915060208301356001600160401b03811115613429575f5ffd5b6134358582860161336a565b9150509250929050565b5f6020828403121561344f575f5ffd5b61143c826132da565b5f5f60408385031215613469575f5ffd5b823591506020830135612fdf81612f8f565b803563ffffffff81168114613295575f5ffd5b5f610160828403121561349f575f5ffd5b6134a7613341565b90506134b2826132da565b81526134c0602083016132da565b60208201526134d16040830161347b565b60408201526134e26060830161328a565b60608201526134f3608083016132da565b608082015261350460a0830161328a565b60a082015261351560c083016132da565b60c082015261352660e0830161328a565b60e0820152613538610100830161328a565b61010082015261012082810135908201526101408201356001600160401b03811115613562575f5ffd5b61356e8482850161336a565b6101408301525092915050565b5f6020828403121561358b575f5ffd5b81356001600160401b038111156135a0575f5ffd5b6123358482850161348e565b5f5f604083850312156135bd575f5ffd5b82356135c881613276565b91506020830135612fdf81613276565b5f6116f5368361348e565b5f602082840312156135f3575f5ffd5b61143c8261347b565b5f6020828403121561360c575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116f5576116f5613661565b5f6001600160401b0382166001600160401b0381036136a9576136a9613661565b60010192915050565b602081525f61143c6020830184613068565b5f5f8335601e198436030181126136d9575f5ffd5b8301803591506001600160401b038211156136f2575f5ffd5b602001915036819003821315613706575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613736575f5ffd5b83016020810192503590506001600160401b03811115613754575f5ffd5b803603821315613706575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137a482613797836132da565b6001600160401b03169052565b5f6137b1602083016132da565b6001600160401b031660208401526137cb6040830161347b565b63ffffffff1660408401526137e26060830161328a565b6001600160a01b031660608401526137fc608083016132da565b6001600160401b0316608084015261381660a0830161328a565b6001600160a01b031660a084015261383060c083016132da565b6001600160401b031660c084015261384a60e0830161328a565b6001600160a01b031660e0840152613865610100830161328a565b6001600160a01b0316610100840152610120828101359084015261388d610140830183613721565b610160610140860152612ab561016086018284613762565b60a081525f6138b760a083018561378a565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156139a1575f5ffd5b815161143c81612f8f565b63ffffffff81811683821601908111156116f5576116f5613661565b604081525f6139da604083018561378a565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f61143c6080830184613068565b80356001600160e01b03198116906004841015613a50576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613aa1608083018486613762565b979650505050505050565b5f8251613abd81846020870161301b565b9190910192915050565b5f82613ae157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613af6575f5ffd5b815161143c81613276565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081525f61143c602083018461303d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206e61aad42c8b57a755963db756b535ddf30400977c2a5a7162959c1da600b0a664736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000001": { + "contractName": "Bridge", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000001" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x033b258556117b43a1e00000" + }, + "0x0167001000000000000000000000000000000002": { + "contractName": "ERC20VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610519578063f09a401614610536578063f2fde38b14610555575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc366004613350565b610574565b005b3480156101de575f5ffd5b506101f26101ed366004613396565b610702565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e6102213660046133d1565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133ff565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b536600461341a565b610752565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e60565b3480156102f1575f5ffd5b506101d16103003660046133ff565b610e78565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e366004613482565b610f48565b34801561034e575f5ffd5b506101d1610f5e565b6101d16103653660046135ca565b610f72565b348015610375575f5ffd5b5061023e611027565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b83660046133d1565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110d8565b3480156103fd575f5ffd5b506101d16110e9565b6101d1610414366004613616565b611160565b348015610424575f5ffd5b506101d16112b0565b348015610438575f5ffd5b506102ba6112c3565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133ff565b6112d1565b6040516101fe9594939291906136cf565b348015610499575f5ffd5b506102ba6104a8366004613728565b611426565b6104c06104bb36600461374b565b611432565b6040516101fe9190613764565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101fe565b348015610524575f5ffd5b506065546001600160a01b03166102ba565b348015610541575f5ffd5b506101d1610550366004613854565b611875565b348015610560575f5ffd5b506101d161056f3660046133ff565b611984565b61058860c954610100900460ff1660021490565b156105a65760405163bae6e2a960e01b815260040160405180910390fd5b60026105b460c95460ff1690565b60ff16036105d55760405163dfc60d8560e01b815260040160405180910390fd5b6105df60026119f5565b6105e7611a0b565b505f6105f7610140840184613870565b6106059160049082906138b9565b81019061061291906138e0565b90505f5f8280602001905181019061062a919061398c565b9350505091505f61064e838760a001602081019061064891906133ff565b84611b01565b905061067861012087013561066960c0890160a08a016133ff565b6001600160a01b031690611ba9565b61068860c0870160a088016133ff565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106e8939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050506106fe60016119f5565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073157506001600160e01b03198216637f07c94760e01b145b8061074c57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f61075b611bb4565b600261076960c95460ff1690565b60ff160361078a5760405163dfc60d8560e01b815260040160405180910390fd5b61079460026119f5565b6001600160a01b03821615806107ca57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107dd57506001600160a01b0382163b155b156107fb5760405163dc63f98760e01b815260040160405180910390fd5b5f61080c60408501602086016133ff565b6001600160a01b0316148061083557504661082a6020850185613a80565b6001600160401b0316145b1561085357604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff161561088d576040516375c42fc160e01b815260040160405180910390fd5b5f6101308161089f6020870187613a80565b6001600160401b031681526020019081526020015f205f8560200160208101906108c991906133ff565b6001600160a01b0316815260208101919091526040015f205490506108f16276a70082613aaf565b4210156109115760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109226020870187613a80565b6001600160401b031681526020019081526020015f205f85602001602081019061094c91906133ff565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb2576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109db90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0790613ac2565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b50505050508152602001600282018054610a6b90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9790613ac2565b8015610ae25780601f10610ab957610100808354040283529160200191610ae2565b820191905f5260205f20905b815481529060010190602001808311610ac557829003601f168201915b505050505081525050905080604051602001610afe9190613b59565b6040516020818303038152906040528051906020012085604051602001610b259190613bdf565b6040516020818303038152906040528051906020012014610b5957604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b8d60018301826132f8565b610b9a600283015f6132f8565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd09063b8f2e0c560e01b611c0e565b8015610bf15750610bf16001600160a01b03851663b8f2e0c560e01b611c0e565b15610cb05760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c3c575f5ffd5b505af1158015610c4e573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610c99575f5ffd5b505af1158015610cab573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cd68282613d82565b5083905061012e5f610ceb6020880188613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d1591906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d6e9190613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d9891906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dce91906133ff565b6001600160a01b0316610de46020860186613a80565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e1d60608a018a613870565b610e2a60808c018c613870565b610e3a60608e0160408f01613e40565b604051610e4d9796959493929190613e5b565b60405180910390a35061074c60016119f5565b5f6002610e6f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ec95760405162461bcd60e51b8152600401610ec090613eb2565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610efb611cde565b6001600160a01b031614610f215760405162461bcd60e51b8152600401610ec090613efe565b610f2a81611cf9565b604080515f80825260208201909252610f4591839190611d01565b50565b5f610f54848484611e6b565b90505b9392505050565b610f66611ec7565b610f70335f611f57565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fba5760405162461bcd60e51b8152600401610ec090613eb2565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610fec611cde565b6001600160a01b0316146110125760405162461bcd60e51b8152600401610ec090613efe565b61101b82611cf9565b6106fe82826001611d01565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110c65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b505f5160206149de5f395f51905f5290565b6110e0611bb4565b610f705f611f5f565b60655433906001600160a01b031681146111575760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec0565b610f4581611f5f565b61117460c954610100900460ff1660021490565b156111925760405163bae6e2a960e01b815260040160405180910390fd5b60026111a060c95460ff1690565b60ff16036111c15760405163dfc60d8560e01b815260040160405180910390fd5b6111cb60026119f5565b5f8080806111db85870187613f55565b93509350935093505f6111ec611f78565b90506111f783612097565b5f611203868585611b01565b90506112186001600160a01b03851634611ba9565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129894939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a45050505050506106fe60016119f5565b6112b86120d3565b610f70336001611f57565b5f6112cc611cde565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161131990613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461134590613ac2565b80156113905780601f1061136757610100808354040283529160200191611390565b820191905f5260205f20905b81548152906001019060200180831161137357829003601f168201915b5050505050908060020180546113a590613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190613ac2565b801561141c5780601f106113f35761010080835404028352916020019161141c565b820191905f5260205f20905b8154815290600101906020018083116113ff57829003601f168201915b5050505050905085565b5f610f57468484611e6b565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a060c954610100900460ff1660021490565b156114be5760405163bae6e2a960e01b815260040160405180910390fd5b60026114cc60c95460ff1690565b60ff16036114ed5760405163dfc60d8560e01b815260040160405180910390fd5b6114f760026119f5565b8160c001355f0361151b57604051634299323b60e11b815260040160405180910390fd5b5f61152c60a08401608085016133ff565b6001600160a01b031603611553576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156760a08501608086016133ff565b6001600160a01b0316815260208101919091526040015f205460ff16156115a1576040516375c42fc160e01b815260040160405180910390fd5b6115b16080830160608401613a80565b6001600160401b03163410156115da57604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115e685612144565b6040805161016081019091525f8082529396509194509250602081016116126080890160608a01613a80565b6001600160401b0316815260200161163060c0890160a08a0161405a565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166190890189613a80565b6001600160401b031681526020015f6001600160a01b031688602001602081019061168c91906133ff565b6001600160a01b0316036116a057336116b0565b6116b06040890160208a016133ff565b6001600160a01b031681526020908101906116e7906116d1908a018a613a80565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f48565b6001600160a01b031681526020016117056080890160608a01613a80565b611718906001600160401b031634614075565b815260200185905290505f6117366562726964676560d01b82611426565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016117629190613764565b5f6040518083038185885af115801561177d573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117a59190810190614093565b965090506117b960608801604089016133ff565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f0160208101906118089190613a80565b89602001518d608001602081019061182091906133ff565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187060016119f5565b919050565b5f54610100900460ff161580801561189357505f54600160ff909116105b806118ac5750303b1580156118ac57505f5460ff166001145b61190f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec0565b5f805460ff191660011790558015611930575f805461ff0019166101001790555b61193a83836125de565b801561197f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61198c611bb4565b606580546001600160a01b0383166001600160a01b031990911681179091556119bd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a3c816001611426565b6001600160a01b0316336001600160a01b031614611a6d57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611aa9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acd91906141b3565b60208101519092506001600160a01b03163314611afd57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3457506020830151611b2f6001600160a01b0382168484612618565b611b9f565b611b3d8461267b565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b88575f5ffd5b505af1158015611b9a573d5f5f3e3d5ffd5b505050505b610f5781836126bd565b6106fe82825a61274c565b6033546001600160a01b03163314610f705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec0565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611c6a919061421b565b5f60405180830381855afa9150503d805f8114611ca2576040519150601f19603f3d011682016040523d82523d5f602084013e611ca7565b606091505b5091509150818015611cba575080516020145b15611cd65780806020019051810190611cd39190614236565b92505b505092915050565b5f5160206149de5f395f51905f52546001600160a01b031690565b610f45611bb4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d345761197f8361278f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8e575060408051601f3d908101601f19168201909252611d8b91810190614251565b60015b611df15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec0565b5f5160206149de5f395f51905f528114611e5f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec0565b5061197f83838361282a565b5f611e768484612854565b90508180611e8c57506001600160a01b03811615155b84849091611ebe57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ec0565b50509392505050565b611edb60c954610100900460ff1660021490565b611ef85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106fe611bb4565b606580546001600160a01b0319169055610f45816128fe565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611fa9816001611426565b6001600160a01b0316336001600160a01b031614611fda57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203a91906141b3565b91505f61205a83604001516116e16a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461209257604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b03811615806120b557506001600160a01b03811630145b15610f4557604051635b50f3f960e01b815260040160405180910390fd5b6120e760c954610100900460ff1660021490565b156121055760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f4d565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161218660a08801608089016133ff565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156123bc576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161220690613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461223290613ac2565b801561227d5780601f106122545761010080835404028352916020019161227d565b820191905f5260205f20905b81548152906001019060200180831161226057829003601f168201915b5050505050815260200160028201805461229690613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290613ac2565b801561230d5780601f106122e45761010080835404028352916020019161230d565b820191905f5260205f20905b8154815290600101906020018083116122f057829003601f168201915b505050505081525050925061234633308760c0013588608001602081019061233591906133ff565b6001600160a01b031692919061294f565b61235660a08601608087016133ff565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b15801561239a575f5ffd5b505af11580156123ac573d5f5f3e3d5ffd5b505050508460c00135915061255e565b6040518060a00160405280466001600160401b031681526020018660800160208101906123e991906133ff565b6001600160a01b0316815260200161240f61240a60a0890160808a016133ff565b612987565b60ff16815260200161242f61242a60a0890160808a016133ff565b612a3b565b815260200161244c61244760a0890160808a016133ff565b612ae5565b905292505f61246160a08701608088016133ff565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156124a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cc9190614251565b90506124e76001600160a01b038316333060c08b013561294f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561252b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254f9190614251565b6125599190614075565b935050505b30637f07c947843361257660608a0160408b016133ff565b8660405160200161258a9493929190614268565b60408051601f19818403018152908290526125a79160240161429d565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166126065760405163538ba4f960e01b815260040160405180910390fd5b61260f83612b2b565b61197f82612b89565b6040516001600160a01b03831660248201526044810182905261197f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bf9565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118705761074c82612ccc565b5f6126d96c38bab7ba30afb6b0b730b3b2b960991b6001611426565b90506001600160a01b0381161561197f576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612731575f5ffd5b505af1158015612743573d5f5f3e3d5ffd5b50505050505050565b815f0361275857505050565b61277283838360405180602001604052805f815250612ece565b61197f57604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127fc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec0565b5f5160206149de5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61283383612f0b565b5f8251118061283f5750805b1561197f5761284e8383612f4a565b50505050565b6097545f906001600160a01b03168061288057604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156128d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f691906142af565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261284e9085906323b872dd60e01b90608401612644565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129cc919061421b565b5f60405180830381855afa9150503d805f8114612a04576040519150601f19603f3d011682016040523d82523d5f602084013e612a09565b606091505b5091509150818015612a1c575080516020145b612a275760126128f6565b808060200190518101906128f691906142ca565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f60405180830381855afa9150503d805f8114612ab9576040519150601f19603f3d011682016040523d82523d5f602084013e612abe565b606091505b509150915081612adc5760405180602001604052805f8152506128f6565b6128f681612f6f565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f54610100900460ff16612b515760405162461bcd60e51b8152600401610ec0906142e5565b612b596130dc565b612b776001600160a01b03821615612b715781611f5f565b33611f5f565b5060c9805461ff001916610100179055565b5f54610100900460ff16612baf5760405162461bcd60e51b8152600401610ec0906142e5565b6001600160401b03461115612bd75760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131029092919063ffffffff16565b905080515f1480612c6d575080806020019051810190612c6d9190614236565b61197f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec0565b5f5f612ce06033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612d1697966001600160a01b031695949390602401614330565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d5c6c0627269646765645f657263323609c1b5f611426565b81604051612d699061332f565b612d7492919061439b565b604051809103905ff080158015612d8d573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612e0f90826143be565b5060808201516002820190612e2490826143be565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612ec09391929190614478565b60405180910390a450919050565b5f6001600160a01b038516612ef657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612f148161278f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5783836040518060600160405280602781526020016149fe60279139613110565b60606040825110612f8e578180602001905181019061074c91906144b0565b81516020036130c9575f5b60208160ff16108015612fce5750828160ff1681518110612fbc57612fbc6144e1565b01602001516001600160f81b03191615155b15612fe55780612fdd816144f5565b915050612f99565b5f8160ff166001600160401b03811115613001576130016134c1565b6040519080825280601f01601f19166020018201604052801561302b576020820181803683370190505b5090505f91505b60208260ff161080156130675750838260ff1681518110613055576130556144e1565b01602001516001600160f81b03191615155b15610f5757838260ff1681518110613081576130816144e1565b602001015160f81c60f81b818360ff16815181106130a1576130a16144e1565b60200101906001600160f81b03191690815f1a905350816130c1816144f5565b925050613032565b505060408051602081019091525f815290565b5f54610100900460ff16610f705760405162461bcd60e51b8152600401610ec0906142e5565b6060610f5484845f85613184565b60605f5f856001600160a01b03168560405161312c919061421b565b5f60405180830381855af49150503d805f8114613164576040519150601f19603f3d011682016040523d82523d5f602084013e613169565b606091505b509150915061317a8683838761325b565b9695505050505050565b6060824710156131e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec0565b5f5f866001600160a01b03168587604051613200919061421b565b5f6040518083038185875af1925050503d805f811461323a576040519150601f19603f3d011682016040523d82523d5f602084013e61323f565b606091505b50915091506132508783838761325b565b979650505050505050565b606083156132c95782515f036132c2576001600160a01b0385163b6132c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec0565b50816128f6565b6128f683838151156132de5781518083602001fd5b8060405162461bcd60e51b8152600401610ec0919061429d565b50805461330490613ac2565b5f825580601f10613313575050565b601f0160209004905f5260205f2090810190610f45919061333c565b6104ca8061451483390190565b5b80821115611afd575f815560010161333d565b5f5f60408385031215613361575f5ffd5b82356001600160401b03811115613376575f5ffd5b83016101608186031215613388575f5ffd5b946020939093013593505050565b5f602082840312156133a6575f5ffd5b81356001600160e01b031981168114610f57575f5ffd5b6001600160a01b0381168114610f45575f5ffd5b5f5f604083850312156133e2575f5ffd5b8235915060208301356133f4816133bd565b809150509250929050565b5f6020828403121561340f575f5ffd5b8135610f57816133bd565b5f5f6040838503121561342b575f5ffd5b82356001600160401b03811115613440575f5ffd5b830160a08186031215613451575f5ffd5b915060208301356133f4816133bd565b6001600160401b0381168114610f45575f5ffd5b8015158114610f45575f5ffd5b5f5f5f60608486031215613494575f5ffd5b833561349f81613461565b92506020840135915060408401356134b681613475565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134f7576134f76134c1565b60405290565b60405161016081016001600160401b03811182821017156134f7576134f76134c1565b604051601f8201601f191681016001600160401b0381118282101715613548576135486134c1565b604052919050565b5f6001600160401b03821115613568576135686134c1565b50601f01601f191660200190565b5f82601f830112613585575f5ffd5b8135602083015f61359d61359884613550565b613520565b90508281528583830111156135b0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f604083850312156135db575f5ffd5b82356135e6816133bd565b915060208301356001600160401b03811115613600575f5ffd5b61360c85828601613576565b9150509250929050565b5f5f60208385031215613627575f5ffd5b82356001600160401b0381111561363c575f5ffd5b8301601f8101851361364c575f5ffd5b80356001600160401b03811115613661575f5ffd5b856020828401011115613672575f5ffd5b6020919091019590945092505050565b5f5b8381101561369c578181015183820152602001613684565b50505f910152565b5f81518084526136bb816020860160208601613682565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f9061370a908301856136a4565b828103608084015261371c81856136a4565b98975050505050505050565b5f5f60408385031215613739575f5ffd5b8235915060208301356133f481613475565b5f60e082840312801561375c575f5ffd5b509092915050565b6020815261377e6020820183516001600160401b03169052565b5f602083015161379960408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128f66101808401826136a4565b5f5f60408385031215613865575f5ffd5b8235613451816133bd565b5f5f8335601e19843603018112613885575f5ffd5b8301803591506001600160401b0382111561389e575f5ffd5b6020019150368190038213156138b2575f5ffd5b9250929050565b5f5f858511156138c7575f5ffd5b838611156138d3575f5ffd5b5050820193919092039150565b5f602082840312156138f0575f5ffd5b81356001600160401b03811115613905575f5ffd5b6128f684828501613576565b805161187081613461565b8051611870816133bd565b60ff81168114610f45575f5ffd5b805161187081613927565b5f82601f83011261394f575f5ffd5b8151602083015f61396261359884613550565b9050828152858383011115613975575f5ffd5b613983836020830184613682565b95945050505050565b5f5f5f5f6080858703121561399f575f5ffd5b84516001600160401b038111156139b4575f5ffd5b850160a081880312156139c5575f5ffd5b6139cd6134d5565b81516139d881613461565b815260208201516139e8816133bd565b60208201526139f960408301613935565b604082015260608201516001600160401b03811115613a16575f5ffd5b613a2289828501613940565b60608301525060808201516001600160401b03811115613a40575f5ffd5b613a4c89828501613940565b6080830152509450613a6290506020860161391c565b9250613a706040860161391c565b6060959095015193969295505050565b5f60208284031215613a90575f5ffd5b8135610f5781613461565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074c5761074c613a9b565b600181811c90821680613ad657607f821691505b602082108103613af457634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613b4060a08501826136a4565b905060808301518482036080860152611cd382826136a4565b602081525f610f576020830184613afa565b803561187081613927565b5f5f8335601e19843603018112613b8b575f5ffd5b83016020810192503590506001600160401b03811115613ba9575f5ffd5b8036038213156138b2575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613bef81613461565b6001600160401b0381166020840152506020830135613c0d816133bd565b6001600160a01b0316604083810191909152830135613c2b81613927565b60ff8116606084015250613c426060840184613b76565b60a06080850152613c5760c085018284613bb7565b915050613c676080850185613b76565b848303601f190160a086015261317a838284613bb7565b601f82111561197f57805f5260205f20601f840160051c81016020851015613ca35750805b601f840160051c820191505b81811015613cc2575f8155600101613caf565b5050505050565b6001600160401b03831115613ce057613ce06134c1565b613cf483613cee8354613ac2565b83613c7e565b5f601f841160018114613d25575f8515613d0e5750838201355b5f19600387901b1c1916600186901b178355613cc2565b5f83815260208120601f198716915b82811015613d545786850135825560209485019460019092019101613d34565b5086821015613d70575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d8d81613461565b6001600160401b03811690508154816001600160401b031982161783556020840135613db8816133bd565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613def81613927565b825460ff60e01b191660e09190911b60ff60e01b1617825550613e156060830183613870565b613e23818360018601613cc9565b5050613e326080830183613870565b61284e818360028601613cc9565b5f60208284031215613e50575f5ffd5b8135610f5781613927565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e879083018789613bb7565b8281036060840152613e9a818688613bb7565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611870816133bd565b5f5f5f5f60808587031215613f68575f5ffd5b84356001600160401b03811115613f7d575f5ffd5b850160a08188031215613f8e575f5ffd5b613f966134d5565b8135613fa181613461565b81526020820135613fb1816133bd565b6020820152613fc260408301613b6b565b604082015260608201356001600160401b03811115613fdf575f5ffd5b613feb89828501613576565b60608301525060808201356001600160401b03811115614009575f5ffd5b61401589828501613576565b608083015250945061402b905060208601613f4a565b925061403960408601613f4a565b9396929550929360600135925050565b63ffffffff81168114610f45575f5ffd5b5f6020828403121561406a575f5ffd5b8135610f5781614049565b8181038181111561074c5761074c613a9b565b805161187081614049565b5f5f604083850312156140a4575f5ffd5b825160208401519092506001600160401b038111156140c1575f5ffd5b830161016081860312156140d3575f5ffd5b6140db6134fd565b6140e482613911565b81526140f260208301613911565b602082015261410360408301614088565b60408201526141146060830161391c565b606082015261412560808301613911565b608082015261413660a0830161391c565b60a082015261414760c08301613911565b60c082015261415860e0830161391c565b60e082015261416a610100830161391c565b61010082015261012082810151908201526101408201516001600160401b03811115614194575f5ffd5b6141a087828501613940565b6101408301525080925050509250929050565b5f60608284031280156141c4575f5ffd5b50604051606081016001600160401b03811182821017156141e7576141e76134c1565b6040528251815260208301516141fc816133bd565b6020820152604083015161420f81613461565b60408201529392505050565b5f825161422c818460208701613682565b9190910192915050565b5f60208284031215614246575f5ffd5b8151610f5781613475565b5f60208284031215614261575f5ffd5b5051919050565b608081525f61427a6080830187613afa565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5760208301846136a4565b5f602082840312156142bf575f5ffd5b8151610f57816133bd565b5f602082840312156142da575f5ffd5b8151610f5781613927565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f9061437b908301856136a4565b82810360c084015261438d81856136a4565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f54908301846136a4565b81516001600160401b038111156143d7576143d76134c1565b6143eb816143e58454613ac2565b84613c7e565b6020601f82116001811461441d575f83156144065750848201515b5f19600385901b1c1916600184901b178455613cc2565b5f84815260208120601f198516915b8281101561444c578785015182556020948501946001909201910161442c565b508482101561446957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61448a60608301866136a4565b828103602084015261449c81866136a4565b91505060ff83166040830152949350505050565b5f602082840312156144c0575f5ffd5b81516001600160401b038111156144d5575f5ffd5b6128f684828501613940565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361450a5761450a613a9b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122081cb565f479e4a5edf2c2fd18d805122a8190cec8f0969065a9660e524c17c9964736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000002": { + "contractName": "ERC20Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000002" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000000003": { + "contractName": "ERC721VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c39781461047f578063f09a40161461049c578063f2fde38b146104bb575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d366004612930565b6104da565b005b34801561019f575f5ffd5b506101b36101ae366004612976565b61068d565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d366004612a00565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a6d565b6106dd565b6040516101bf9190612af1565b348015610262575f5ffd5b506101b3610b63565b348015610276575f5ffd5b50610192610285366004612be1565b610b7b565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612c28565b610c4b565b3480156102eb575f5ffd5b50610192610c61565b610192610302366004612d93565b610c75565b348015610312575f5ffd5b506101e5610d2a565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612ddf565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610ddb565b34801561039a575f5ffd5b50610192610dec565b6101926103b1366004612e0d565b610e63565b3480156103c1575f5ffd5b50610192610fcc565b3480156103d5575f5ffd5b506102a9610fdf565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612be1565b610fed565b6040516101bf9493929190612e4b565b348015610435575f5ffd5b506102a9610444366004612e9a565b611138565b348015610454575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bf565b34801561048a575f5ffd5b506065546001600160a01b03166102a9565b3480156104a7575f5ffd5b506101926104b6366004612ebd565b611144565b3480156104c6575f5ffd5b506101926104d5366004612be1565b611253565b6104ee60c954610100900460ff1660021490565b1561050c5760405163bae6e2a960e01b815260040160405180910390fd5b600261051a60c95460ff1690565b60ff160361053b5760405163dfc60d8560e01b815260040160405180910390fd5b61054560026112c4565b61054d6112da565b505f61055d610140840184612ee9565b61056b916004908290612f2b565b8101906105789190612f52565b90505f5f82806020019051810190610590919061306c565b9350505091505f6105b4838760a00160208101906105ae9190612be1565b846113d0565b90506105de6101208701356105cf60c0890160a08a01612be1565b6001600160a01b031690611547565b6105ee60c0870160a08801612be1565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561063957610639612c67565b604051908082528060200260200182016040528015610662578160200160208202803683370190505b5060405161067394939291906131ab565b60405180910390a35050505061068960016112c4565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106bc57506001600160e01b03198216637f07c94760e01b145b806106d757506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261074b60c954610100900460ff1660021490565b156107695760405163bae6e2a960e01b815260040160405180910390fd5b6107728261325f565b8060e00151518160c00151511461079c5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107c7576040516303f8a7d360e01b815260040160405180910390fd5b60026107d560c95460ff1690565b60ff16036107f65760405163dfc60d8560e01b815260040160405180910390fd5b61080060026112c4565b6108106080840160608501613332565b6001600160401b031634101561083957604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084860c085018561334d565b905081101561089c5761085e60e085018561334d565b8281811061086e5761086e613392565b905060200201355f1461089457604051634299323b60e11b815260040160405180910390fd5b60010161083b565b506108c76380ac58cd60e01b6108b860a0860160808701612be1565b6001600160a01b031690611552565b6108e457604051633ee915f560e11b815260040160405180910390fd5b5f5f6108ef85611622565b6040805161016081019091525f808252929450909250602081016109196080890160608a01613332565b6001600160401b0316815260200161093760c0890160a08a016133a6565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096890890189613332565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109939190612be1565b6001600160a01b0316036109a757336109b7565b6109b76040890160208a01612be1565b6001600160a01b031681526020908101906109ef906109d8908a018a613332565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c4b565b6001600160a01b03168152602001610a0d6080890160608a01613332565b610a20906001600160401b0316346133d5565b815260200184905290505f610a3e6562726964676560d01b82611138565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a6a9190612af1565b5f6040518083038185885af1158015610a85573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610aad91908101906133f3565b96509050610ac16060880160408901612be1565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b179190612be1565b610b2460c08f018f61334d565b8f8060e00190610b34919061334d565b604051610b479796959493929190613543565b60405180910390a450505050610b5d60016112c4565b50919050565b5f6002610b7260c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610bcc5760405162461bcd60e51b8152600401610bc39061359f565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610bfe611b04565b6001600160a01b031614610c245760405162461bcd60e51b8152600401610bc3906135eb565b610c2d81611b1f565b604080515f80825260208201909252610c4891839190611b27565b50565b5f610c57848484611c91565b90505b9392505050565b610c69611ced565b610c73335f611d7d565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610cbd5760405162461bcd60e51b8152600401610bc39061359f565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cef611b04565b6001600160a01b031614610d155760405162461bcd60e51b8152600401610bc3906135eb565b610d1e82611b1f565b61068982826001611b27565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610dc95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bc3565b505f51602061403f5f395f51905f5290565b610de3611d81565b610c735f611ddb565b60655433906001600160a01b03168114610e5a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bc3565b610c4881611ddb565b610e7760c954610100900460ff1660021490565b15610e955760405163bae6e2a960e01b815260040160405180910390fd5b6002610ea360c95460ff1690565b60ff1603610ec45760405163dfc60d8560e01b815260040160405180910390fd5b610ece60026112c4565b5f808080610ede85870187613637565b93509350935093505f610eef611df4565b9050610efa83611f14565b5f610f068685856113d0565b9050610f1b6001600160a01b03851634611547565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f7957610f79612c67565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b50604051610fb4959493929190613730565b60405180910390a450505050505061068960016112c4565b610fd4611f50565b610c73336001611d7d565b5f610fe8611b04565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061102b90613788565b80601f016020809104026020016040519081016040528092919081815260200182805461105790613788565b80156110a25780601f10611079576101008083540402835291602001916110a2565b820191905f5260205f20905b81548152906001019060200180831161108557829003601f168201915b5050505050908060020180546110b790613788565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613788565b801561112e5780601f106111055761010080835404028352916020019161112e565b820191905f5260205f20905b81548152906001019060200180831161111157829003601f168201915b5050505050905084565b5f610c5a468484611c91565b5f54610100900460ff161580801561116257505f54600160ff909116105b8061117b5750303b15801561117b57505f5460ff166001145b6111de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bc3565b5f805460ff1916600117905580156111ff575f805461ff0019166101001790555b6112098383611fc1565b801561124e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61125b611d81565b606580546001600160a01b0383166001600160a01b0319909116811790915561128c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61130b816001611138565b6001600160a01b0316336001600160a01b03161461133c57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611378573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906137ba565b60208101519092506001600160a01b031633146113cc57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611496575060208301515f5b825181101561149057816001600160a01b03166342842e0e308686858151811061141857611418613392565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b15801561146f575f5ffd5b505af1158015611481573d5f5f3e3d5ffd5b505050508060010190506113ec565b50610c5a565b61149f84611ffb565b90505f5b825181101561153f57816001600160a01b03166340c10f19858584815181106114ce576114ce613392565b60200260200101516040518363ffffffff1660e01b81526004016115079291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561151e575f5ffd5b505af1158015611530573d5f5f3e3d5ffd5b505050508060010190506114a3565b509392505050565b61068982825a612042565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115ae9190613822565b5f60405180830381855afa9150503d805f81146115e6576040519150601f19603f3d011682016040523d82523d5f602084013e6115eb565b606091505b50915091508180156115fe575080516020145b1561161a5780806020019051810190611617919061383d565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161165860a0870160808801612be1565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611939576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546116f590613788565b80156117405780601f1061171757610100808354040283529160200191611740565b820191905f5260205f20905b81548152906001019060200180831161172357829003601f168201915b5050505050815260200160028201805461175990613788565b80601f016020809104026020016040519081016040528092919081815260200182805461178590613788565b80156117d05780601f106117a7576101008083540402835291602001916117d0565b820191905f5260205f20905b8154815290600101906020018083116117b357829003601f168201915b50505050508152505091505f5b6117ea60c086018661334d565b90508110156119335761180360a0860160808701612be1565b6001600160a01b03166342842e0e333061182060c08a018a61334d565b8681811061183057611830613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611884575f5ffd5b505af1158015611896573d5f5f3e3d5ffd5b506118ab9250505060a0860160808701612be1565b6001600160a01b03166342966c686118c660c088018861334d565b848181106118d6576118d6613392565b905060200201356040518263ffffffff1660e01b81526004016118fb91815260200190565b5f604051808303815f87803b158015611912575f5ffd5b505af1158015611924573d5f5f3e3d5ffd5b505050508060010190506117dd565b50611a79565b6040518060800160405280466001600160401b031681526020018560800160208101906119669190612be1565b6001600160a01b0316815260200161198c61198760a0880160808901612be1565b612085565b81526020016119a96119a460a0880160808901612be1565b612137565b905291505f5b6119bc60c086018661334d565b9050811015611a77576119d560a0860160808701612be1565b6001600160a01b03166342842e0e33306119f260c08a018a61334d565b86818110611a0257611a02613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a56575f5ffd5b505af1158015611a68573d5f5f3e3d5ffd5b505050508060010190506119af565b505b5030637f07c9478233611a926060880160408901612be1565b611a9f60c089018961334d565b604051602001611ab3959493929190613858565b60408051601f1981840301815290829052611ad0916024016138e9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061403f5f395f51905f52546001600160a01b031690565b610c48611d81565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b5a5761124e8361217d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bb4575060408051601f3d908101601f19168201909252611bb1918101906138fb565b60015b611c175760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bc3565b5f51602061403f5f395f51905f528114611c855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bc3565b5061124e838383612218565b5f611c9c8484612242565b90508180611cb257506001600160a01b03811615155b84849091611ce457604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610bc3565b50509392505050565b611d0160c954610100900460ff1660021490565b611d1e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106895b6033546001600160a01b03163314610c735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc3565b606580546001600160a01b0319169055610c48816122e4565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e25816001611138565b6001600160a01b0316336001600160a01b031614611e5657604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb691906137ba565b91505f611ed783604001516109e96b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611f0f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f3257506001600160a01b03811630145b15610c4857604051635b50f3f960e01b815260040160405180910390fd5b611f6460c954610100900460ff1660021490565b15611f825760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d73565b806001600160a01b038116611fe95760405163538ba4f960e01b815260040160405180910390fd5b611ff283612335565b61124e82612393565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061203d576106d782612403565b919050565b815f0361204e57505050565b61206883838360405180602001604052805f8152506125de565b61124e57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b5f60405180830381855afa9150503d805f8114612103576040519150601f19603f3d011682016040523d82523d5f602084013e612108565b606091505b5091509150816121265760405180602001604052805f81525061212f565b61212f8161261b565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b6001600160a01b0381163b6121ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bc3565b5f51602061403f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61222183612788565b5f8251118061222d5750805b1561124e5761223c83836127c7565b50505050565b6097545f906001600160a01b03168061226e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212f9190613912565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661235b5760405162461bcd60e51b8152600401610bc39061392d565b6123636127ec565b6123816001600160a01b0382161561237b5781611ddb565b33611ddb565b5060c9805461ff001916610100179055565b5f54610100900460ff166123b95760405162461bcd60e51b8152600401610bc39061392d565b6001600160401b034611156123e15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6124176033546001600160a01b031690565b609754602085015185516040808801516060890151915161244896956001600160a01b031694939290602401613978565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061248f6d627269646765645f65726337323160901b5f611138565b8160405161249c90612923565b6124a79291906139d9565b604051809103905ff0801580156124c0573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906125249082613a47565b50606082015160028201906125399082613a47565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125d09290613b01565b60405180910390a450919050565b5f6001600160a01b03851661260657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061263a57818060200190518101906106d79190613b25565b8151602003612775575f5b60208160ff1610801561267a5750828160ff168151811061266857612668613392565b01602001516001600160f81b03191615155b15612691578061268981613b56565b915050612645565b5f8160ff166001600160401b038111156126ad576126ad612c67565b6040519080825280601f01601f1916602001820160405280156126d7576020820181803683370190505b5090505f91505b60208260ff161080156127135750838260ff168151811061270157612701613392565b01602001516001600160f81b03191615155b15610c5a57838260ff168151811061272d5761272d613392565b602001015160f81c60f81b818360ff168151811061274d5761274d613392565b60200101906001600160f81b03191690815f1a9053508161276d81613b56565b9250506126de565b505060408051602081019091525f815290565b6127918161217d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c5a838360405180606001604052806027815260200161405f60279139612812565b5f54610100900460ff16610c735760405162461bcd60e51b8152600401610bc39061392d565b60605f5f856001600160a01b03168560405161282e9190613822565b5f60405180830381855af49150503d805f8114612866576040519150601f19603f3d011682016040523d82523d5f602084013e61286b565b606091505b509150915061287c86838387612886565b9695505050505050565b606083156128f45782515f036128ed576001600160a01b0385163b6128ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bc3565b508161212f565b61212f83838151156129095781518083602001fd5b8060405162461bcd60e51b8152600401610bc391906138e9565b6104ca80613b7583390190565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b83016101608186031215612968575f5ffd5b946020939093013593505050565b5f60208284031215612986575f5ffd5b81356001600160e01b031981168114610c5a575f5ffd5b6001600160a01b0381168114610c48575f5ffd5b803561203d8161299d565b5f5f83601f8401126129cc575f5ffd5b5081356001600160401b038111156129e2575f5ffd5b6020830191508360208285010111156129f9575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612a14575f5ffd5b8535612a1f8161299d565b94506020860135612a2f8161299d565b93506040860135925060608601356001600160401b03811115612a50575f5ffd5b612a5c888289016129bc565b969995985093965092949392505050565b5f60208284031215612a7d575f5ffd5b81356001600160401b03811115612a92575f5ffd5b82016101008185031215610c5a575f5ffd5b5f5b83811015612abe578181015183820152602001612aa6565b50505f910152565b5f8151808452612add816020860160208601612aa4565b601f01601f19169290920160200192915050565b60208152612b0b6020820183516001600160401b03169052565b5f6020830151612b2660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261212f610180840182612ac6565b5f60208284031215612bf1575f5ffd5b8135610c5a8161299d565b6001600160401b0381168114610c48575f5ffd5b803561203d81612bfc565b8015158114610c48575f5ffd5b5f5f5f60608486031215612c3a575f5ffd5b8335612c4581612bfc565b9250602084013591506040840135612c5c81612c1b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c9d57612c9d612c67565b60405290565b60405161010081016001600160401b0381118282101715612c9d57612c9d612c67565b60405161016081016001600160401b0381118282101715612c9d57612c9d612c67565b604051601f8201601f191681016001600160401b0381118282101715612d1157612d11612c67565b604052919050565b5f6001600160401b03821115612d3157612d31612c67565b50601f01601f191660200190565b5f82601f830112612d4e575f5ffd5b8135602083015f612d66612d6184612d19565b612ce9565b9050828152858383011115612d79575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612da4575f5ffd5b8235612daf8161299d565b915060208301356001600160401b03811115612dc9575f5ffd5b612dd585828601612d3f565b9150509250929050565b5f5f60408385031215612df0575f5ffd5b823591506020830135612e028161299d565b809150509250929050565b5f5f60208385031215612e1e575f5ffd5b82356001600160401b03811115612e33575f5ffd5b612e3f858286016129bc565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e7d90830185612ac6565b8281036060840152612e8f8185612ac6565b979650505050505050565b5f5f60408385031215612eab575f5ffd5b823591506020830135612e0281612c1b565b5f5f60408385031215612ece575f5ffd5b8235612ed98161299d565b91506020830135612e028161299d565b5f5f8335601e19843603018112612efe575f5ffd5b8301803591506001600160401b03821115612f17575f5ffd5b6020019150368190038213156129f9575f5ffd5b5f5f85851115612f39575f5ffd5b83861115612f45575f5ffd5b5050820193919092039150565b5f60208284031215612f62575f5ffd5b81356001600160401b03811115612f77575f5ffd5b61212f84828501612d3f565b805161203d81612bfc565b805161203d8161299d565b5f82601f830112612fa8575f5ffd5b8151602083015f612fbb612d6184612d19565b9050828152858383011115612fce575f5ffd5b612fdc836020830184612aa4565b95945050505050565b5f6001600160401b03821115612ffd57612ffd612c67565b5060051b60200190565b5f82601f830112613016575f5ffd5b8151613024612d6182612fe5565b8082825260208201915060208360051b860101925085831115613045575f5ffd5b602085015b8381101561306257805183526020928301920161304a565b5095945050505050565b5f5f5f5f6080858703121561307f575f5ffd5b84516001600160401b03811115613094575f5ffd5b8501608081880312156130a5575f5ffd5b6130ad612c7b565b81516130b881612bfc565b815260208201516130c88161299d565b602082015260408201516001600160401b038111156130e5575f5ffd5b6130f189828501612f99565b60408301525060608201516001600160401b0381111561310f575f5ffd5b61311b89828501612f99565b6060830152509450613131905060208601612f8e565b925061313f60408601612f8e565b915060608501516001600160401b03811115613159575f5ffd5b61316587828801613007565b91505092959194509250565b5f8151808452602084019350602083015f5b828110156131a1578151865260209586019590910190600101613183565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131d690830185613171565b8281036060840152612e8f8185613171565b63ffffffff81168114610c48575f5ffd5b803561203d816131e8565b5f82601f830112613213575f5ffd5b8135613221612d6182612fe5565b8082825260208201915060208360051b860101925085831115613242575f5ffd5b602085015b83811015613062578035835260209283019201613247565b5f6101008236031215613270575f5ffd5b613278612ca3565b61328183612c10565b815261328f602084016129b1565b60208201526132a0604084016129b1565b60408201526132b160608401612c10565b60608201526132c2608084016129b1565b60808201526132d360a084016131f9565b60a082015260c08301356001600160401b038111156132f0575f5ffd5b6132fc36828601613204565b60c08301525060e08301356001600160401b0381111561331a575f5ffd5b61332636828601613204565b60e08301525092915050565b5f60208284031215613342575f5ffd5b8135610c5a81612bfc565b5f5f8335601e19843603018112613362575f5ffd5b8301803591506001600160401b0382111561337b575f5ffd5b6020019150600581901b36038213156129f9575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133b6575f5ffd5b8135610c5a816131e8565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106d7576106d76133c1565b805161203d816131e8565b5f5f60408385031215613404575f5ffd5b825160208401519092506001600160401b03811115613421575f5ffd5b83016101608186031215613433575f5ffd5b61343b612cc6565b61344482612f83565b815261345260208301612f83565b6020820152613463604083016133e8565b604082015261347460608301612f8e565b606082015261348560808301612f83565b608082015261349660a08301612f8e565b60a08201526134a760c08301612f83565b60c08201526134b860e08301612f8e565b60e08201526134ca6101008301612f8e565b61010082015261012082810151908201526101408201516001600160401b038111156134f4575f5ffd5b61350087828501612f99565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561352a575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061357e9083018688613513565b8281036080840152613591818587613513565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f6080858703121561364a575f5ffd5b84356001600160401b0381111561365f575f5ffd5b850160808188031215613670575f5ffd5b613678612c7b565b813561368381612bfc565b815260208201356136938161299d565b602082015260408201356001600160401b038111156136b0575f5ffd5b6136bc89828501612d3f565b60408301525060608201356001600160401b038111156136da575f5ffd5b6136e689828501612d3f565b60608301525094506136fc9050602086016129b1565b925061370a604086016129b1565b915060608501356001600160401b03811115613724575f5ffd5b61316587828801613204565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061376a90830185613171565b828103608084015261377c8185613171565b98975050505050505050565b600181811c9082168061379c57607f821691505b602082108103610b5d57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156137cb575f5ffd5b50604051606081016001600160401b03811182821017156137ee576137ee612c67565b6040528251815260208301516138038161299d565b6020820152604083015161381681612bfc565b60408201529392505050565b5f8251613833818460208701612aa4565b9190910192915050565b5f6020828403121561384d575f5ffd5b8151610c5a81612c1b565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613899610100840182612ac6565b90506060880151607f198483030160e08501526138b68282612ac6565b6001600160a01b0389811660208701528816604086015291506138d69050565b828103606084015261377c818587613513565b602081525f610c5a6020830184612ac6565b5f6020828403121561390b575f5ffd5b5051919050565b5f60208284031215613922575f5ffd5b8151610c5a8161299d565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f906139ba90830185612ac6565b82810360a08401526139cc8185612ac6565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5790830184612ac6565b601f82111561124e57805f5260205f20601f840160051c81016020851015613a215750805b601f840160051c820191505b81811015613a40575f8155600101613a2d565b5050505050565b81516001600160401b03811115613a6057613a60612c67565b613a7481613a6e8454613788565b846139fc565b6020601f821160018114613aa6575f8315613a8f5750848201515b5f19600385901b1c1916600184901b178455613a40565b5f84815260208120601f198516915b82811015613ad55787850151825560209485019460019092019101613ab5565b5084821015613af257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613b136040830185612ac6565b8281036020840152612fdc8185612ac6565b5f60208284031215613b35575f5ffd5b81516001600160401b03811115613b4a575f5ffd5b61212f84828501612f99565b5f60ff821660ff8103613b6b57613b6b6133c1565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203cd495f2fefd9f75bbedef71608a9c7ed2199e60f25d6a5d6d7c916d19d3a30364736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000003": { + "contractName": "ERC721Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000003" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000000004": { + "contractName": "ERC1155VaultImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c39781461049d578063f09a4016146104ba578063f23a6e61146104d9578063f2fde38b14610505575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a73660046128ab565b610524565b005b3480156101b9575f5ffd5b506101cd6101c83660046128f1565b61069a565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c366004612918565b6106b9565b6040516101d9919061299c565b348015610239575f5ffd5b506101cd610b40565b34801561024d575f5ffd5b506101ac61025c366004612aab565b610b58565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612af2565b610c28565b3480156102c2575f5ffd5b506101ac610c3c565b6101ac6102d9366004612c5d565b610c50565b3480156102e9575f5ffd5b50610200610d05565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612ca9565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610db6565b348015610371575f5ffd5b506101ac610dc7565b6101ac610388366004612d1b565b610e3e565b348015610398575f5ffd5b506101ac610f6a565b3480156103ac575f5ffd5b50610280610f7d565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612aab565b610f8b565b6040516101d99493929190612d59565b34801561040c575f5ffd5b5061028061041b366004612da8565b6110d6565b34801561042b575f5ffd5b5061044e61043a366004612e0b565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101d9565b3480156104a8575f5ffd5b506065546001600160a01b0316610280565b3480156104c5575f5ffd5b506101ac6104d4366004612ecb565b6110e9565b3480156104e4575f5ffd5b5061044e6104f3366004612ef7565b63f23a6e6160e01b9695505050505050565b348015610510575f5ffd5b506101ac61051f366004612aab565b611200565b61053860c954610100900460ff1660021490565b156105565760405163bae6e2a960e01b815260040160405180910390fd5b600261056460c95460ff1690565b60ff16036105855760405163dfc60d8560e01b815260040160405180910390fd5b61058f6002611271565b610597611287565b505f6105a7610140840184612f6d565b6105b5916004908290612faf565b8101906105c29190612fd6565b90505f5f5f838060200190518101906105db91906130f0565b94509450505092505f610602848860a00160208101906105fb9190612aab565b858561137d565b905061062c61012088013561061d60c08a0160a08b01612aab565b6001600160a01b03169061146c565b61063c60c0880160a08901612aab565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c866020015184878760405161067f9493929190613258565b60405180910390a350505050506106966001611271565b5050565b5f6106a482611477565b806106b357506106b3826114c6565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072760c954610100900460ff1660021490565b156107455760405163bae6e2a960e01b815260040160405180910390fd5b61074e8261330c565b8060e00151518160c0015151146107785760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107a3576040516303f8a7d360e01b815260040160405180910390fd5b60026107b160c95460ff1690565b60ff16036107d25760405163dfc60d8560e01b815260040160405180910390fd5b6107dc6002611271565b6107ec60808401606085016133df565b6001600160401b031634101561081557604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082460e08501856133fa565b90508110156108785761083a60e08501856133fa565b8281811061084a5761084a61343f565b905060200201355f0361087057604051634299323b60e11b815260040160405180910390fd5b600101610817565b506108a3636cdb3d1360e11b61089460a0860160808701612aab565b6001600160a01b0316906114fa565b6108c057604051633ee915f560e11b815260040160405180910390fd5b5f5f6108cb856115ca565b6040805161016081019091525f808252929450909250602081016108f56080890160608a016133df565b6001600160401b0316815260200161091360c0890160a08a01613453565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610944908901896133df565b6001600160401b031681526020015f6001600160a01b031688602001602081019061096f9190612aab565b6001600160a01b0316036109835733610993565b6109936040890160208a01612aab565b6001600160a01b031681526020908101906109cc906109b4908a018a6133df565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c28565b6001600160a01b031681526020016109ea6080890160608a016133df565b6109fd906001600160401b031634613482565b815260200184905290505f610a1b6562726964676560d01b826110d6565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a47919061299c565b5f6040518083038185885af1158015610a62573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a8a91908101906134a0565b96509050610a9e6060880160408901612aab565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610af49190612aab565b610b0160c08f018f6133fa565b8f8060e00190610b1191906133fa565b604051610b2497969594939291906135f0565b60405180910390a450505050610b3a6001611271565b50919050565b5f6002610b4f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610ba95760405162461bcd60e51b8152600401610ba09061364c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610bdb611a8a565b6001600160a01b031614610c015760405162461bcd60e51b8152600401610ba090613698565b610c0a81611aa5565b604080515f80825260208201909252610c2591839190611aad565b50565b5f610c34848484611c17565b949350505050565b610c44611c73565b610c4e335f611d03565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c985760405162461bcd60e51b8152600401610ba09061364c565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610cca611a8a565b6001600160a01b031614610cf05760405162461bcd60e51b8152600401610ba090613698565b610cf982611aa5565b61069682826001611aad565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610da45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba0565b505f51602061421e5f395f51905f5290565b610dbe611d07565b610c4e5f611d61565b60655433906001600160a01b03168114610e355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba0565b610c2581611d61565b610e5260c954610100900460ff1660021490565b15610e705760405163bae6e2a960e01b815260040160405180910390fd5b6002610e7e60c95460ff1690565b60ff1603610e9f5760405163dfc60d8560e01b815260040160405180910390fd5b610ea96002611271565b5f80808080610eba868801886136e4565b945094509450945094505f610ecd611d7a565b9050610ed884611e9b565b5f610ee58786868661137d565b9050610efa6001600160a01b0386163461146c565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f51959493929190613805565b60405180910390a4505050505050506106966001611271565b610f72611ed7565b610c4e336001611d03565b5f610f86611a8a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fc99061385d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff59061385d565b80156110405780601f1061101757610100808354040283529160200191611040565b820191905f5260205f20905b81548152906001019060200180831161102357829003601f168201915b5050505050908060020180546110559061385d565b80601f01602080910402602001604051908101604052809291908181526020018280546110819061385d565b80156110cc5780601f106110a3576101008083540402835291602001916110cc565b820191905f5260205f20905b8154815290600101906020018083116110af57829003601f168201915b5050505050905084565b5f6110e2468484611c17565b9392505050565b5f54610100900460ff161580801561110757505f54600160ff909116105b806111205750303b15801561112057505f5460ff166001145b6111835760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba0565b5f805460ff1916600117905580156111a4575f805461ff0019166101001790555b6111ae8383611f48565b6111b6611f82565b80156111fb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611208611d07565b606580546001600160a01b0383166001600160a01b031990911681179091556112396033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112b88160016110d6565b6001600160a01b0316336001600160a01b0316146112e957604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611325573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611349919061388f565b60208101519092506001600160a01b0316331461137957604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fb57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113c99030908890889088906004016138f7565b5f604051808303815f87803b1580156113e0575f5ffd5b505af11580156113f2573d5f5f3e3d5ffd5b50505050610c34565b61140485611fa8565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143790879087908790600401613950565b5f604051808303815f87803b15801561144e575f5ffd5b505af1158015611460573d5f5f3e3d5ffd5b50505050949350505050565b61069682825a611fef565b5f6001600160e01b0319821662bc399d60e11b14806114a657506001600160e01b03198216637f07c94760e01b145b806106b357506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115569190613985565b5f60405180830381855afa9150503d805f811461158e576040519150601f19603f3d011682016040523d82523d5f602084013e611593565b606091505b50915091508180156115a6575080516020145b156115c257808060200190518101906115bf91906139a0565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161160060a0870160808801612aab565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118f3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116719061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461169d9061385d565b80156116e85780601f106116bf576101008083540402835291602001916116e8565b820191905f5260205f20905b8154815290600101906020018083116116cb57829003601f168201915b505050505081526020016002820180546117019061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461172d9061385d565b80156117785780601f1061174f57610100808354040283529160200191611778565b820191905f5260205f20905b81548152906001019060200180831161175b57829003601f168201915b50505050508152505091508360800160208101906117969190612aab565b6001600160a01b0316632eb2c2d633306117b360c08901896133fa565b6117c060e08b018b6133fa565b6040518763ffffffff1660e01b81526004016117e1969594939291906139bb565b5f604051808303815f87803b1580156117f8575f5ffd5b505af115801561180a573d5f5f3e3d5ffd5b505050505f5b61181d60c08601866133fa565b90508110156118ed5761183660a0860160808701612aab565b6001600160a01b031663b390c0ab61185160c08801886133fa565b848181106118615761186161343f565b90506020020135878060e0019061187891906133fa565b858181106118885761188861343f565b905060200201356040518363ffffffff1660e01b81526004016118b5929190918252602082015260400190565b5f604051808303815f87803b1580156118cc575f5ffd5b505af11580156118de573d5f5f3e3d5ffd5b50505050806001019050611810565b506119f0565b6040518060800160405280466001600160401b031681526020018560800160208101906119209190612aab565b6001600160a01b0316815260200161194661194160a0880160808901612aab565b612032565b815260200161196361195e60a0880160808901612aab565b6120dc565b9052915061197760a0850160808601612aab565b6001600160a01b0316632eb2c2d6333061199460c08901896133fa565b6119a160e08b018b6133fa565b6040518763ffffffff1660e01b81526004016119c2969594939291906139bb565b5f604051808303815f87803b1580156119d9575f5ffd5b505af11580156119eb573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a096060880160408901612aab565b611a1660c08901896133fa565b611a2360e08b018b6133fa565b604051602001611a399796959493929190613a18565b60408051601f1981840301815290829052611a5691602401613ac8565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061421e5f395f51905f52546001600160a01b031690565b610c25611d07565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ae0576111fb83612122565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b3a575060408051601f3d908101601f19168201909252611b3791810190613ada565b60015b611b9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba0565b5f51602061421e5f395f51905f528114611c0b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba0565b506111fb8383836121bd565b5f611c2284846121e7565b90508180611c3857506001600160a01b03811615155b84849091611c6a57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ba0565b50509392505050565b611c8760c954610100900460ff1660021490565b611ca45760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106965b6033546001600160a01b03163314610c4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba0565b606580546001600160a01b0319169055610c2581612289565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611dab8160016110d6565b6001600160a01b0316336001600160a01b031614611ddc57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3c919061388f565b91505f611e5e83604001516109c66c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e9657604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eb957506001600160a01b03811630145b15610c2557604051635b50f3f960e01b815260040160405180910390fd5b611eeb60c954610100900460ff1660021490565b15611f095760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611cf9565b806001600160a01b038116611f705760405163538ba4f960e01b815260040160405180910390fd5b611f79836122da565b6111fb82612338565b5f54610100900460ff16610c4e5760405162461bcd60e51b8152600401610ba090613af1565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fea576106b3826123a8565b919050565b815f03611ffb57505050565b61201583838360405180602001604052805f815250612584565b6111fb57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120789190613985565b5f60405180830381855afa9150503d805f81146120b0576040519150601f19603f3d011682016040523d82523d5f602084013e6120b5565b606091505b5091509150816120d35760405180602001604052805f815250610c34565b610c34816125c1565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120789190613985565b6001600160a01b0381163b61218f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba0565b5f51602061421e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c68361272e565b5f825111806121d25750805b156111fb576121e1838361276d565b50505050565b6097545f906001600160a01b03168061221357604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612265573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190613b3c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123005760405162461bcd60e51b8152600401610ba090613af1565b612308611f82565b6123266001600160a01b038216156123205781611d61565b33611d61565b5060c9805461ff001916610100179055565b5f54610100900460ff1661235e5760405162461bcd60e51b8152600401610ba090613af1565b6001600160401b034611156123865760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123bc6033546001600160a01b031690565b60975460208501518551604080880151606089015191516123ed96956001600160a01b031694939290602401613b57565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124356e627269646765645f6572633131353560881b5f6110d6565b816040516124429061289e565b61244d929190613bb8565b604051809103905ff080158015612466573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124ca9082613c26565b50606082015160028201906124df9082613c26565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125769290613ce0565b60405180910390a450919050565b5f6001600160a01b0385166125ac57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125e057818060200190518101906106b39190613d04565b815160200361271b575f5b60208160ff161080156126205750828160ff168151811061260e5761260e61343f565b01602001516001600160f81b03191615155b15612637578061262f81613d35565b9150506125eb565b5f8160ff166001600160401b0381111561265357612653612b31565b6040519080825280601f01601f19166020018201604052801561267d576020820181803683370190505b5090505f91505b60208260ff161080156126b95750838260ff16815181106126a7576126a761343f565b01602001516001600160f81b03191615155b156110e257838260ff16815181106126d3576126d361343f565b602001015160f81c60f81b818360ff16815181106126f3576126f361343f565b60200101906001600160f81b03191690815f1a9053508161271381613d35565b925050612684565b505060408051602081019091525f815290565b61273781612122565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606110e2838360405180606001604052806027815260200161423e6027913960605f5f856001600160a01b0316856040516127a99190613985565b5f60405180830381855af49150503d805f81146127e1576040519150601f19603f3d011682016040523d82523d5f602084013e6127e6565b606091505b50915091506127f786838387612801565b9695505050505050565b6060831561286f5782515f03612868576001600160a01b0385163b6128685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba0565b5081610c34565b610c3483838151156128845781518083602001fd5b8060405162461bcd60e51b8152600401610ba09190613ac8565b6104ca80613d5483390190565b5f5f604083850312156128bc575f5ffd5b82356001600160401b038111156128d1575f5ffd5b830161016081860312156128e3575f5ffd5b946020939093013593505050565b5f60208284031215612901575f5ffd5b81356001600160e01b0319811681146110e2575f5ffd5b5f60208284031215612928575f5ffd5b81356001600160401b0381111561293d575f5ffd5b820161010081850312156110e2575f5ffd5b5f5b83811015612969578181015183820152602001612951565b50505f910152565b5f815180845261298881602086016020860161294f565b601f01601f19169290920160200192915050565b602081526129b66020820183516001600160401b03169052565b5f60208301516129d160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152610c34610180840182612971565b6001600160a01b0381168114610c25575f5ffd5b8035611fea81612a8c565b5f60208284031215612abb575f5ffd5b81356110e281612a8c565b6001600160401b0381168114610c25575f5ffd5b8035611fea81612ac6565b8015158114610c25575f5ffd5b5f5f5f60608486031215612b04575f5ffd5b8335612b0f81612ac6565b9250602084013591506040840135612b2681612ae5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b6757612b67612b31565b60405290565b60405161010081016001600160401b0381118282101715612b6757612b67612b31565b60405161016081016001600160401b0381118282101715612b6757612b67612b31565b604051601f8201601f191681016001600160401b0381118282101715612bdb57612bdb612b31565b604052919050565b5f6001600160401b03821115612bfb57612bfb612b31565b50601f01601f191660200190565b5f82601f830112612c18575f5ffd5b8135602083015f612c30612c2b84612be3565b612bb3565b9050828152858383011115612c43575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c6e575f5ffd5b8235612c7981612a8c565b915060208301356001600160401b03811115612c93575f5ffd5b612c9f85828601612c09565b9150509250929050565b5f5f60408385031215612cba575f5ffd5b823591506020830135612ccc81612a8c565b809150509250929050565b5f5f83601f840112612ce7575f5ffd5b5081356001600160401b03811115612cfd575f5ffd5b602083019150836020828501011115612d14575f5ffd5b9250929050565b5f5f60208385031215612d2c575f5ffd5b82356001600160401b03811115612d41575f5ffd5b612d4d85828601612cd7565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d8b90830185612971565b8281036060840152612d9d8185612971565b979650505050505050565b5f5f60408385031215612db9575f5ffd5b823591506020830135612ccc81612ae5565b5f5f83601f840112612ddb575f5ffd5b5081356001600160401b03811115612df1575f5ffd5b6020830191508360208260051b8501011115612d14575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612e22575f5ffd5b8835612e2d81612a8c565b97506020890135612e3d81612a8c565b965060408901356001600160401b03811115612e57575f5ffd5b612e638b828c01612dcb565b90975095505060608901356001600160401b03811115612e81575f5ffd5b612e8d8b828c01612dcb565b90955093505060808901356001600160401b03811115612eab575f5ffd5b612eb78b828c01612cd7565b999c989b5096995094979396929594505050565b5f5f60408385031215612edc575f5ffd5b8235612ee781612a8c565b91506020830135612ccc81612a8c565b5f5f5f5f5f5f60a08789031215612f0c575f5ffd5b8635612f1781612a8c565b95506020870135612f2781612a8c565b9450604087013593506060870135925060808701356001600160401b03811115612f4f575f5ffd5b612f5b89828a01612cd7565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f82575f5ffd5b8301803591506001600160401b03821115612f9b575f5ffd5b602001915036819003821315612d14575f5ffd5b5f5f85851115612fbd575f5ffd5b83861115612fc9575f5ffd5b5050820193919092039150565b5f60208284031215612fe6575f5ffd5b81356001600160401b03811115612ffb575f5ffd5b610c3484828501612c09565b8051611fea81612ac6565b8051611fea81612a8c565b5f82601f83011261302c575f5ffd5b8151602083015f61303f612c2b84612be3565b9050828152858383011115613052575f5ffd5b61306083602083018461294f565b95945050505050565b5f6001600160401b0382111561308157613081612b31565b5060051b60200190565b5f82601f83011261309a575f5ffd5b81516130a8612c2b82613069565b8082825260208201915060208360051b8601019250858311156130c9575f5ffd5b602085015b838110156130e65780518352602092830192016130ce565b5095945050505050565b5f5f5f5f5f60a08688031215613104575f5ffd5b85516001600160401b03811115613119575f5ffd5b86016080818903121561312a575f5ffd5b613132612b45565b815161313d81612ac6565b8152602082015161314d81612a8c565b602082015260408201516001600160401b0381111561316a575f5ffd5b6131768a82850161301d565b60408301525060608201516001600160401b03811115613194575f5ffd5b6131a08a82850161301d565b60608301525095506131b6905060208701613012565b93506131c460408701613012565b925060608601516001600160401b038111156131de575f5ffd5b6131ea8882890161308b565b92505060808601516001600160401b03811115613205575f5ffd5b6132118882890161308b565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561324e578151865260209586019590910190600101613230565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906132839083018561321e565b8281036060840152612d9d818561321e565b63ffffffff81168114610c25575f5ffd5b8035611fea81613295565b5f82601f8301126132c0575f5ffd5b81356132ce612c2b82613069565b8082825260208201915060208360051b8601019250858311156132ef575f5ffd5b602085015b838110156130e65780358352602092830192016132f4565b5f610100823603121561331d575f5ffd5b613325612b6d565b61332e83612ada565b815261333c60208401612aa0565b602082015261334d60408401612aa0565b604082015261335e60608401612ada565b606082015261336f60808401612aa0565b608082015261338060a084016132a6565b60a082015260c08301356001600160401b0381111561339d575f5ffd5b6133a9368286016132b1565b60c08301525060e08301356001600160401b038111156133c7575f5ffd5b6133d3368286016132b1565b60e08301525092915050565b5f602082840312156133ef575f5ffd5b81356110e281612ac6565b5f5f8335601e1984360301811261340f575f5ffd5b8301803591506001600160401b03821115613428575f5ffd5b6020019150600581901b3603821315612d14575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613463575f5ffd5b81356110e281613295565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b3576106b361346e565b8051611fea81613295565b5f5f604083850312156134b1575f5ffd5b825160208401519092506001600160401b038111156134ce575f5ffd5b830161016081860312156134e0575f5ffd5b6134e8612b90565b6134f182613007565b81526134ff60208301613007565b602082015261351060408301613495565b604082015261352160608301613012565b606082015261353260808301613007565b608082015261354360a08301613012565b60a082015261355460c08301613007565b60c082015261356560e08301613012565b60e08201526135776101008301613012565b61010082015261012082810151908201526101408201516001600160401b038111156135a1575f5ffd5b6135ad8782850161301d565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156135d7575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061362b90830186886135c0565b828103608084015261363e8185876135c0565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136f8575f5ffd5b85356001600160401b0381111561370d575f5ffd5b86016080818903121561371e575f5ffd5b613726612b45565b813561373181612ac6565b8152602082013561374181612a8c565b602082015260408201356001600160401b0381111561375e575f5ffd5b61376a8a828501612c09565b60408301525060608201356001600160401b03811115613788575f5ffd5b6137948a828501612c09565b60608301525095506137aa905060208701612aa0565b93506137b860408701612aa0565b925060608601356001600160401b038111156137d2575f5ffd5b6137de888289016132b1565b92505060808601356001600160401b038111156137f9575f5ffd5b613211888289016132b1565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061383f9083018561321e565b8281036080840152613851818561321e565b98975050505050505050565b600181811c9082168061387157607f821691505b602082108103610b3a57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156138a0575f5ffd5b50604051606081016001600160401b03811182821017156138c3576138c3612b31565b6040528251815260208301516138d881612a8c565b602082015260408301516138eb81612ac6565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906139229083018561321e565b8281036060840152613934818561321e565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f906139739083018561321e565b82810360408401526127f7818561321e565b5f825161399681846020870161294f565b9190910192915050565b5f602082840312156139b0575f5ffd5b81516110e281612ae5565b6001600160a01b0387811682528616602082015260a0604082018190525f906139e790830186886135c0565b82810360608401526139fa8185876135c0565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613a5b610120840182612971565b905060608a0151609f1984830301610100850152613a798282612971565b915050613a91602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613ab38187896135c0565b9050828103608084015261363e8185876135c0565b602081525f6110e26020830184612971565b5f60208284031215613aea575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613b4c575f5ffd5b81516110e281612a8c565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b9990830185612971565b82810360a0840152613bab8185612971565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3490830184612971565b601f8211156111fb57805f5260205f20601f840160051c81016020851015613c005750805b601f840160051c820191505b81811015613c1f575f8155600101613c0c565b5050505050565b81516001600160401b03811115613c3f57613c3f612b31565b613c5381613c4d845461385d565b84613bdb565b6020601f821160018114613c85575f8315613c6e5750848201515b5f19600385901b1c1916600184901b178455613c1f565b5f84815260208120601f198516915b82811015613cb45787850151825560209485019460019092019101613c94565b5084821015613cd157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613cf26040830185612971565b82810360208401526130608185612971565b5f60208284031215613d14575f5ffd5b81516001600160401b03811115613d29575f5ffd5b610c348482850161301d565b5f60ff821660ff8103613d4a57613d4a61346e565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203e164d80a5bf888f120843fbb6a1d20044e55ebe0e054374c174b7a64300b39064736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000004": { + "contractName": "ERC1155Vault", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000004" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010096": { + "contractName": "BridgedERC20", + "storage": {}, + "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106d9578063f12506c1146106f6578063f2fde38b1461070a575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612185565b610729565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107cb565b60405161026291906121ce565b348015610297575f5ffd5b506102566102a6366004612214565b61085b565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b5061025661030436600461223e565b610872565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b50610256610895565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a836600461227c565b6108ad565b005b3480156103ba575f5ffd5b506102566103c9366004612214565b61097d565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122ab565b61099e565b34801561042f575f5ffd5b506103ad6109b2565b348015610443575f5ffd5b506103ad610452366004612214565b6109c6565b348015610462575f5ffd5b506103ad6104713660046122f1565b610ae0565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a36600461231c565b610c1d565b3480156104aa575f5ffd5b506102dc610cd2565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed36600461227c565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d83565b348015610526575f5ffd5b506103ad610d94565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e0b565b34801561058e575f5ffd5b506103ed610e1e565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e2c565b3480156105d3575f5ffd5b506102566105e2366004612214565b610e3b565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123df565b610eb5565b348015610632575f5ffd5b50610256610641366004612214565b610ec8565b348015610651575f5ffd5b506103ad610660366004612409565b610ed5565b348015610670575f5ffd5b506103ad61067f366004612477565b611052565b34801561068f575f5ffd5b506102dc61069e36600461253d565b611212565b3480156106ae575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610262565b3480156106e4575f5ffd5b506065546001600160a01b03166103ed565b348015610701575f5ffd5b5061025661123c565b348015610715575f5ffd5b506103ad61072436600461227c565b611267565b5f6001600160e01b0319821663093e326b60e21b148061075957506001600160e01b0319821663bb86ef9360e01b145b8061077457506001600160e01b0319821663b8f2e0c560e01b145b8061078f57506001600160e01b031982166336372b0760e01b145b806107aa57506001600160e01b0319821663a219a02560e01b145b806107c557506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107da90612574565b80601f016020809104026020016040519081016040528092919081815260200182805461080690612574565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050905090565b5f336108688185856112d8565b5060019392505050565b5f3361087f8582856113fb565b61088a858585611473565b506001949350505050565b5f60026108a460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108fe5760405162461bcd60e51b81526004016108f5906125ac565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610930611627565b6001600160a01b0316146109565760405162461bcd60e51b81526004016108f5906125f8565b61095f81611642565b604080515f8082526020820190925261097a9183919061164a565b50565b5f3361086881858561098f8383611212565b6109999190612644565b6112d8565b5f6109aa8484846117b4565b949350505050565b6109ba611810565b6109c4335f6118a0565b565b6109da60c954610100900460ff1660021490565b156109f85760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0660c95460ff1690565b60ff1603610a275760405163dfc60d8560e01b815260040160405180910390fd5b610a3160026118a8565b610a3961123c565b15610a575760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610abe57826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610ab191815260200190565b60405180910390a3610ac7565b610ac7336118be565b610ad18383611936565b50610adc60016118a8565b5050565b610af460c954610100900460ff1660021490565b15610b125760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2060c95460ff1690565b60ff1603610b415760405163dfc60d8560e01b815260040160405180910390fd5b610b4b60026118a8565b610b5361123c565b15610c005761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610be4575f5ffd5b505af1158015610bf6573d5f5f3e3d5ffd5b5050505050610c09565b610c09336118be565b610c133382611a00565b61097a60016118a8565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610c655760405162461bcd60e51b81526004016108f5906125ac565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610c97611627565b6001600160a01b031614610cbd5760405162461bcd60e51b81526004016108f5906125f8565b610cc682611642565b610adc8282600161164a565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610d715760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f5565b505f5160206128015f395f51905f5290565b610d8b611b3d565b6109c45f611b97565b60655433906001600160a01b03168114610e025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108f5565b61097a81611b97565b610e13611bb0565b6109c43360016118a0565b5f610e27611627565b905090565b606060ff80546107da90612574565b5f3381610e488286611212565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108f5565b61088a82868684036112d8565b5f610ec14684846117b4565b9392505050565b5f33610868818585611473565b610ee960c954610100900460ff1660021490565b15610f075760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f21816001610eb5565b6001600160a01b0316336001600160a01b031614610f5257604051630d85cccf60e11b815260040160405180910390fd5b6002610f6060c95460ff1690565b60ff1603610f815760405163dfc60d8560e01b815260040160405180910390fd5b610f8b60026118a8565b61012f546001600160a01b038481169116148015610fbc575061012f60149054906101000a900460ff161515821515145b15610fda5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161104d60016118a8565b505050565b5f54610100900460ff161580801561107057505f54600160ff909116105b806110895750303b15801561108957505f5460ff166001145b6110ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f5565b5f805460ff19166001179055801561110d575f805461ff0019166101001790555b6111178888611c21565b6111218a8a611c5d565b61119283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9792505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611206575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e2757505061012f54600160a01b900460ff161590565b61126f611b3d565b606580546001600160a01b0383166001600160a01b031990911681179091556112a06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b03831661133a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f5565b6001600160a01b03821661139b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f5565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114068484611212565b90505f19811461146d57818110156114605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f5565b61146d84848484036112d8565b50505050565b6001600160a01b0383166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f5565b6001600160a01b0382166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f5565b611544838383611cc7565b6001600160a01b0383165f90815260fb6020526040902054818110156115bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f5565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061161a9086815260200190565b60405180910390a361146d565b5f5160206128015f395f51905f52546001600160a01b031690565b61097a611b3d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561167d5761104d83611d02565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116d7575060408051601f3d908101601f191682019092526116d491810190612663565b60015b61173a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f5565b5f5160206128015f395f51905f5281146117a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f5565b5061104d838383611d9d565b5f6117bf8484611dc1565b905081806117d557506001600160a01b03811615155b8484909161180757604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016108f5565b50509392505050565b61182460c954610100900460ff1660021490565b6118415760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610adc611b3d565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118df6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806119195750611904816001610eb5565b6001600160a01b0316336001600160a01b0316145b610adc57604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108f5565b6119975f8383611cc7565b8060fd5f8282546119a89190612644565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108f5565b611a6b825f83611cc7565b6001600160a01b0382165f90815260fb602052604090205481811015611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108f5565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b606580546001600160a01b031916905561097a81611e63565b611bc460c954610100900460ff1660021490565b15611be25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611896565b6001600160a01b0382161580611c35575080155b80611c3f57504681145b15610adc5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c855760405163538ba4f960e01b815260040160405180910390fd5b611c8e83611eb4565b61104d82611f12565b5f54610100900460ff16611cbd5760405162461bcd60e51b81526004016108f59061267a565b610adc8282611f82565b611cdb60c954610100900460ff1660021490565b15611cf95760405163bae6e2a960e01b815260040160405180910390fd5b61104d82611fc1565b6001600160a01b0381163b611d6f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f5565b5f5160206128015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611da683611fea565b5f82511180611db25750805b1561104d5761146d8383612029565b6097545f906001600160a01b031680611ded57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e3f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa91906126c5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611eda5760405162461bcd60e51b81526004016108f59061267a565b611ee261204e565b611f006001600160a01b03821615611efa5781611b97565b33611b97565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f385760405162461bcd60e51b81526004016108f59061267a565b6001600160401b03461115611f605760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611fa85760405162461bcd60e51b81526004016108f59061267a565b60fe611fb4838261272b565b5060ff61104d828261272b565b306001600160a01b0382160361097a57604051630c292c9d60e21b815260040160405180910390fd5b611ff381611d02565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ec1838360405180606001604052806027815260200161282160279139612074565b5f54610100900460ff166109c45760405162461bcd60e51b81526004016108f59061267a565b60605f5f856001600160a01b03168560405161209091906127e5565b5f60405180830381855af49150503d805f81146120c8576040519150601f19603f3d011682016040523d82523d5f602084013e6120cd565b606091505b50915091506120de868383876120e8565b9695505050505050565b606083156121565782515f0361214f576001600160a01b0385163b61214f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f5565b50816109aa565b6109aa838381511561216b5781518083602001fd5b8060405162461bcd60e51b81526004016108f591906121ce565b5f60208284031215612195575f5ffd5b81356001600160e01b031981168114610ec1575f5ffd5b5f5b838110156121c65781810151838201526020016121ae565b50505f910152565b602081525f82518060208401526121ec8160408501602087016121ac565b601f01601f19169190910160400192915050565b6001600160a01b038116811461097a575f5ffd5b5f5f60408385031215612225575f5ffd5b823561223081612200565b946020939093013593505050565b5f5f5f60608486031215612250575f5ffd5b833561225b81612200565b9250602084013561226b81612200565b929592945050506040919091013590565b5f6020828403121561228c575f5ffd5b8135610ec181612200565b803580151581146122a6575f5ffd5b919050565b5f5f5f606084860312156122bd575f5ffd5b83356001600160401b03811681146122d3575f5ffd5b9250602084013591506122e860408501612297565b90509250925092565b5f60208284031215612301575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561232d575f5ffd5b823561233881612200565b915060208301356001600160401b03811115612352575f5ffd5b8301601f81018513612362575f5ffd5b80356001600160401b0381111561237b5761237b612308565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123a9576123a9612308565b6040528181528282016020018710156123c0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f0575f5ffd5b8235915061240060208401612297565b90509250929050565b5f5f6040838503121561241a575f5ffd5b823561242581612200565b915061240060208401612297565b5f5f83601f840112612443575f5ffd5b5081356001600160401b03811115612459575f5ffd5b602083019150836020828501011115612470575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c03121561248f575f5ffd5b893561249a81612200565b985060208a01356124aa81612200565b975060408a01356124ba81612200565b965060608a0135955060808a013560ff811681146124d6575f5ffd5b945060a08a01356001600160401b038111156124f0575f5ffd5b6124fc8c828d01612433565b90955093505060c08a01356001600160401b0381111561251a575f5ffd5b6125268c828d01612433565b915080935050809150509295985092959850929598565b5f5f6040838503121561254e575f5ffd5b823561255981612200565b9150602083013561256981612200565b809150509250929050565b600181811c9082168061258857607f821691505b6020821081036125a657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107c557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612673575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126d5575f5ffd5b8151610ec181612200565b601f82111561104d57805f5260205f20601f840160051c810160208510156127055750805b601f840160051c820191505b81811015612724575f8155600101612711565b5050505050565b81516001600160401b0381111561274457612744612308565b612758816127528454612574565b846126e0565b6020601f82116001811461278a575f83156127735750848201515b5f19600385901b1c1916600184901b178455612724565b5f84815260208120601f198516915b828110156127b95787850151825560209485019460019092019101612799565b50848210156127d657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127f68184602087016121ac565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220217a3819e82070457abbbadebb33fc33a95ce341341171f04951c38aca59c1ee64736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010097": { + "contractName": "BridgedERC721", + "storage": {}, + "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c3978146105f9578063e985e9c514610616578063ef8c4ae61461065e578063f2fde38b1461067d575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612542565b61069c565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e1565b60405161023691906125aa565b34801561026b575f5ffd5b5061027f61027a3660046125bc565b610772565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e7565b610798565b005b3480156102c3575f5ffd5b506102b66102d2366004612611565b6108b1565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e2565b34801561033a575f5ffd5b506102b661034936600461264f565b6108fa565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f61038736600461267e565b6109c1565b348015610397575f5ffd5b506102b66109d5565b3480156103ab575f5ffd5b506102b66103ba3660046125e7565b6109e9565b3480156103ca575f5ffd5b506102b66103d9366004612611565b610ab4565b3480156103e9575f5ffd5b506102b66103f83660046125bc565b610ace565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f366004612761565b610bcd565b34801561043f575f5ffd5b50610413610c82565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125bc565b610d33565b348015610492575f5ffd5b506104136104a136600461264f565b610d93565b3480156104b1575f5ffd5b506102b6610e18565b3480156104c5575f5ffd5b506102b6610e29565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea0565b34801561050d575f5ffd5b5061027f610eb3565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610ec1565b348015610552575f5ffd5b506102b66105613660046127ad565b610ed1565b348015610571575f5ffd5b5061027f6105803660046127e0565b610edc565b348015610590575f5ffd5b506102b661059f366004612801565b610eef565b3480156105af575f5ffd5b506102536105be3660046125bc565b610f27565b3480156105ce575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610236565b348015610604575f5ffd5b506065546001600160a01b031661027f565b348015610621575f5ffd5b5061022a610630366004612868565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610669575f5ffd5b506102b66106783660046128e3565b610f50565b348015610688575f5ffd5b506102b661069736600461264f565b611102565b5f6001600160e01b0319821663093e326b60e21b14806106cc57506001600160e01b031982166377c6257360e11b145b806106db57506106db82611173565b92915050565b606061012d80546106f190612990565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90612990565b80156107685780601f1061073f57610100808354040283529160200191610768565b820191905f5260205f20905b81548152906001019060200180831161074b57829003601f168201915b5050505050905090565b5f61077c826111c2565b505f90815261013160205260409020546001600160a01b031690565b5f6107a282610d33565b9050806001600160a01b0316836001600160a01b0316036108145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083057506108308133610630565b6108a25760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161080b565b6108ac8383611221565b505050565b6108bb338261128f565b6108d75760405162461bcd60e51b815260040161080b906129c8565b6108ac83838361130c565b5f60026108f160c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109425760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661097461147e565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161080b90612a61565b6109a381611499565b604080515f808252602082019092526109be918391906114a1565b50565b5f6109cd84848461160b565b949350505050565b6109dd611667565b6109e7335f6116f7565b565b6109fd60c954610100900460ff1660021490565b15610a1b5760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a36816001610edc565b6001600160a01b0316336001600160a01b031614610a6757604051630d85cccf60e11b815260040160405180910390fd5b6002610a7560c95460ff1690565b60ff1603610a965760405163dfc60d8560e01b815260040160405180910390fd5b610aa060026116ff565b610aaa8383611715565b6108ac60016116ff565b6108ac83838360405180602001604052805f815250610eef565b610ae260c954610100900460ff1660021490565b15610b005760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b1b816001610edc565b6001600160a01b0316336001600160a01b031614610b4c57604051630d85cccf60e11b815260040160405180910390fd5b6002610b5a60c95460ff1690565b60ff1603610b7b5760405163dfc60d8560e01b815260040160405180910390fd5b610b8560026116ff565b33610b8f83610d33565b6001600160a01b031614610bb65760405163358bf3d960e01b815260040160405180910390fd5b610bbf8261172e565b610bc960016116ff565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610c155760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610c4761147e565b6001600160a01b031614610c6d5760405162461bcd60e51b815260040161080b90612a61565b610c7682611499565b610bc9828260016114a1565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610d215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161080b565b505f516020612e1e5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106db5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f6001600160a01b038216610dfc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161080b565b506001600160a01b03165f908152610130602052604090205490565b610e206117d0565b6109e75f61182a565b60655433906001600160a01b03168114610e975760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161080b565b6109be8161182a565b610ea8611843565b6109e73360016116f7565b5f610ebc61147e565b905090565b606061012e80546106f190612990565b610bc93383836118b4565b5f610ee846848461160b565b9392505050565b610ef9338361128f565b610f155760405162461bcd60e51b815260040161080b906129c8565b610f2184848484611982565b50505050565b61015f54610160546060916106db916001600160a01b0390911690610f4b856119b5565b611a44565b5f54610100900460ff1615808015610f6e57505f54600160ff909116105b80610f875750303b158015610f8757505f5460ff166001145b610fea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161080b565b5f805460ff19166001179055801561100b575f805461ff0019166101001790555b6110158787611a8e565b61101f8989611aca565b61109083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b0492505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110a6117d0565b606580546001600160a01b0383166001600160a01b0319909116811790915561113b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a357506001600160e01b03198216635b5e139f60e01b145b806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b5f81815261012f60205260409020546001600160a01b03166109be5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125682610d33565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129a83610d33565b9050806001600160a01b0316846001600160a01b031614806112e157506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806109cd5750836001600160a01b03166112fa84610772565b6001600160a01b031614949350505050565b826001600160a01b031661131f82610d33565b6001600160a01b0316146113455760405162461bcd60e51b815260040161080b90612aad565b6001600160a01b0382166113a75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080b565b6113b48383836001611b34565b826001600160a01b03166113c782610d33565b6001600160a01b0316146113ed5760405162461bcd60e51b815260040161080b90612aad565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e1e5f395f51905f52546001600160a01b031690565b6109be6117d0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d4576108ac83611b74565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561152e575060408051601f3d908101601f1916820190925261152b91810190612af2565b60015b6115915760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161080b565b5f516020612e1e5f395f51905f5281146115ff5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161080b565b506108ac838383611c0f565b5f6116168484611c33565b9050818061162c57506001600160a01b03811615155b8484909161165e57604051632b0d65db60e01b81526001600160401b039092166004830152602482015260440161080b565b50509392505050565b61167b60c954610100900460ff1660021490565b6116985760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bc96117d0565b60c9805460ff191660ff92909216919091179055565b610bc9828260405180602001604052805f815250611cd5565b5f61173882610d33565b9050611747815f846001611b34565b61175082610d33565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161080b565b606580546001600160a01b03191690556109be81611d07565b61185760c954610100900460ff1660021490565b156118755760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116ed565b816001600160a01b0316836001600160a01b0316036119155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080b565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198d84848461130c565b61199984848484611d58565b610f215760405162461bcd60e51b815260040161080b90612b09565b60605f6119c183611e55565b60010190505f816001600160401b038111156119df576119df6126c4565b6040519080825280601f01601f191660200182016040528015611a09576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a1357509392505050565b6060611a5a846001600160a01b03166014611f2c565b611a63846119b5565b83604051602001611a7693929190612b5b565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611aa2575080155b80611aac57504681145b15610bc95760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611af25760405163538ba4f960e01b815260040160405180910390fd5b611afb836120c1565b6108ac8261211f565b5f54610100900460ff16611b2a5760405162461bcd60e51b815260040161080b90612be3565b610bc9828261218f565b611b4860c954610100900460ff1660021490565b15611b665760405163bae6e2a960e01b815260040160405180910390fd5b611b6f836121d0565b610f21565b6001600160a01b0381163b611be15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161080b565b5f516020612e1e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c18836121f9565b5f82511180611c245750805b156108ac57610f218383612238565b6097545f906001600160a01b031680611c5f57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd9190612c2e565b611cdf838361225d565b611ceb5f848484611d58565b6108ac5760405162461bcd60e51b815260040161080b90612b09565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d9b903390899088908890600401612c49565b6020604051808303815f875af1925050508015611dd5575060408051601f3d908101601f19168201909252611dd291810190612c7b565b60015b611e30573d808015611e02576040519150601f19603f3d011682016040523d82523d5f602084013e611e07565b606091505b5080515f03611e285760405162461bcd60e51b815260040161080b90612b09565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109cd565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611ebf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611edd57662386f26fc10000830492506010015b6305f5e1008310611ef5576305f5e100830492506008015b6127108310611f0957612710830492506004015b60648310611f1b576064830492506002015b600a83106106db5760010192915050565b60605f611f3a836002612caa565b611f45906002612cc1565b6001600160401b03811115611f5c57611f5c6126c4565b6040519080825280601f01601f191660200182016040528015611f86576020820181803683370190505b509050600360fc1b815f81518110611fa057611fa0612cd4565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fce57611fce612cd4565b60200101906001600160f81b03191690815f1a9053505f611ff0846002612caa565b611ffb906001612cc1565b90505b6001811115612072576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202f5761202f612cd4565b1a60f81b82828151811061204557612045612cd4565b60200101906001600160f81b03191690815f1a90535060049490941c9361206b81612ce8565b9050611ffe565b508315610ee85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161080b565b5f54610100900460ff166120e75760405162461bcd60e51b815260040161080b90612be3565b6120ef6123f6565b61210d6001600160a01b03821615612107578161182a565b3361182a565b5060c9805461ff001916610100179055565b5f54610100900460ff166121455760405162461bcd60e51b815260040161080b90612be3565b6001600160401b0346111561216d5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121b55760405162461bcd60e51b815260040161080b90612be3565b61012d6121c28382612d48565b5061012e6108ac8282612d48565b306001600160a01b038216036109be57604051630c292c9d60e21b815260040160405180910390fd5b61220281611b74565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ee88383604051806060016040528060278152602001612e3e6027913961241c565b6001600160a01b0382166122b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080b565b5f81815261012f60205260409020546001600160a01b0316156123185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6123255f83836001611b34565b5f81815261012f60205260409020546001600160a01b03161561238a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109e75760405162461bcd60e51b815260040161080b90612be3565b60605f5f856001600160a01b0316856040516124389190612e02565b5f60405180830381855af49150503d805f8114612470576040519150601f19603f3d011682016040523d82523d5f602084013e612475565b606091505b509150915061248686838387612490565b9695505050505050565b606083156124fe5782515f036124f7576001600160a01b0385163b6124f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161080b565b50816109cd565b6109cd83838151156125135781518083602001fd5b8060405162461bcd60e51b815260040161080b91906125aa565b6001600160e01b0319811681146109be575f5ffd5b5f60208284031215612552575f5ffd5b8135610ee88161252d565b5f5b8381101561257757818101518382015260200161255f565b50505f910152565b5f815180845261259681602086016020860161255d565b601f01601f19169290920160200192915050565b602081525f610ee8602083018461257f565b5f602082840312156125cc575f5ffd5b5035919050565b6001600160a01b03811681146109be575f5ffd5b5f5f604083850312156125f8575f5ffd5b8235612603816125d3565b946020939093013593505050565b5f5f5f60608486031215612623575f5ffd5b833561262e816125d3565b9250602084013561263e816125d3565b929592945050506040919091013590565b5f6020828403121561265f575f5ffd5b8135610ee8816125d3565b80358015158114612679575f5ffd5b919050565b5f5f5f60608486031215612690575f5ffd5b83356001600160401b03811681146126a6575f5ffd5b9250602084013591506126bb6040850161266a565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e7575f5ffd5b81356001600160401b03811115612700576127006126c4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561272e5761272e6126c4565b604052818152838201602001851015612745575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612772575f5ffd5b823561277d816125d3565b915060208301356001600160401b03811115612797575f5ffd5b6127a3858286016126d8565b9150509250929050565b5f5f604083850312156127be575f5ffd5b82356127c9816125d3565b91506127d76020840161266a565b90509250929050565b5f5f604083850312156127f1575f5ffd5b823591506127d76020840161266a565b5f5f5f5f60808587031215612814575f5ffd5b843561281f816125d3565b9350602085013561282f816125d3565b92506040850135915060608501356001600160401b03811115612850575f5ffd5b61285c878288016126d8565b91505092959194509250565b5f5f60408385031215612879575f5ffd5b8235612884816125d3565b91506020830135612894816125d3565b809150509250929050565b5f5f83601f8401126128af575f5ffd5b5081356001600160401b038111156128c5575f5ffd5b6020830191508360208285010111156128dc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128fa575f5ffd5b8835612905816125d3565b97506020890135612915816125d3565b96506040890135612925816125d3565b95506060890135945060808901356001600160401b03811115612946575f5ffd5b6129528b828c0161289f565b90955093505060a08901356001600160401b03811115612970575f5ffd5b61297c8b828c0161289f565b999c989b5096995094979396929594505050565b600181811c908216806129a457607f821691505b6020821081036129c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612b02575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b7e81600985016020890161255d565b600160fe1b6009918401918201528451612b9f81600a84016020890161255d565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bd681601384016020880161255d565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c3e575f5ffd5b8151610ee8816125d3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906124869083018461257f565b5f60208284031215612c8b575f5ffd5b8151610ee88161252d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106db576106db612c96565b808201808211156106db576106db612c96565b634e487b7160e01b5f52603260045260245ffd5b5f81612cf657612cf6612c96565b505f190190565b601f8211156108ac57805f5260205f20601f840160051c81016020851015612d225750805b601f840160051c820191505b81811015612d41575f8155600101612d2e565b5050505050565b81516001600160401b03811115612d6157612d616126c4565b612d7581612d6f8454612990565b84612cfd565b6020601f821160018114612da7575f8315612d905750848201515b5f19600385901b1c1916600184901b178455612d41565b5f84815260208120601f198516915b82811015612dd65787850151825560209485019460019092019101612db6565b5084821015612df357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e1381846020870161255d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208e7f20477658f6c21c4be2af9744b613a47f16bf810f8e2ba3e96632cba2471a64736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010098": { + "contractName": "BridgedERC1155", + "storage": {}, + "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c397814610568578063e985e9c514610585578063ef8c4ae6146105cd578063f242432a146105ec578063f2fde38b1461060b575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b61062a565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106c4565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e610703565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610790565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b610823565b005b3480156102fa575f5ffd5b5061023a61086f565b34801561030e575f5ffd5b506102ed61031d366004612970565b610887565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b61094e565b348015610383575f5ffd5b506102ed610962565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b610976565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a95565b3480156103ec575f5ffd5b50610208610b4e565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c00565b348015610434575f5ffd5b506102ed610c11565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c88565b34801561047c575f5ffd5b50610341610c9b565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610ca9565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cb7565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610cc2565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd5565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da7565b34801561053d575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610212565b348015610573575f5ffd5b506065546001600160a01b0316610341565b348015610590575f5ffd5b5061023a61059f366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105d8575f5ffd5b506102ed6105e7366004612cf1565b610eeb565b3480156105f7575f5ffd5b506102ed610606366004612d9e565b61106b565b348015610616575f5ffd5b506102ed610625366004612970565b6110b0565b5f6001600160a01b0383166106995760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106f457506001600160e01b031982166377c6257360e11b145b806106be57506106be82611121565b610162805461071190612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461073d90612df5565b80156107885780601f1061075f57610100808354040283529160200191610788565b820191905f5260205f20905b81548152906001019060200180831161076b57829003601f168201915b505050505081565b606061012f80546107a090612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107cc90612df5565b80156108175780601f106107ee57610100808354040283529160200191610817565b820191905f5260205f20905b8154815290600101906020018083116107fa57829003601f168201915b50505050509050919050565b6001600160a01b03851633148061083f575061083f853361059f565b61085b5760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611170565b5050505050565b5f600261087e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108cf5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b031661090161130b565b6001600160a01b0316146109275760405162461bcd60e51b815260040161069090612ec7565b61093081611326565b604080515f8082526020820190925261094b9183919061132e565b50565b5f61095a848484611498565b949350505050565b61096a6114f4565b610974335f611584565b565b606081518351146109db5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610690565b5f83516001600160401b038111156109f5576109f561277e565b604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b5090505f5b8451811015610a8d57610a68858281518110610a4157610a41612f13565b6020026020010151858381518110610a5b57610a5b612f13565b602002602001015161062a565b828281518110610a7a57610a7a612f13565b6020908102919091010152600101610a23565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610add5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610b0f61130b565b6001600160a01b031614610b355760405162461bcd60e51b815260040161069090612ec7565b610b3e82611326565b610b4a8282600161132e565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610690565b505f5160206134ec5f395f51905f525b90565b610c08611588565b6109745f6115e2565b60655433906001600160a01b03168114610c7f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610690565b61094b816115e2565b610c906115fb565b610974336001611584565b5f610ca461130b565b905090565b610161805461071190612df5565b610b4a33838361166c565b5f610cce468484611498565b9392505050565b610ce960c954610100900460ff1660021490565b15610d075760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d23816001610cc2565b6001600160a01b0316336001600160a01b031614610d5457604051630d85cccf60e11b815260040160405180910390fd5b6002610d6260c95460ff1690565b60ff1603610d835760405163dfc60d8560e01b815260040160405180910390fd5b610d8d600261174c565b610d98338484611762565b610da2600161174c565b505050565b610dbb60c954610100900460ff1660021490565b15610dd95760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df5816001610cc2565b6001600160a01b0316336001600160a01b031614610e2657604051630d85cccf60e11b815260040160405180910390fd5b6002610e3460c95460ff1690565b60ff1603610e555760405163dfc60d8560e01b815260040160405180910390fd5b610e5f600261174c565b610ed9868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118f6915050565b610ee3600161174c565b505050505050565b5f54610100900460ff1615808015610f0957505f54600160ff909116105b80610f225750303b158015610f2257505f5460ff166001145b610f855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610690565b5f805460ff191660011790558015610fa6575f805461ff0019166101001790555b610fb08787611a78565b610fba8989611ab4565b610fdb610fd6888860405180602001604052805f815250611aee565b611b38565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100b858783612f6b565b5061016261101a838583612f6b565b508015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b0385163314806110875750611087853361059f565b6110a35760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611b67565b6110b8611588565b606580546001600160a01b0383166001600160a01b031990911681179091556110e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115157506001600160e01b031982166303a24d0760e21b145b806106be57506301ffc9a760e01b6001600160e01b03198316146106be565b81518351146111915760405162461bcd60e51b815260040161069090613024565b6001600160a01b0384166111b75760405162461bcd60e51b81526004016106909061306c565b336111c6818787878787611c96565b5f5b84518110156112a5575f8582815181106111e4576111e4612f13565b602002602001015190505f85838151811061120157611201612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112525760405162461bcd60e51b8152600401610690906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129190849061310f565b9091555050600190930192506111c8915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f5929190613122565b60405180910390a4610ee3818787878787611cd6565b5f5160206134ec5f395f51905f52546001600160a01b031690565b61094b611588565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136157610da283611e30565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bb575060408051601f3d908101601f191682019092526113b89181019061314f565b60015b61141e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610690565b5f5160206134ec5f395f51905f52811461148c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610690565b50610da2838383611ecb565b5f6114a38484611ef5565b905081806114b957506001600160a01b03811615155b848490916114eb57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610690565b50509392505050565b61150860c954610100900460ff1660021490565b6115255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b4a5b6033546001600160a01b031633146109745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610690565b606580546001600160a01b031916905561094b81611f97565b61160f60c954610100900460ff1660021490565b1561162d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161157a565b816001600160a01b0316836001600160a01b0316036116df5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610690565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117c45760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610690565b335f6117cf84611fe8565b90505f6117db84611fe8565b90506117f983875f858560405180602001604052805f815250611c96565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118785760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610690565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0384166119565760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610690565b81518351146119775760405162461bcd60e51b815260040161069090613024565b33611986815f87878787611c96565b5f5b8451811015611a12578381815181106119a3576119a3612f13565b602002602001015161012d5f8784815181106119c1576119c1612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611a05919061310f565b9091555050600101611988565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a62929190613122565b60405180910390a4610868815f87878787611cd6565b6001600160a01b0382161580611a8c575080155b80611a9657504681145b15610b4a5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611adc5760405163538ba4f960e01b815260040160405180910390fd5b611ae583612031565b610da28261208f565b6060611b04846001600160a01b031660146120ff565b611b0d84612294565b83604051602001611b2093929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b5e5760405162461bcd60e51b8152600401610690906131ee565b61094b81612323565b6001600160a01b038416611b8d5760405162461bcd60e51b81526004016106909061306c565b335f611b9885611fe8565b90505f611ba485611fe8565b9050611bb4838989858589611c96565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bf75760405162461bcd60e51b8152600401610690906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c3690849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611060848a8a8a8a8a612352565b611caa60c954610100900460ff1660021490565b15611cc85760405163bae6e2a960e01b815260040160405180910390fd5b611cd18461240c565b610ee3565b6001600160a01b0384163b15610ee35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d1a9089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d54575060408051601f3d908101601f19168201909252611d5191810190613296565b60015b611e0057611d606132b1565b806308c379a003611d995750611d746132c9565b80611d7f5750611d9b565b8060405162461bcd60e51b81526004016106909190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610690565b6001600160e01b0319811663bc197c8160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b6001600160a01b0381163b611e9d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610690565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ed483612435565b5f82511180611ee05750805b15610da257611eef8383612474565b50505050565b6097545f906001600160a01b031680611f2157604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f73573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095a919061338b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610690906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115e2565b336115e2565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610690906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b508315610cce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610690565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610690906131ee565b61094b81612596565b6001600160a01b0384163b15610ee35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d606132b1565b6001600160e01b0319811663f23a6e6160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b306001600160a01b0382160361094b57604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e30565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610cce838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff166109745760405162461bcd60e51b8152600401610690906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106be5760010192915050565b61012f610b4a8282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610690565b508161095a565b61095a8383815115611d7f5781518083602001fd5b6001600160a01b038116811461094b575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b03198116811461094b575f5ffd5b5f602082840312156126fd575f5ffd5b8135610cce816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610cce602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b8135610cce8161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f610cce6020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da257805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b81811015610868575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b178355610868565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106be576106be6130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610cce816126d8565b5f60033d1115610bfd5760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a8d60208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b8151610cce8161269a565b80820281158282048414176106be576106be6130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b178455610868565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c61a0d82a4e192122d117e9aa6be00523577e93729686599c4b7a65f3e3ad5c264736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000000005": { + "contractName": "SignalServiceImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052d578063f09a40161461054a578063f2fde38b14610569578063fe9fbb8014610588575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e3366004613523565b6105b6565b005b3480156101f5575f5ffd5b506101fe61065c565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d366004613556565b610674565b34801561023d575f5ffd5b5061027161024c366004613596565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135b0565b61068a565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135cb565b61075a565b348015610309575f5ffd5b506102c761031836600461360c565b6107a1565b348015610328575f5ffd5b506101e86107b7565b6101e861033f36600461371c565b6107cb565b34801561034f575f5ffd5b5061036361035e3660046135cb565b610884565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108ca565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613768565b61097b565b3480156103cf575f5ffd5b506101e8610987565b3480156103e3575f5ffd5b506101e8610998565b3480156103f7575f5ffd5b506101e8610a0f565b34801561040b575f5ffd5b506102c7610a22565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b36600461377f565b610a30565b34801561045b575f5ffd5b5061036361046a366004613814565b610b0b565b34801561047a575f5ffd5b50610363610489366004613850565b610b76565b348015610499575f5ffd5b506102c76104a8366004613880565b610ba2565b3480156104b8575f5ffd5b506101e86104c736600461377f565b610bae565b3480156104d7575f5ffd5b506104eb6104e6366004613850565b610bc4565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c9546201000090046001600160401b0316610271565b348015610538575f5ffd5b506065546001600160a01b03166102c7565b348015610555575f5ffd5b506101e86105643660046138a1565b610c58565b348015610574575f5ffd5b506101e86105833660046135b0565b610d67565b348015610593575f5ffd5b506101fe6105a23660046135b0565b60fc6020525f908152604090205460ff1681565b6105be610dd8565b6001600160a01b0382165f90815260fc602052604090205481151560ff9091161515036105fe576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066b60c95460ff1690565b60ff1614905090565b5f61067f8383610e32565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106db5760405162461bcd60e51b81526004016106d2906138d8565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661070d610e94565b6001600160a01b0316146107335760405162461bcd60e51b81526004016106d290613924565b61073c81610eaf565b604080515f8082526020820190925261075791839190610eb7565b50565b5f8180820361077c5760405163ec73295960e01b815260040160405180910390fd5b5f610788878787610b76565b9050836107953083610e32565b14979650505050505050565b5f6107ad848484611021565b90505b9392505050565b6107bf61107d565b6107c9335f61110d565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108135760405162461bcd60e51b81526004016106d2906138d8565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610845610e94565b6001600160a01b03161461086b5760405162461bcd60e51b81526004016106d290613924565b61087482610eaf565b61088082826001610eb7565b5050565b335f90815260fc602052604081205460ff166108b357604051631f67751f60e01b815260040160405180910390fd5b6108bf85858585611126565b90505b949350505050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000516146109695760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d2565b505f516020613eb85f395f51905f5290565b5f610684338384611208565b61098f610dd8565b6107c95f6112e1565b60655433906001600160a01b03168114610a065760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d2565b610757816112e1565b610a176112fa565b6107c933600161110d565b5f610a2b610e94565b905090565b5f610a4560c954610100900460ff1660021490565b15610a635760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7160c95460ff1690565b60ff1603610a925760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610aaf8787878787600161136b565b90505f5b8151811015610af257610ade828281518110610ad157610ad1613970565b6020026020010151611827565b610ae89084613998565b9250600101610ab3565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b57565b5f6107b0468484611021565b610bbc85858585855f61136b565b505050505050565b5f5f826001600160401b03165f03610c00576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c02565b825b91506001600160401b03821615610c50575f610c1f868685610b76565b9050610c2b3082610e32565b91505f829003610c4e5760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7657505f54600160ff909116105b80610c8f5750303b158015610c8f57505f5460ff166001145b610cf25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d2565b5f805460ff191660011790558015610d13575f805461ff0019166101001790555b610d1d838361196b565b8015610d62575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d6f610dd8565b606580546001600160a01b0383166001600160a01b03199091168117909155610da06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d2565b5f826001600160a01b038116610e5b5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7d5760405163ec73295960e01b815260040160405180910390fd5b5f610e89468787610b0b565b549695505050505050565b5f516020613eb85f395f51905f52546001600160a01b031690565b610757610dd8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eea57610d62836119a5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f44575060408051601f3d908101601f19168201909252610f41918101906139ab565b60015b610fa75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d2565b5f516020613eb85f395f51905f5281146110155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d2565b50610d62838383611a40565b5f61102c8484611a6a565b9050818061104257506001600160a01b03811615155b8484909161107457604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106d2565b50509392505050565b61109160c954610100900460ff1660021490565b6110ae5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f611132858585610b76565b905061113f308284611208565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a9576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f8929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112315760405163538ba4f960e01b815260040160405180910390fd5b835f8190036112535760405163ec73295960e01b815260040160405180910390fd5b835f8190036112755760405163ec73295960e01b815260040160405180910390fd5b611280468888610b0b565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075781611b0c565b61130e60c954610100900460ff1660021490565b1561132c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611103565b6060856001600160a01b0381166113955760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113b75760405163ec73295960e01b815260040160405180910390fd5b5f6113c486880188613a7f565b905080515f036113e757604051630b92daef60e21b815260040160405180910390fd5b5f600182516113f69190613bc5565b6001600160401b0381111561140d5761140d613645565b604051908082528060200260200182016040528015611436578160200160208202803683370190505b50905085156114c95781516001600160401b0381111561145857611458613645565b6040519080825280602002602001820160405280156114c557816020015b6114b26040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816114765790505b5094505b8a8a8a805f6114ea856d7369676e616c5f7365727669636560901b836107a1565b9050306001600160a01b0382160361151557604051637556223560e11b815260040160405180910390fd5b61154d6040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117db578b818151811061156d5761156d613970565b602002602001015194505f5b818110156115d757855f01516001600160401b03168c82815181106115a0576115a0613970565b60200260200101516001600160401b0316036115cf576040516348362c2760e11b815260040160405180910390fd5b600101611579565b506115e68a8a8a8a898b611b5d565b93508a518114915081156116265784516001600160401b0316461461161e576040516338bf822760e21b815260040160405180910390fd5b3095506116d1565b845f01518b828151811061163c5761163c613970565b6001600160401b039283166020918202929092010152855116158061166a575084516001600160401b031646145b1561168857604051637556223560e11b815260040160405180910390fd5b84516116a6906d7369676e616c5f7365727669636560901b5f6107a1565b9550306001600160a01b038716036116d157604051637556223560e11b815260040160405180910390fd5b608085015151151592508f15611765576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561174457611744613bd8565b8152508f828151811061175957611759613970565b60200260200101819052505b6117c08a84611794577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117b6565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b76565b604086015186519b5096995097509495508794600101611552565b508515806117f257506117ee3088610e32565b8614155b156118105760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561184157611841613bd8565b1480611862575060028360c00151600381111561186057611860613bd8565b145b9050808015611872575082608001515b801561188057508260a00151155b156118c257600191506118c083604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f0151611126565b505b5f60038460c0015160038111156118db576118db613bd8565b14806118fc575060018460c0015160038111156118fa576118fa613bd8565b145b9050808015611918575083608001518061191857508360a00151155b1561196457611928600184613998565b925061196284604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf586606001518760200151611126565b505b5050919050565b806001600160a01b0381166119935760405163538ba4f960e01b815260040160405180910390fd5b61199c83611bfc565b610d6282611c5a565b6001600160a01b0381163b611a125760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d2565b5f516020613eb85f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4983611cca565b5f82511180611a555750805b15610d6257611a648383611d09565b50505050565b6097545f906001600160a01b031680611a9657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c29190613bec565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b865760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba85760405163ec73295960e01b815260040160405180910390fd5b855f819003611bca5760405163ec73295960e01b815260040160405180910390fd5b611bee866040015186611bde8d8d8d610b0b565b8a8a608001518b60a00151611d2e565b9a9950505050505050505050565b5f54610100900460ff16611c225760405162461bcd60e51b81526004016106d290613c07565b611c2a611e3b565b611c486001600160a01b03821615611c4257816112e1565b336112e1565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c805760405162461bcd60e51b81526004016106d290613c07565b6001600160401b03461115611ca85760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611cd3816119a5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b08383604051806060016040528060278152602001613ed860279139611e61565b5f82515f14611dd6576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d7290603401604051602081830303815290604052858a611ed5565b905080515f03611d9557604051630414cd5b60e31b815260040160405180910390fd5b5f611d9f82611eee565b9050611dc481600281518110611db757611db7613970565b6020026020010151611f01565b611dcd90613c52565b92505050611dd9565b50855b5f611e1086604051602001611df091815260200190565b60408051601f19818403018152919052611e0987611f80565b8585611f93565b905080611e3057604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107c95760405162461bcd60e51b81526004016106d290613c07565b60605f5f856001600160a01b031685604051611e7d9190613c9a565b5f60405180830381855af49150503d805f8114611eb5576040519150601f19603f3d011682016040523d82523d5f602084013e611eba565b606091505b5091509150611ecb86838387611fac565b9695505050505050565b60605f611ee185612024565b9050610b02818585612056565b6060610684611efc836128c4565b612916565b60605f5f5f611f0f85612a94565b919450925090505f816001811115611f2957611f29613bd8565b14611f47576040516307fe6cb960e21b815260040160405180910390fd5b611f518284613998565b855114611f7157604051630b8aa6f760e31b815260040160405180910390fd5b610b0285602001518484612d77565b6060610684611f8e83612e07565b612f1b565b5f5f611f9e86612024565b9050611ecb81868686612f73565b6060831561201a5782515f03612013576001600160a01b0385163b6120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d2565b50816108c2565b6108c28383612f99565b6060818051906020012060405160200161204091815260200190565b6040516020818303038152906040529050919050565b60605f8451116120a05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d2565b5f6120aa84612fc3565b90505f6120b6866130a6565b90505f846040516020016120cc91815260200190565b60408051601f1981840301815291905290505f805b845181101561286d575f8582815181106120fd576120fd613970565b60200260200101519050845183111561216f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d2565b825f0361220d57805180516020918201206040516121bc9261219692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122085760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d2565b612303565b80515160201161229357805180516020918201206040516122379261219692910190815260200190565b6122085760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d2565b8051845160208087019190912082519190920120146123035760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d2565b61230f60106001613998565b816020015151036124a757845183036124415761233c8160200151601081518110611db757611db7613970565b96505f8751116123b45760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d2565b600186516123c29190613bc5565b82146124365760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d2565b5050505050506107b0565b5f85848151811061245457612454613970565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247e5761247e613970565b6020026020010151905061249181613107565b955061249e600186613998565b94505050612864565b60028160200151510361280b575f6124be8261312b565b90505f815f815181106124d3576124d3613970565b016020015160f81c90505f6124e9600283613cc9565b6124f4906002613cea565b90505f612504848360ff1661314e565b90505f6125118a8961314e565b90505f61251e8383613183565b9050808351146125965760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d2565b60ff8516600214806125ab575060ff85166003145b1561274b57808251146126265760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d2565b6126408760200151600181518110611db757611db7613970565b9c505f8d51116126b85760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d2565b60018c516126c69190613bc5565b881461273a5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d2565b5050505050505050505050506107b0565b60ff8516158061275e575060ff85166001145b1561279d5761278a876020015160018151811061277d5761277d613970565b6020026020010151613107565b9950612796818a613998565b9850612800565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d2565b505050505050612864565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d2565b506001016120e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d2565b604080518082019091525f808252602082015281515f036128f857604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61292485612a94565b91945092509050600181600181111561293f5761293f613bd8565b1461295d576040516325ce355f60e11b815260040160405180910390fd5b84516129698385613998565b1461298757604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f808252602082015281526020019060019003908161299e5790505093505f835b8651811015612a88575f5f612a0d6040518060400160405280858c5f01516129f19190613bc5565b8152602001858c60200151612a069190613998565b9052612a94565b509150915060405180604001604052808383612a299190613998565b8152602001848b60200151612a3e9190613998565b815250888581518110612a5357612a53613970565b6020908102919091010152612a69600185613998565b9350612a758183613998565b612a7f9084613998565b925050506129c9565b50845250919392505050565b5f5f5f835f01515f03612aba57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612adc575f60015f9450945094505050612d70565b60b78111612b71575f612af0608083613bc5565b905080875f015111612b15576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b415750600160ff1b6001600160f81b03198216105b15612b5f5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d70915050565b60bf8111612c4f575f612b8560b783613bc5565b905080875f015111612baa576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bda5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c095760405163babb01dd60e01b815260040160405180910390fd5b612c138184613998565b895111612c33576040516366c9448560e01b815260040160405180910390fd5b612c3e836001613998565b975095505f9450612d709350505050565b60f78111612c99575f612c6360c083613bc5565b905080875f015111612c88576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d70915050565b5f612ca560f783613bc5565b905080875f015111612cca576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cfa5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d295760405163babb01dd60e01b815260040160405180910390fd5b612d338184613998565b895111612d53576040516366c9448560e01b815260040160405180910390fd5b612d5e836001613998565b9750955060019450612d709350505050565b9193909250565b6060816001600160401b03811115612d9157612d91613645565b6040519080825280601f01601f191660200182016040528015612dbb576020820181803683370190505b50905081156107b0575f612dcf8486613998565b9050602082015f5b84811015612def578281015182820152602001612dd7565b84811115612dfd575f858301525b5050509392505050565b60605f82604051602001612e1d91815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6957818181518110612e4c57612e4c613970565b01602001516001600160f81b0319165f03612e6957600101612e31565b612e74816020613bc5565b6001600160401b03811115612e8b57612e8b613645565b6040519080825280601f01601f191660200182016040528015612eb5576020820181803683370190505b5092505f5b8351811015611962578282612ece81613d03565b935081518110612ee057612ee0613970565b602001015160f81c60f81b848281518110612efd57612efd613970565b60200101906001600160f81b03191690815f1a905350600101612eba565b606081516001148015612f4757506080825f81518110612f3d57612f3d613970565b016020015160f81c105b15612f50575090565b612f5c82516080613206565b82604051602001612040929190613d1b565b919050565b5f6108bf84612f83878686612056565b8051602091820120825192909101919091201490565b815115612fa95781518083602001fd5b8060405162461bcd60e51b81526004016106d29190613d49565b8051606090806001600160401b03811115612fe057612fe0613645565b60405190808252806020026020018201604052801561302557816020015b6040805180820190915260608082526020820152815260200190600190039081612ffe5790505b5091505f5b8181101561196457604051806040016040528085838151811061304f5761304f613970565b6020026020010151815260200161307e86848151811061307157613071613970565b6020026020010151611eee565b81525083828151811061309357613093613970565b602090810291909101015260010161302a565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130fc578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130cf565b509295945050505050565b60606020825f0151106131225761311d82611f01565b610684565b610684826133ab565b606061068461314983602001515f81518110611db757611db7613970565b6130a6565b60608251821061316c575060408051602081019091525f8152610684565b6107b0838384865161317e9190613bc5565b6133bf565b5f5f8251845110613195578251613198565b83515b90505b80821080156131ef57508282815181106131b7576131b7613970565b602001015160f81c60f81b6001600160f81b0319168483815181106131de576131de613970565b01602001516001600160f81b031916145b156131ff5781600101915061319b565b5092915050565b6060603883101561326a576040805160018082528183019092529060208201818036833701905050905061323a8284613d7b565b60f81b815f8151811061324f5761324f613970565b60200101906001600160f81b03191690815f1a905350610684565b5f60015b6132788186613d94565b1561329e578161328781613d03565b9250613297905061010082613da7565b905061326e565b6132a9826001613998565b6001600160401b038111156132c0576132c0613645565b6040519080825280601f01601f1916602001820160405280156132ea576020820181803683370190505b5092506132f78483613d7b565b613302906037613d7b565b60f81b835f8151811061331757613317613970565b60200101906001600160f81b03191690815f1a905350600190505b8181116133a3576101006133468284613bc5565b61335290610100613e99565b61335c9087613d94565b6133669190613ea4565b60f81b83828151811061337b5761337b613970565b60200101906001600160f81b03191690815f1a9053508061339b81613d03565b915050613332565b505092915050565b606061068482602001515f845f0151612d77565b60608182601f0110156134055760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8282840110156134485760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8183018451101561348f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d2565b6060821580156134ad5760405191505f8252602082016040526134f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134e65780518352602092830192016134ce565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610757575f5ffd5b80358015158114612f6e575f5ffd5b5f5f60408385031215613534575f5ffd5b823561353f81613500565b915061354d60208401613514565b90509250929050565b5f5f60408385031215613567575f5ffd5b823561357281613500565b946020939093013593505050565b80356001600160401b0381168114612f6e575f5ffd5b5f5f604083850312156135a7575f5ffd5b61357283613580565b5f602082840312156135c0575f5ffd5b81356107b081613500565b5f5f5f5f608085870312156135de575f5ffd5b6135e785613580565b9350602085013592506135fc60408601613580565b9396929550929360600135925050565b5f5f5f6060848603121561361e575f5ffd5b61362784613580565b92506020840135915061363c60408501613514565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561367b5761367b613645565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a9576136a9613645565b604052919050565b5f82601f8301126136c0575f5ffd5b81356001600160401b038111156136d9576136d9613645565b6136ec601f8201601f1916602001613681565b818152846020838601011115613700575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561372d575f5ffd5b823561373881613500565b915060208301356001600160401b03811115613752575f5ffd5b61375e858286016136b1565b9150509250929050565b5f60208284031215613778575f5ffd5b5035919050565b5f5f5f5f5f60808688031215613793575f5ffd5b61379c86613580565b945060208601356137ac81613500565b93506040860135925060608601356001600160401b038111156137cd575f5ffd5b8601601f810188136137dd575f5ffd5b80356001600160401b038111156137f2575f5ffd5b886020828401011115613803575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215613826575f5ffd5b61382f84613580565b9250602084013561383f81613500565b929592945050506040919091013590565b5f5f5f60608486031215613862575f5ffd5b61386b84613580565b92506020840135915061363c60408501613580565b5f5f60408385031215613891575f5ffd5b8235915061354d60208401613514565b5f5f604083850312156138b2575f5ffd5b82356138bd81613500565b915060208301356138cd81613500565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068457610684613984565b5f602082840312156139bb575f5ffd5b5051919050565b5f6001600160401b038211156139da576139da613645565b5060051b60200190565b803560048110612f6e575f5ffd5b5f82601f830112613a01575f5ffd5b8135613a14613a0f826139c2565b613681565b8082825260208201915060208360051b860101925085831115613a35575f5ffd5b602085015b83811015613a755780356001600160401b03811115613a57575f5ffd5b613a66886020838a01016136b1565b84525060209283019201613a3a565b5095945050505050565b5f60208284031215613a8f575f5ffd5b81356001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8035613ac2613a0f826139c2565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015611e305780356001600160401b03811115613b05575f5ffd5b850160c0818a03601f19011215613b1a575f5ffd5b613b22613659565b613b2e60208301613580565b8152613b3c60408301613580565b602082015260608201356040820152613b57608083016139e4565b606082015260a08201356001600160401b03811115613b74575f5ffd5b613b838b6020838601016139f2565b60808301525060c08201356001600160401b03811115613ba1575f5ffd5b613bb08b6020838601016139f2565b60a08301525084525060209283019201613ae8565b8181038181111561068457610684613984565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bfc575f5ffd5b81516107b081613500565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c72575f198160200360031b1b821691505b50919050565b5f5b83811015613c92578181015183820152602001613c7a565b50505f910152565b5f8251613cab818460208701613c78565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cdb57613cdb613cb5565b8060ff84160691505092915050565b60ff828116828216039081111561068457610684613984565b5f60018201613d1457613d14613984565b5060010190565b5f8351613d2c818460208801613c78565b835190830190613d40818360208801613c78565b01949350505050565b602081525f8251806020840152613d67816040850160208701613c78565b601f01601f19169190910160400192915050565b60ff818116838216019081111561068457610684613984565b5f82613da257613da2613cb5565b500490565b808202811582820484141761068457610684613984565b6001815b6001841115610c5057808504811115613ddd57613ddd613984565b6001841615613deb57908102905b60019390931c928002613dc2565b5f82613e0757506001610684565b81613e1357505f610684565b8160018114613e295760028114613e3357613e4f565b6001915050610684565b60ff841115613e4457613e44613984565b50506001821b610684565b5060208310610133831016604e8410600b8410161715613e72575081810a610684565b613e7e5f198484613dbe565b805f1904821115613e9157613e91613984565b029392505050565b5f6107b08383613df9565b5f82613eb257613eb2613cb5565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204468b8adee6c324d6a7192cb1aada2b474837cf3f594d8153d9826cdf00171ee64736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000000005": { + "contractName": "SignalService", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", + "0xe3ad9bc7a782493ccba4f8a469cc3f9e8fb5647c2076401c8a7c4945a999c777": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000005" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010001": { + "contractName": "TaikoL2Impl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105b4578063ee82ac5e146105d3578063f2fde38b146105f2578063f940e38514610611578063fd85eb2d14610630575f5ffd5b8063da69d3db14610540578063dac5df781461055f578063e07baba614610574578063e30c397814610597575f5ffd5b8063a578781e116100e3578063a578781e1461047c578063a7137c0f146104a0578063a7e022d1146104c6578063a86f9d9e14610502578063b8c7b30c14610521575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f61025636600461259f565b61064f565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b50610269610665565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df3660046125f3565b61067d565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461261b565b61074d565b348015610347575f5ffd5b506102e4610759565b6102e461035e36600461266c565b61076d565b34801561036e575f5ffd5b50610377610826565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c536600461272f565b6108d7565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610ae0565b348015610409575f5ffd5b506102e4610af1565b34801561041d575f5ffd5b506102e4610b68565b348015610431575f5ffd5b50610305610b7b565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd54600160801b90046001600160401b031661021f565b3480156104ab575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104d1575f5ffd5b506104e56104e0366004612797565b610b89565b604080519283526001600160401b03909116602083015201610233565b34801561050d575f5ffd5b5061030561051c3660046127c8565b610c15565b34801561052c575f5ffd5b5060fd5461021f906001600160401b031681565b34801561054b575f5ffd5b506102e461055a3660046127f6565b610c2a565b34801561056a575f5ffd5b5061037760fc5481565b34801561057f575f5ffd5b5060c9546201000090046001600160401b031661021f565b3480156105a2575f5ffd5b506065546001600160a01b0316610305565b3480156105bf575f5ffd5b506104e56105ce36600461283e565b610cfa565b3480156105de575f5ffd5b506103776105ed366004612886565b610ddc565b3480156105fd575f5ffd5b506102e461060c3660046125f3565b610e14565b34801561061c575f5ffd5b506102e461062b36600461289d565b610e85565b34801561063b575f5ffd5b506102e461064a3660046128c9565b611042565b5f61065b8484846114ac565b90505b9392505050565b5f600261067460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036106ce5760405162461bcd60e51b81526004016106c59061290a565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b0316610700611570565b6001600160a01b0316146107265760405162461bcd60e51b81526004016106c590612956565b61072f8161158b565b604080515f8082526020820190925261074a91839190611593565b50565b5f61065b848484611702565b61076161175e565b61076b335f6117ee565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036107b55760405162461bcd60e51b81526004016106c59061290a565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b03166107e7611570565b6001600160a01b03161461080d5760405162461bcd60e51b81526004016106c590612956565b6108168261158b565b61082282826001611593565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116146108c55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106c5565b505f516020612be35f395f51905f5290565b5f54610100900460ff16158080156108f557505f54600160ff909116105b8061090e5750303b15801561090e57505f5460ff166001145b6109715760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c5565b5f805460ff191660011790558015610992575f805461ff0019166101001790555b61099c85856117f6565b6001600160401b03831615806109ba575046836001600160401b0316145b156109d8576040516308279a2560e31b815260040160405180910390fd5b6001461115806109ee57506001600160401b0346115b15610a0c57604051638f972ecb60e01b815260040160405180910390fd5b4315610a565743600103610a3d575f610a266001436129b6565b5f81815260fb602052604090209040905550610a56565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610a9043611830565b5060fc558015610ad9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610ae86118c0565b61076b5f61191a565b60655433906001600160a01b03168114610b5f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106c5565b61074a8161191a565b610b70611933565b61076b3360016117ee565b5f610b84611570565b905090565b5f5f5f610baa60408051808201909152630393870081526008602082015290565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129c9565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a6129e0565b610c0291906129ff565b875f6119a4565b90969095509350505050565b5f610c21468484611702565b90505b92915050565b825f819003610c4c5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610c765760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610ca857604051636494e9f760e01b815260040160405180910390fd5b6002610cb660c95460ff1690565b60ff1603610cd75760405163dfc60d8560e01b815260040160405180910390fd5b610ce16002611a2d565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d0d6060880160408901612a3f565b610d1d9063ffffffff16876129ff565b9050610d2f60a0880160808901612a3f565b63ffffffff1615801590610d605750610d4e60a0880160808901612a3f565b63ffffffff16816001600160401b0316115b15610d7e57610d7560a0880160808901612a3f565b63ffffffff1690505b5f610d8c6020890189612a58565b60ff16610d9f60608a0160408b01612a3f565b63ffffffff16610daf91906129c9565b9050610dcd81878488610dc860808e0160608f01612a78565b6119a4565b93509350505094509492505050565b5f438210610deb57505f919050565b43610df883610100612a91565b10610e0257504090565b505f90815260fb602052604090205490565b610e1c6118c0565b606580546001600160a01b0383166001600160a01b03199091168117909155610e4d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b038116610ead5760405163538ba4f960e01b815260040160405180910390fd5b610ec160c954610100900460ff1660021490565b15610edf5760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610eff6033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610f395750610f24816001610c15565b6001600160a01b0316336001600160a01b0316145b610f5657604051630d85cccf60e11b815260040160405180910390fd5b6002610f6460c95460ff1690565b60ff1603610f855760405163dfc60d8560e01b815260040160405180910390fd5b610f8f6002611a2d565b6001600160a01b038416610fb557610fb06001600160a01b03841647611a43565b611032565b6040516370a0823160e01b81523060048201526110329084906001600160a01b038716906370a0823190602401602060405180830381865afa158015610ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110219190612a28565b6001600160a01b0387169190611a4e565b61103c6001611a2d565b50505050565b825f8190036110645760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f0361108e5760405163ec73295960e01b815260040160405180910390fd5b61109e6060840160408501612a3f565b63ffffffff16805f036110c45760405163ec73295960e01b815260040160405180910390fd5b6110d16020850185612a58565b60ff16805f036110f45760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461112657604051636494e9f760e01b815260040160405180910390fd5b600261113460c95460ff1690565b60ff16036111555760405163dfc60d8560e01b815260040160405180910390fd5b61115f6002611a2d565b5f61116b6001436129b6565b90505f5f61117883611830565b915091508160fc541461119e5760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111b06020880188612a58565b60ff166111c36060890160408a01612a3f565b63ffffffff166111d391906129ff565b60fd549091506001600160401b03808316600160c01b909204161461126e5760fd54600160c01b90046001600160401b03161561124d5760fd5461122b906001600160401b0380821691600160c01b9004168361064f565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112a890899061129690600160801b90046001600160401b0316426129b6565b60fd546001600160401b03168c610cfa565b915091506112b35f90565b1580156112c05750814814155b156112de576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114035761132c6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d79190612a28565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe49361148e938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114a26001611a2d565b5050505050505050565b5f826001600160401b03165f036114c457508061065e565b670de0b6b3a76400005f6001600160401b03808616906114e6908616846129c9565b6114f09190612ab8565b905080158061150557506001600160ff1b0381115b1561152357604051636296f1b960e11b815260040160405180910390fd5b5f61152d82611aa0565b90505f828802828702015f81126001811461154c578582049250611550565b5f92505b506115649050816001600160401b03611cbd565b98975050505050505050565b5f516020612be35f395f51905f52546001600160a01b031690565b61074a6118c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115cb576115c683611cd1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611625575060408051601f3d908101601f1916820190925261162291810190612a28565b60015b6116885760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106c5565b5f516020612be35f395f51905f5281146116f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106c5565b506115c6838383611d6c565b5f61170d8484611d90565b9050818061172357506001600160a01b03811615155b8484909161175557604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106c5565b50509392505050565b61177260c954610100900460ff1660021490565b61178f5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108226118c0565b806001600160a01b03811661181e5760405163538ba4f960e01b815260040160405180910390fd5b61182783611e3a565b6115c682611e98565b5f5f61183a612564565b5f5b60ff8110801561184f5750806001018510155b15611880575f198186030180408360ff8306610100811061187257611872612acb565b60200201525060010161183c565b5046611fe08201526120008120925083408161189d60ff87612adf565b61010081106118ae576118ae612acb565b60200201526120009020919391925050565b6033546001600160a01b0316331461076b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c5565b606580546001600160a01b031916905561074a81611f08565b61194760c954610100900460ff1660021490565b156119655760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117e4565b5f80806119c063ffffffff86166001600160401b038916612a91565b9050856001600160401b031681116119d95760016119ec565b6119ec6001600160401b038716826129b6565b9050611a0b6001600160401b03611a0583878316611f59565b90611cbd565b9150611a20826001600160401b031689611f6e565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61082282825a611f9d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115c6908490611fe0565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611afc57631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ccb5782610c21565b50919050565b6001600160a01b0381163b611d3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106c5565b5f516020612be35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d75836120b3565b5f82511180611d815750805b156115c65761103c83836120f2565b6097545f906001600160a01b031680611dbc57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e329190612af2565b949350505050565b5f54610100900460ff16611e605760405162461bcd60e51b81526004016106c590612b0d565b611e68612117565b611e866001600160a01b03821615611e80578161191a565b3361191a565b5060c9805461ff001916610100179055565b5f54610100900460ff16611ebe5760405162461bcd60e51b81526004016106c590612b0d565b6001600160401b03461115611ee65760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f675781610c21565b5090919050565b5f5f82611f7b858561213d565b611f859190612ab8565b90508015611f935780611e32565b5060019392505050565b815f03611fa957505050565b611fc383838360405180602001604052805f8152506121b7565b6115c657604051634c67134d60e11b815260040160405180910390fd5b5f612034826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121f49092919063ffffffff16565b905080515f14806120545750808060200190518101906120549190612b58565b6115c65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106c5565b6120bc81611cd1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c0360279139612202565b5f54610100900460ff1661076b5760405162461bcd60e51b81526004016106c590612b0d565b5f815f0361215e57604051636296f1b960e11b815260040160405180910390fd5b5f8261217285670de0b6b3a76400006129c9565b61217c9190612ab8565b9050680755bf798b4a1bf1e481111561219b5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ad82612276565b611e329190612ab8565b5f6001600160a01b0385166121df57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061065b84845f856123f0565b60605f5f856001600160a01b03168560405161221e9190612b95565b5f60405180830381855af49150503d805f8114612256576040519150601f19603f3d011682016040523d82523d5f602084013e61225b565b606091505b509150915061226c868383876124c7565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361228d57919050565b680755bf798b4a1bf1e582126122aa5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106c5565b5f5f866001600160a01b0316858760405161246c9190612b95565b5f6040518083038185875af1925050503d805f81146124a6576040519150601f19603f3d011682016040523d82523d5f602084013e6124ab565b606091505b50915091506124bc878383876124c7565b979650505050505050565b606083156125355782515f0361252e576001600160a01b0385163b61252e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106c5565b5081611e32565b611e32838381511561254a5781518083602001fd5b8060405162461bcd60e51b81526004016106c59190612bb0565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b038116811461259a575f5ffd5b919050565b5f5f5f606084860312156125b1575f5ffd5b6125ba84612584565b92506125c860208501612584565b91506125d660408501612584565b90509250925092565b6001600160a01b038116811461074a575f5ffd5b5f60208284031215612603575f5ffd5b813561065e816125df565b801515811461074a575f5ffd5b5f5f5f6060848603121561262d575f5ffd5b61263684612584565b925060208401359150604084013561264d8161260e565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561267d575f5ffd5b8235612688816125df565b915060208301356001600160401b038111156126a2575f5ffd5b8301601f810185136126b2575f5ffd5b80356001600160401b038111156126cb576126cb612658565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126f9576126f9612658565b604052818152828201602001871015612710575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612742575f5ffd5b843561274d816125df565b9350602085013561275d816125df565b925061276b60408601612584565b915061277960608601612584565b905092959194509250565b803563ffffffff8116811461259a575f5ffd5b5f5f604083850312156127a8575f5ffd5b6127b183612584565b91506127bf60208401612784565b90509250929050565b5f5f604083850312156127d9575f5ffd5b8235915060208301356127eb8161260e565b809150509250929050565b5f5f5f5f60808587031215612809575f5ffd5b843593506020850135925061282060408601612584565b915061277960608601612784565b5f60a08284031215611ccb575f5ffd5b5f5f5f5f6101008587031215612852575f5ffd5b61285c868661282e565b935061286a60a08601612584565b925061287860c08601612584565b915061277960e08601612784565b5f60208284031215612896575f5ffd5b5035919050565b5f5f604083850312156128ae575f5ffd5b82356128b9816125df565b915060208301356127eb816125df565b5f5f5f5f61010085870312156128dd575f5ffd5b6128e685612584565b9350602085013592506128fb60408601612784565b9150612779866060870161282e565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129a2565b8082028115828204841417610c2457610c246129a2565b6001600160401b038281168282160390811115610c2457610c246129a2565b6001600160401b038181168382160290811690818114612a2157612a216129a2565b5092915050565b5f60208284031215612a38575f5ffd5b5051919050565b5f60208284031215612a4f575f5ffd5b610c2182612784565b5f60208284031215612a68575f5ffd5b813560ff8116811461065e575f5ffd5b5f60208284031215612a88575f5ffd5b610c2182612584565b80820180821115610c2457610c246129a2565b634e487b7160e01b5f52601260045260245ffd5b5f82612ac657612ac6612aa4565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612aed57612aed612aa4565b500690565b5f60208284031215612b02575f5ffd5b815161065e816125df565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b68575f5ffd5b815161065e8161260e565b5f5b83811015612b8d578181015183820152602001612b75565b50505f910152565b5f8251612ba6818460208701612b73565b9190910192915050565b602081525f8251806020840152612bce816040850160208701612b73565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b86dccef61cd132ca45980c090fbd2b245465c5210ce7b53ab59fa4b3d9b3fc64736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000010001": { + "contractName": "TaikoL2", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000010002", + "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007e7e", + "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010001" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010002": { + "contractName": "RollupAddressManagerImpl", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + }, + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", + "balance": "0x0" + }, + "0x1670010000000000000000000000000000010002": { + "contractName": "RollupAddressManager", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0xd8268ac552cc4e7bd87f3f4b36d055f134549289cc2d68715bd581a06ffb2631": "0x0000000000000000000000001670010000000000000000000000000000010001", + "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", + "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010002" + }, + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "balance": "0x0" + }, + "0x5dADBb58A8ACfCaec475a08bBB4054F8874A3A8b": { + "contractName": "LibNetwork", + "storage": {}, + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa28e419f92948effce2eaec534c53f13c8015c95a6be7019674d64d2aac3ae164736f6c634300081b0033", + "balance": "0x0" + }, + "0x0167001000000000000000000000000000010099": { + "contractName": "RegularERC20", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000002710000", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x454340b1295f9ff1c0fb9192166d0215d33f84dc5f2dc3f3e5732a4b557186bf": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6a3bb1dada7c82a99b4a02d16da3fda07cb31d8887b9b99ec829ab67fd7a817e": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2fe2844d12634f5dce1e2be5be96b2ea1c573f8f25171997e2f4bd943dd32f92": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x3836a017087644fbf6925ae1aca14201ce898a35434d9dea9ebd03cea44e049a": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1c7a29f5a750951acb14fdf82a876085914eb17f15a162b054a3d2f8c92e2451": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x271927a243b678b7a071f19b4051ef93b16e397066e3fdef5bba26527e34a1a1": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x4663d660b5d810c9ab2f6dc64af7ff84ebae28a72342391622649a7fe87c93d4": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x352c3281a58937f04ef7cc7b88f3456b6ffd47f52a321c253dc083fb53a3a114": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6d5faa5f4e671e6fe47b0eab51c62f8cebf354e21e8fdccf8cdfc0293dd341a3": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x673de83553dc3a2c0f59aa7193de392a4530feb73b9d6cd4fcef68802b8195c1": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x8b6a7148182c39c1ca0b052292befa83d09344947c23e47b300314fa8c2b8f7d": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xed4a23b4a030ee0d64ef69b276dee81d493e5efca01c0fa514e0c38f882af152": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x45124dfaa1716b8d229f646ff926377e17b887c2b2eab6a87ab0348ee1689eac": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x40f9c2870c16301e8614e56453fc5b838c4a153eb0b18c4c050efbf4f786518a": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xbd55c9294669a294e0c8fd07e2c07738e95be0123b62b752d782fe317f25ca97": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x52c0eeeba21034a69ad7cfa70f75c6fd127acd4084a4da80f30cc7540bdf990b": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x843a9befd317bdcee99c42a3adf6d00b789224beda1485c7f6e7bf327755328e": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xea09b20615ffad342fb450741e59ea6ba180fa93b8701b31fa639ef9ff50d2b0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x39cd5e5ec54ce41a5f5b2c13ce7133998dfef654caacfb44d5c517700c217d36": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xd46a4409ebc9fc47afedecdadc89dbc0d6f46be6bdb49fd822d5143daedc83f0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x5735d6fad3ea4f2328a1557ff1be7570df3d4c2630b448c1b7fe2781d018beb0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x509c640066f1872118ec768fcb985c7bf4476690788ac7e112ab072ca82ab219": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xf9982658df503b792c55f860aefa42588712c9069523324d4b9ce4d9a10e2e9c": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x87d11160035f8424b7163a397fc780b278af3de5a6caa2cb71bb2b46825ce159": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1dde801acf032acf4b3151b5edb82e0e4d872a54d9efbf3809d75efcbfa2bf8f": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x01aad34cdf9f8f5fca811e2fab1411b08778be71f547894fa0d9fafa5c1f60b2": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x65cee0cf3d643c3f3402a40ddebed72cec3dd6bac66974bff967dc0ef9e2faed": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xaf6cadccd3f046eeb282ec0b08e44adbe45784a23f41d76b096ccb8e7f238e2b": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2589e1958c4e4f4a5f777b0b92a3170cc21771a8d3580331a71232f8624f7628": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1f27de92fedf410197c8a09d0f2f03372d92b75c9889a6a61cf491395877fbcf": "0x00000000000000000000000000000000000000000000000000000000000fa000" + }, + "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220afb53222eb165673ba5dfc3c8883c6d8b4942e876e8c5b0c567a03996e20a58864736f6c634300081b0033", + "balance": "0x0" + } +} \ No newline at end of file diff --git a/eth/api_backend.go b/eth/api_backend.go index 8a9898b956f3..02d05494b20c 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -44,10 +44,11 @@ import ( // EthAPIBackend implements ethapi.Backend and tracers.Backend for full nodes type EthAPIBackend struct { - extRPCEnabled bool - allowUnprotectedTxs bool - eth *Ethereum - gpo *gasprice.Oracle + extRPCEnabled bool + allowUnprotectedTxs bool + eth *Ethereum + gpo *gasprice.Oracle + preconfirmationForwardingURL string // CHANGE(taiko): add preconfirmation forwarding URL } // ChainConfig returns the active chain configuration. @@ -431,3 +432,8 @@ func (b *EthAPIBackend) StateAtBlock(ctx context.Context, block *types.Block, re func (b *EthAPIBackend) StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (*types.Transaction, vm.BlockContext, *state.StateDB, tracers.StateReleaseFunc, error) { return b.eth.stateAtTransaction(ctx, block, txIndex, reexec) } + +// GetPreconfirmationForwardingURL returns the URL to forward RPC requests before confirmation. +func (b *EthAPIBackend) GetPreconfirmationForwardingURL() string { + return b.preconfirmationForwardingURL +} diff --git a/eth/backend.go b/eth/backend.go index f10d99c3a70b..8dcbfe76280d 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -96,6 +96,8 @@ type Ethereum struct { lock sync.RWMutex // Protects the variadic fields (e.g. gas price and etherbase) shutdownTracker *shutdowncheck.ShutdownTracker // Tracks if and when the node has shutdown ungracefully + + PreconfirmationForwardingURL string // CHANGE(taiko): add preconfirmation forwarding URL } // New creates a new Ethereum object (including the initialisation of the common Ethereum object), @@ -254,7 +256,8 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) { eth.miner = miner.New(eth, config.Miner, eth.engine) eth.miner.SetExtra(makeExtraData(config.Miner.ExtraData)) - eth.APIBackend = &EthAPIBackend{stack.Config().ExtRPCEnabled(), stack.Config().AllowUnprotectedTxs, eth, nil} + // CHANGE(taiko): set up the pre-confirmation forwarding URL + eth.APIBackend = &EthAPIBackend{stack.Config().ExtRPCEnabled(), stack.Config().AllowUnprotectedTxs, eth, nil, config.PreconfirmationForwardingURL} if eth.APIBackend.allowUnprotectedTxs { log.Info("Unprotected transactions allowed") } diff --git a/eth/ethconfig/config.go b/eth/ethconfig/config.go index 1fd9b1cf37c0..12b1415dd1b6 100644 --- a/eth/ethconfig/config.go +++ b/eth/ethconfig/config.go @@ -157,6 +157,9 @@ type Config struct { // OverrideVerkle (TODO: remove after the fork) OverrideVerkle *uint64 `toml:",omitempty"` + + // CHANGE(taiko): add preconfirmation forwarding URL + PreconfirmationForwardingURL string } // CreateConsensusEngine creates a consensus engine for the given chain config. diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index a50295289340..4406a64d58eb 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -23,6 +23,7 @@ import ( "fmt" "maps" "math/big" + "strconv" "strings" "time" @@ -657,6 +658,22 @@ func (api *BlockChainAPI) ChainId() *hexutil.Big { // BlockNumber returns the block number of the chain head. func (api *BlockChainAPI) BlockNumber() hexutil.Uint64 { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding BlockNumber request", "forwardURL", forwardURL) + + // Forward the raw transaction to the specified URL + res, err := forward[string](forwardURL, "eth_blockNumber", nil) + + if err == nil && res != nil { + log.Info("Forwarded block number request", "forwardURL", forwardURL, "res", res) + i, _ := strconv.ParseUint(*res, 0, 64) + + log.Info("Parsed block number", "forwardURL", forwardURL, "number", hexutil.Uint64(i)) + return hexutil.Uint64(i) + } + } + header, _ := api.b.HeaderByNumber(context.Background(), rpc.LatestBlockNumber) // latest header should always be available return hexutil.Uint64(header.Number.Uint64()) } @@ -665,6 +682,37 @@ func (api *BlockChainAPI) BlockNumber() hexutil.Uint64 { // given block number. The rpc.LatestBlockNumber and rpc.PendingBlockNumber meta // block numbers are also allowed. func (api *BlockChainAPI) GetBalance(ctx context.Context, address common.Address, blockNrOrHash rpc.BlockNumberOrHash) (*hexutil.Big, error) { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + if blockNr, ok := blockNrOrHash.Number(); ok { + log.Info( + "Forwarding GetBalance request", + "forwardURL", forwardURL, + "address", address.Hex(), + "blockNr", blockNr.String(), + ) + + bal, err := forward[string](forwardURL, "eth_getBalance", []interface{}{address.Hex(), blockNr.String()}) + if err == nil && bal != nil { + return (*hexutil.Big)(hexutil.MustDecodeBig(*bal)), nil + } + } + + if blockHash, ok := blockNrOrHash.Hash(); ok { + log.Info( + "Forwarding GetBalance request", + "forwardURL", forwardURL, + "address", address.Hex(), + "blockHash", blockHash.Hex(), + ) + + bal, err := forward[string](forwardURL, "eth_getBalance", []interface{}{address.Hex(), blockHash.Hex()}) + if err == nil && bal != nil { + return (*hexutil.Big)(hexutil.MustDecodeBig(*bal)), nil + } + } + } + state, _, err := api.b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash) if state == nil || err != nil { return nil, err @@ -845,7 +893,17 @@ func (api *BlockChainAPI) GetBlockByNumber(ctx context.Context, number rpc.Block response[field] = nil } } - return response, nil + return response, err + } else { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding GetBlockByNumber", "forwardURL", forwardURL, "number", number.Int64(), "numberStr", number.String()) + // Forward the raw transaction to the specified URL. + b, err := forward[map[string]interface{}](forwardURL, "eth_getBlockByNumber", []interface{}{number.String(), fullTx}) + if err == nil && b != nil { + return *b, nil + } + } } return nil, err } @@ -856,6 +914,15 @@ func (api *BlockChainAPI) GetBlockByHash(ctx context.Context, hash common.Hash, block, err := api.b.BlockByHash(ctx, hash) if block != nil { return RPCMarshalBlock(block, true, fullTx, api.b.ChainConfig()), nil + } else { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding GetBlockByHash", "forwardURL", forwardURL, "hash", hash.Hex()) + m, err := forward[map[string]interface{}](forwardURL, "eth_getBlockByHash", []interface{}{hash.Hex(), fullTx}) + if err == nil && m != nil { + return *m, nil + } + } } return nil, err } @@ -1750,6 +1817,24 @@ func (api *TransactionAPI) GetRawTransactionByBlockHashAndIndex(ctx context.Cont // GetTransactionCount returns the number of transactions the given address has sent for the given block number func (api *TransactionAPI) GetTransactionCount(ctx context.Context, address common.Address, blockNrOrHash rpc.BlockNumberOrHash) (*hexutil.Uint64, error) { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding GetTransactionCount request", "forwardURL", forwardURL, "address", address.Hex()) + + if blockNr, ok := blockNrOrHash.Number(); ok { + txCount, err := forward[hexutil.Uint64](forwardURL, "eth_getTransactionCount", []interface{}{address.Hex(), blockNr.String()}) + if err == nil && txCount != nil { + return txCount, nil + } + } + + if blockHash, ok := blockNrOrHash.Hash(); ok { + txCount, err := forward[hexutil.Uint64](forwardURL, "eth_getTransactionCount", []interface{}{address.Hex(), blockHash.Hex()}) + if err == nil && txCount != nil { + return txCount, nil + } + } + } // Ask transaction pool for the nonce which includes pending transactions if blockNr, ok := blockNrOrHash.Number(); ok && blockNr == rpc.PendingBlockNumber { nonce, err := api.b.GetPoolNonce(ctx, address) @@ -1807,9 +1892,28 @@ func (api *TransactionAPI) GetRawTransactionByHash(ctx context.Context, hash com // GetTransactionReceipt returns the transaction receipt for the given transaction hash. func (api *TransactionAPI) GetTransactionReceipt(ctx context.Context, hash common.Hash) (map[string]interface{}, error) { found, tx, blockHash, blockNumber, index, err := api.b.GetTransaction(ctx, hash) - if err != nil { - return nil, NewTxIndexingError() // transaction is not fully indexed + if api.b.GetPreconfirmationForwardingURL() == "" { + if err != nil { + return nil, NewTxIndexingError() // transaction is not fully indexed + } + } else { + if err != nil || !found { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding GetTransactionReceipt request", "forwardURL", forwardURL, "hash", hash.Hex()) + // Forward the raw transaction to the specified URL + m, err := forward[map[string]interface{}](forwardURL, "eth_getTransactionReceipt", []interface{}{hash.Hex()}) + if err == nil && m != nil { + return *m, err + } + } + + if err != nil { + return nil, NewTxIndexingError() // transaction is not fully indexed + } + } } + if !found { return nil, nil // transaction is not existent or reachable } @@ -1974,6 +2078,18 @@ func (api *TransactionAPI) FillTransaction(ctx context.Context, args Transaction // SendRawTransaction will add the signed transaction to the transaction pool. // The sender is responsible for signing the transaction and using the correct nonce. func (api *TransactionAPI) SendRawTransaction(ctx context.Context, input hexutil.Bytes) (common.Hash, error) { + // CHANGE(taiko): Forward the request to the preconf node if specified. + if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { + log.Info("Forwarding SendRawTransaction request", "forwardURL", forwardURL) + // Forward the raw transaction to the specified URL + h, err := forward[string](forwardURL, "eth_sendRawTransaction", []interface{}{input.String()}) + if err == nil && h != nil { + return common.HexToHash(*h), nil + } else { + return common.Hash{}, err + } + } + tx := new(types.Transaction) if err := tx.UnmarshalBinary(input); err != nil { return common.Hash{}, err diff --git a/internal/ethapi/api_test.go b/internal/ethapi/api_test.go index 384ca9f1cc73..6f2c00dba7d1 100644 --- a/internal/ethapi/api_test.go +++ b/internal/ethapi/api_test.go @@ -3400,3 +3400,8 @@ func testRPCResponseWithFile(t *testing.T, testid int, result interface{}, rpc s func addressToHash(a common.Address) common.Hash { return common.BytesToHash(a.Bytes()) } + +// CHANGE(taiko): add preconfirmation forwarding URL +func (b testBackend) GetPreconfirmationForwardingURL() string { + return "" +} diff --git a/internal/ethapi/backend.go b/internal/ethapi/backend.go index 0e991592b4b3..4e2a9b0cadcb 100644 --- a/internal/ethapi/backend.go +++ b/internal/ethapi/backend.go @@ -96,6 +96,9 @@ type Backend interface { SubscribeLogsEvent(ch chan<- []*types.Log) event.Subscription BloomStatus() (uint64, uint64) ServiceFilter(ctx context.Context, session *bloombits.MatcherSession) + + // CHANGE(taiko): add preconfirmation forwarding URL + GetPreconfirmationForwardingURL() string } func GetAPIs(apiBackend Backend) []rpc.API { diff --git a/internal/ethapi/taiko_preconf.go b/internal/ethapi/taiko_preconf.go new file mode 100644 index 000000000000..2fc9797fb402 --- /dev/null +++ b/internal/ethapi/taiko_preconf.go @@ -0,0 +1,94 @@ +package ethapi + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + + "github.com/ethereum/go-ethereum/log" +) + +type rpcRequest struct { + Jsonrpc string `json:"jsonrpc"` + Method string `json:"method"` + Params []interface{} `json:"params"` + ID int `json:"id"` +} + +type rpcResponse struct { + Jsonrpc string `json:"jsonrpc"` + ID int `json:"id"` + Result *json.RawMessage `json:"result"` + Error *struct { + Code int `json:"code"` + Message string `json:"message"` + Data string `json:"data"` + } `json:"error,omitempty"` +} + +func forward[T any](forwardURL string, method string, params []interface{}) (*T, error) { + rpcReq := rpcRequest{ + Jsonrpc: "2.0", + Method: method, + Params: params, + ID: 1, + } + + jsonData, err := json.Marshal(rpcReq) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", forwardURL, bytes.NewBuffer(jsonData)) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/json") + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to forward transaction, status code: %d", resp.StatusCode) + } + + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + var rpcResp rpcResponse + + // Unmarshal the response into the struct + if err := json.Unmarshal(body, &rpcResp); err != nil { + return nil, err + } + + // Check for errors in the response + if rpcResp.Error != nil { + err := fmt.Errorf("RPC error %d: %s", rpcResp.Error.Code, rpcResp.Error.Message) + + log.Error("forwarded request error", "err", err, "method", method, "params", params) + + return nil, fmt.Errorf("RPC error %d: %s", rpcResp.Error.Code, rpcResp.Error.Message) + } + + if rpcResp.Result == nil { + log.Info("forwarded request result is nil", "method", method) + return nil, nil + } + + // Unmarshal the Result into the desired type + var result T + if err := json.Unmarshal(*rpcResp.Result, &result); err != nil { + return nil, err + } + + return &result, nil +} diff --git a/internal/ethapi/transaction_args_test.go b/internal/ethapi/transaction_args_test.go index 531782817328..39787509fa42 100644 --- a/internal/ethapi/transaction_args_test.go +++ b/internal/ethapi/transaction_args_test.go @@ -405,3 +405,8 @@ func (b *backendMock) SubscribeRemovedLogsEvent(ch chan<- core.RemovedLogsEvent) } func (b *backendMock) Engine() consensus.Engine { return nil } + +// CHANGE(taiko): add preconfirmation forwarding URL +func (b *backendMock) GetPreconfirmationForwardingURL() string { + return "" +} diff --git a/internal/flags/categories.go b/internal/flags/categories.go index d426add55b10..1e54028c0e0c 100644 --- a/internal/flags/categories.go +++ b/internal/flags/categories.go @@ -37,6 +37,8 @@ const ( MiscCategory = "MISC" TestingCategory = "TESTING" DeprecatedCategory = "ALIASED (deprecated)" + // CHANGE(taiko): Add a new flag category for Taiko network + TaikoCategory = "TAIKO" ) func init() { diff --git a/params/config.go b/params/config.go index 6397c24a3993..fd4c34bce596 100644 --- a/params/config.go +++ b/params/config.go @@ -300,6 +300,7 @@ var NetworkNames = map[string]string{ JolnirNetworkID.String(): "Taiko Alpha-5 L2 (Jolnir)", KatlaNetworkID.String(): "Taiko Alpha-6 L2 (Katla)", HeklaNetworkID.String(): "Taiko Alpha-7 L2 (Hekla)", + PreconfDevnetNetworkID.String(): "Taiko Preconfirmation Devnet", } // ChainConfig is the core config which determines the blockchain settings. diff --git a/params/taiko_config.go b/params/taiko_config.go index 6908471d81b0..6888e0bb510b 100644 --- a/params/taiko_config.go +++ b/params/taiko_config.go @@ -20,6 +20,7 @@ var ( JolnirNetworkID = big.NewInt(167007) KatlaNetworkID = big.NewInt(167008) HeklaNetworkID = big.NewInt(167009) + PreconfDevnetNetworkID = big.NewInt(167010) ) var networkIDToChainConfig = map[*big.Int]*ChainConfig{ @@ -33,6 +34,7 @@ var networkIDToChainConfig = map[*big.Int]*ChainConfig{ JolnirNetworkID: TaikoChainConfig, KatlaNetworkID: TaikoChainConfig, HeklaNetworkID: TaikoChainConfig, + PreconfDevnetNetworkID: TaikoChainConfig, MainnetChainConfig.ChainID: MainnetChainConfig, SepoliaChainConfig.ChainID: SepoliaChainConfig, TestChainConfig.ChainID: TestChainConfig, From 2d3d130808db757c7d351ff922813d387a61ab38 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Nov 2024 15:31:01 +0800 Subject: [PATCH 12/30] Update eth/catalyst/api.go Co-authored-by: maskpp --- eth/catalyst/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 1b6f38f3e582..96080e9ddc8d 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -450,7 +450,7 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl if payloadAttributes.L1Origin == nil { return valid(nil), engine.InvalidPayloadAttributes.With(errors.New("L1Origin is nil")) } - // If its not a softblock creation request, then `L1BlockHash` and `L1BlockHeight` are required. + // If it's not a softblock creation request, then `L1BlockHash` and `L1BlockHeight` are required. if payloadAttributes.L1Origin.BatchID == nil && (payloadAttributes.L1Origin.L1BlockHash == (common.Hash{}) || payloadAttributes.L1Origin.L1BlockHeight == nil) { From e8dccf2cd7b49af834c9d6c6ab9370aa2c9ca9d8 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 5 Nov 2024 20:45:24 +0800 Subject: [PATCH 13/30] Update internal/ethapi/taiko_preconf.go Co-authored-by: maskpp --- internal/ethapi/taiko_preconf.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/ethapi/taiko_preconf.go b/internal/ethapi/taiko_preconf.go index 2fc9797fb402..e99cd9a40beb 100644 --- a/internal/ethapi/taiko_preconf.go +++ b/internal/ethapi/taiko_preconf.go @@ -80,7 +80,7 @@ func forward[T any](forwardURL string, method string, params []interface{}) (*T, } if rpcResp.Result == nil { - log.Info("forwarded request result is nil", "method", method) + log.Warn("forwarded request result is nil", "method", method) return nil, nil } From f1df584515b635ae8a3a2ec758d7b7656802f095 Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 6 Nov 2024 15:43:21 +0800 Subject: [PATCH 14/30] fix consensus test --- consensus/taiko/consensus.go | 25 ++++++---- consensus/taiko/consensus_test.go | 79 ++++++++++++++++--------------- 2 files changed, 56 insertions(+), 48 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 166c20361374..8f6a9b50e577 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -8,6 +8,7 @@ import ( "strings" "time" + "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/core/rawdb" @@ -126,16 +127,6 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type } func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error { - l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) - if err != nil { - return err - } - - // If the current block is not a soft block, then check the timestamp. - if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { - return consensus.ErrFutureBlock - } - // Ensure that the header's extra-data section is of a reasonable size (<= 32 bytes) if uint64(len(header.Extra)) > params.MaximumExtraDataSize { return fmt.Errorf("extra-data too long: %d > %d", len(header.Extra), params.MaximumExtraDataSize) @@ -181,6 +172,20 @@ func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error return ErrEmptyWithdrawalsHash } + l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) + if err != nil { + return err + } + + if l1Origin == nil { + return ethereum.NotFound + } + + // If the current block is not a soft block, then check the timestamp. + if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { + return consensus.ErrFutureBlock + } + return nil } diff --git a/consensus/taiko/consensus_test.go b/consensus/taiko/consensus_test.go index ba4785ff1d42..c9d92953a090 100644 --- a/consensus/taiko/consensus_test.go +++ b/consensus/taiko/consensus_test.go @@ -93,70 +93,73 @@ func init() { } } -func newTestBackend(t *testing.T) (*eth.Ethereum, []*types.Block) { - // Generate test chain. - blocks := generateTestChain() +func generateTestChain(t *testing.T) ([]*types.Block, *eth.Ethereum) { + generate := func(i int, g *core.BlockGen) { + g.OffsetTime(5) + + g.SetExtra([]byte("test_taiko")) + g.SetDifficulty(common.Big0) + + for i, tx := range txs { + if i == 0 { + if err := tx.MarkAsAnchor(); err != nil { + panic(err) + } + } + g.AddTx(tx) + } + } // Create node - n, err := node.New(&node.Config{}) + n, err := node.New(&node.Config{ + DataDir: t.TempDir(), + }) if err != nil { t.Fatalf("can't create new node: %v", err) } // Create Ethereum Service - config := ðconfig.Config{ + ethService, err := eth.New(n, ðconfig.Config{ Genesis: genesis, - } - - ethservice, err := eth.New(n, config) + }) if err != nil { t.Fatalf("can't create new ethereum service: %v", err) } + db := ethService.ChainDb() + + gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) + blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) + blocks = append([]*types.Block{gblock}, blocks...) + + // Insert L1Origins. + for _, block := range blocks { + rawdb.WriteL1Origin(db, block.Number(), &rawdb.L1Origin{ + BlockID: block.Number(), + L1BlockHeight: block.Number(), + L1BlockHash: block.Hash(), + }) + } + // Import the test chain. if err := n.Start(); err != nil { t.Fatalf("can't start test node: %v", err) } - if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { + if _, err := ethService.BlockChain().InsertChain(blocks[1:]); err != nil { t.Fatalf("can't import test blocks: %v", err) } - if _, ok := ethservice.Engine().(*taiko.Taiko); !ok { + if _, ok := ethService.Engine().(*taiko.Taiko); !ok { t.Fatalf("not use taiko engine") } - return ethservice, blocks -} - -func generateTestChain() []*types.Block { - db := rawdb.NewMemoryDatabase() - generate := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - - g.SetExtra([]byte("test_taiko")) - g.SetDifficulty(common.Big0) - - for i, tx := range txs { - if i == 0 { - if err := tx.MarkAsAnchor(); err != nil { - panic(err) - } - } - g.AddTx(tx) - } - } - - gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) - - blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) - - blocks = append([]*types.Block{gblock}, blocks...) - return blocks + return blocks, ethService } func TestVerifyHeader(t *testing.T) { - ethService, blocks := newTestBackend(t) + // Generate test chain. + blocks, ethService := generateTestChain(t) for _, b := range blocks { err := testEngine.VerifyHeader(ethService.BlockChain(), b.Header()) From 3f6b0f532bdaed726bba330aa57ae8bc4882496b Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 6 Nov 2024 16:20:20 +0800 Subject: [PATCH 15/30] revert commit f1df58 --- consensus/taiko/consensus.go | 25 ++++------ consensus/taiko/consensus_test.go | 79 +++++++++++++++---------------- 2 files changed, 48 insertions(+), 56 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 8f6a9b50e577..166c20361374 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -8,7 +8,6 @@ import ( "strings" "time" - "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/core/rawdb" @@ -127,6 +126,16 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type } func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error { + l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) + if err != nil { + return err + } + + // If the current block is not a soft block, then check the timestamp. + if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { + return consensus.ErrFutureBlock + } + // Ensure that the header's extra-data section is of a reasonable size (<= 32 bytes) if uint64(len(header.Extra)) > params.MaximumExtraDataSize { return fmt.Errorf("extra-data too long: %d > %d", len(header.Extra), params.MaximumExtraDataSize) @@ -172,20 +181,6 @@ func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error return ErrEmptyWithdrawalsHash } - l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) - if err != nil { - return err - } - - if l1Origin == nil { - return ethereum.NotFound - } - - // If the current block is not a soft block, then check the timestamp. - if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { - return consensus.ErrFutureBlock - } - return nil } diff --git a/consensus/taiko/consensus_test.go b/consensus/taiko/consensus_test.go index c9d92953a090..ba4785ff1d42 100644 --- a/consensus/taiko/consensus_test.go +++ b/consensus/taiko/consensus_test.go @@ -93,52 +93,24 @@ func init() { } } -func generateTestChain(t *testing.T) ([]*types.Block, *eth.Ethereum) { - generate := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - - g.SetExtra([]byte("test_taiko")) - g.SetDifficulty(common.Big0) - - for i, tx := range txs { - if i == 0 { - if err := tx.MarkAsAnchor(); err != nil { - panic(err) - } - } - g.AddTx(tx) - } - } +func newTestBackend(t *testing.T) (*eth.Ethereum, []*types.Block) { + // Generate test chain. + blocks := generateTestChain() // Create node - n, err := node.New(&node.Config{ - DataDir: t.TempDir(), - }) + n, err := node.New(&node.Config{}) if err != nil { t.Fatalf("can't create new node: %v", err) } // Create Ethereum Service - ethService, err := eth.New(n, ðconfig.Config{ + config := ðconfig.Config{ Genesis: genesis, - }) - if err != nil { - t.Fatalf("can't create new ethereum service: %v", err) } - db := ethService.ChainDb() - - gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) - blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) - blocks = append([]*types.Block{gblock}, blocks...) - - // Insert L1Origins. - for _, block := range blocks { - rawdb.WriteL1Origin(db, block.Number(), &rawdb.L1Origin{ - BlockID: block.Number(), - L1BlockHeight: block.Number(), - L1BlockHash: block.Hash(), - }) + ethservice, err := eth.New(n, config) + if err != nil { + t.Fatalf("can't create new ethereum service: %v", err) } // Import the test chain. @@ -146,20 +118,45 @@ func generateTestChain(t *testing.T) ([]*types.Block, *eth.Ethereum) { t.Fatalf("can't start test node: %v", err) } - if _, err := ethService.BlockChain().InsertChain(blocks[1:]); err != nil { + if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { t.Fatalf("can't import test blocks: %v", err) } - if _, ok := ethService.Engine().(*taiko.Taiko); !ok { + if _, ok := ethservice.Engine().(*taiko.Taiko); !ok { t.Fatalf("not use taiko engine") } - return blocks, ethService + return ethservice, blocks +} + +func generateTestChain() []*types.Block { + db := rawdb.NewMemoryDatabase() + generate := func(i int, g *core.BlockGen) { + g.OffsetTime(5) + + g.SetExtra([]byte("test_taiko")) + g.SetDifficulty(common.Big0) + + for i, tx := range txs { + if i == 0 { + if err := tx.MarkAsAnchor(); err != nil { + panic(err) + } + } + g.AddTx(tx) + } + } + + gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) + + blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) + + blocks = append([]*types.Block{gblock}, blocks...) + return blocks } func TestVerifyHeader(t *testing.T) { - // Generate test chain. - blocks, ethService := generateTestChain(t) + ethService, blocks := newTestBackend(t) for _, b := range blocks { err := testEngine.VerifyHeader(ethService.BlockChain(), b.Header()) From e692d347341dfaf5d5cb5713b36fc7f7e458b35d Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 6 Nov 2024 16:27:13 +0800 Subject: [PATCH 16/30] fix consensus test (#349) --- consensus/taiko/consensus.go | 20 ++++---- consensus/taiko/consensus_test.go | 79 ++++++++++++++++--------------- 2 files changed, 51 insertions(+), 48 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index 166c20361374..b2a38faef85e 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -126,16 +126,6 @@ func (t *Taiko) VerifyHeaders(chain consensus.ChainHeaderReader, headers []*type } func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error { - l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) - if err != nil { - return err - } - - // If the current block is not a soft block, then check the timestamp. - if !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { - return consensus.ErrFutureBlock - } - // Ensure that the header's extra-data section is of a reasonable size (<= 32 bytes) if uint64(len(header.Extra)) > params.MaximumExtraDataSize { return fmt.Errorf("extra-data too long: %d > %d", len(header.Extra), params.MaximumExtraDataSize) @@ -181,6 +171,16 @@ func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error return ErrEmptyWithdrawalsHash } + l1Origin, err := rawdb.ReadL1Origin(t.chainDB, header.Number) + if err != nil { + return err + } + + // If the current block is not a soft block, then check the timestamp. + if l1Origin != nil && !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { + return consensus.ErrFutureBlock + } + return nil } diff --git a/consensus/taiko/consensus_test.go b/consensus/taiko/consensus_test.go index ba4785ff1d42..c9d92953a090 100644 --- a/consensus/taiko/consensus_test.go +++ b/consensus/taiko/consensus_test.go @@ -93,70 +93,73 @@ func init() { } } -func newTestBackend(t *testing.T) (*eth.Ethereum, []*types.Block) { - // Generate test chain. - blocks := generateTestChain() +func generateTestChain(t *testing.T) ([]*types.Block, *eth.Ethereum) { + generate := func(i int, g *core.BlockGen) { + g.OffsetTime(5) + + g.SetExtra([]byte("test_taiko")) + g.SetDifficulty(common.Big0) + + for i, tx := range txs { + if i == 0 { + if err := tx.MarkAsAnchor(); err != nil { + panic(err) + } + } + g.AddTx(tx) + } + } // Create node - n, err := node.New(&node.Config{}) + n, err := node.New(&node.Config{ + DataDir: t.TempDir(), + }) if err != nil { t.Fatalf("can't create new node: %v", err) } // Create Ethereum Service - config := ðconfig.Config{ + ethService, err := eth.New(n, ðconfig.Config{ Genesis: genesis, - } - - ethservice, err := eth.New(n, config) + }) if err != nil { t.Fatalf("can't create new ethereum service: %v", err) } + db := ethService.ChainDb() + + gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) + blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) + blocks = append([]*types.Block{gblock}, blocks...) + + // Insert L1Origins. + for _, block := range blocks { + rawdb.WriteL1Origin(db, block.Number(), &rawdb.L1Origin{ + BlockID: block.Number(), + L1BlockHeight: block.Number(), + L1BlockHash: block.Hash(), + }) + } + // Import the test chain. if err := n.Start(); err != nil { t.Fatalf("can't start test node: %v", err) } - if _, err := ethservice.BlockChain().InsertChain(blocks[1:]); err != nil { + if _, err := ethService.BlockChain().InsertChain(blocks[1:]); err != nil { t.Fatalf("can't import test blocks: %v", err) } - if _, ok := ethservice.Engine().(*taiko.Taiko); !ok { + if _, ok := ethService.Engine().(*taiko.Taiko); !ok { t.Fatalf("not use taiko engine") } - return ethservice, blocks -} - -func generateTestChain() []*types.Block { - db := rawdb.NewMemoryDatabase() - generate := func(i int, g *core.BlockGen) { - g.OffsetTime(5) - - g.SetExtra([]byte("test_taiko")) - g.SetDifficulty(common.Big0) - - for i, tx := range txs { - if i == 0 { - if err := tx.MarkAsAnchor(); err != nil { - panic(err) - } - } - g.AddTx(tx) - } - } - - gblock := genesis.MustCommit(db, triedb.NewDatabase(db, triedb.HashDefaults)) - - blocks, _ := core.GenerateChain(genesis.Config, gblock, testEngine, db, 1, generate) - - blocks = append([]*types.Block{gblock}, blocks...) - return blocks + return blocks, ethService } func TestVerifyHeader(t *testing.T) { - ethService, blocks := newTestBackend(t) + // Generate test chain. + blocks, ethService := generateTestChain(t) for _, b := range blocks { err := testEngine.VerifyHeader(ethService.BlockChain(), b.Header()) From 11e6061f35b7f71639768019bd56069782e6ecc6 Mon Sep 17 00:00:00 2001 From: David Date: Wed, 6 Nov 2024 16:35:55 +0800 Subject: [PATCH 17/30] Update eth/catalyst/api.go Co-authored-by: maskpp --- eth/catalyst/api.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 96080e9ddc8d..07ba69217437 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -499,7 +499,7 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl // Write L1Origin. rawdb.WriteL1Origin(api.eth.ChainDb(), l1Origin.BlockID, l1Origin) - // Write the head L1Origin, only when its not a soft block. + // Write the head L1Origin, only when it's not a soft block. if l1Origin.BatchID == nil { rawdb.WriteHeadL1Origin(api.eth.ChainDb(), l1Origin.BlockID) } From 185e4c31209fc707aa36aebb5d87cbaaa433db4d Mon Sep 17 00:00:00 2001 From: David Date: Wed, 6 Nov 2024 16:58:57 +0800 Subject: [PATCH 18/30] feat: add back timestamp check in worker --- miner/worker.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/miner/worker.go b/miner/worker.go index bc1f27e2e221..434f698370dc 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -165,6 +165,10 @@ func (miner *Miner) prepareWork(genParams *generateParams, witness bool) (*envir return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) } timestamp = parent.Time + 1 + } else { + if parent.Time > timestamp { + return nil, fmt.Errorf("invalid timestamp, parent %d given %d", parent.Time, timestamp) + } } } // Construct the sealing block header. From cf0c053534d8f27e69e260814f6da4dc2bd184aa Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Wed, 6 Nov 2024 10:42:27 -0800 Subject: [PATCH 19/30] add genesis --- core/taiko_genesis/preconf_devnet.json | 340 +++++++------------------ 1 file changed, 94 insertions(+), 246 deletions(-) diff --git a/core/taiko_genesis/preconf_devnet.json b/core/taiko_genesis/preconf_devnet.json index 24759cb84a54..d2a81cde704f 100644 --- a/core/taiko_genesis/preconf_devnet.json +++ b/core/taiko_genesis/preconf_devnet.json @@ -1,369 +1,217 @@ { - "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { - "balance": "0x3782dace9d90000000" + "0x91c34396e640e3bB4eE80f2e523c23dDa2b3f78F": { + "balance": "0x3635c9adc5dea00000" }, - "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { - "balance": "0x3782dace9d90000000" + "0x79fcdef22feed20eddacbb2587640e45491b757f": { + "balance": "0x3635c9adc5dea00000" }, - "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { - "balance": "0x3782dace9d90000000" - }, - "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { - "balance": "0x3782dace9d90000000" - }, - "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { - "balance": "0x3782dace9d90000000" - }, - "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { - "balance": "0x3782dace9d90000000" - }, - "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { - "balance": "0x3782dace9d90000000" - }, - "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { - "balance": "0x3782dace9d90000000" - }, - "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { - "balance": "0x3782dace9d90000000" - }, - "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { - "balance": "0x3782dace9d90000000" - }, - "0xBcd4042DE499D14e55001CcbB24a551F3b954096": { - "balance": "0x3782dace9d90000000" - }, - "0x71bE63f3384f5fb98995898A86B02Fb2426c5788": { - "balance": "0x3782dace9d90000000" - }, - "0xFABB0ac9d68B0B445fB7357272Ff202C5651694a": { - "balance": "0x3782dace9d90000000" - }, - "0x1CBd3b2770909D4e10f157cABC84C7264073C9Ec": { - "balance": "0x3782dace9d90000000" - }, - "0xdF3e18d64BC6A983f673Ab319CCaE4f1a57C7097": { - "balance": "0x3782dace9d90000000" - }, - "0xcd3B766CCDd6AE721141F452C550Ca635964ce71": { - "balance": "0x3782dace9d90000000" - }, - "0x2546BcD3c84621e976D8185a91A922aE77ECEc30": { - "balance": "0x3782dace9d90000000" - }, - "0xbDA5747bFD65F08deb54cb465eB87D40e51B197E": { - "balance": "0x3782dace9d90000000" - }, - "0xdD2FD4581271e230360230F9337D5c0430Bf44C0": { - "balance": "0x3782dace9d90000000" - }, - "0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199": { - "balance": "0x3782dace9d90000000" - }, - "0x7D86687F980A56b832e9378952B738b614A99dc6": { - "balance": "0x3782dace9d90000000" - }, - "0x11e8F3eA3C6FcF12EcfF2722d75CEFC539c51a1C": { - "balance": "0x3782dace9d90000000" - }, - "0x9eAF5590f2c84912A08de97FA28d0529361Deb9E": { - "balance": "0x3782dace9d90000000" - }, - "0x1003ff39d25F2Ab16dBCc18EcE05a9B6154f65F4": { - "balance": "0x3782dace9d90000000" - }, - "0x4779d18931B35540F84b0cd0e9633855B84df7b8": { - "balance": "0x3782dace9d90000000" - }, - "0x1c87Bb9234aeC6aDc580EaE6C8B59558A4502220": { - "balance": "0x3782dace9d90000000" - }, - "0x0d803cdeEe5990f22C2a8DF10A695D2312dA26CC": { - "balance": "0x3782dace9d90000000" - }, - "0xAb707cb80e7de7C75d815B1A653433F3EEc44c74": { - "balance": "0x3782dace9d90000000" - }, - "0xe8B1ff302A740fD2C6e76B620d45508dAEc2DDFf": { - "balance": "0x3782dace9d90000000" - }, - "0xa0EC9eE47802CeB56eb58ce80F3E41630B771b04": { - "balance": "0x3782dace9d90000000" - }, - "0x042a63149117602129B6922ecFe3111168C2C323": { - "balance": "0x3782dace9d90000000" - }, - "0xA1196426b41627ae75Ea7f7409E074BE97367da2": { - "balance": "0x3782dace9d90000000" - }, - "0xE74cEf90b6CF1a77FEfAd731713e6f53e575C183": { - "balance": "0x3782dace9d90000000" - }, - "0x7Df8Efa6d6F1CB5C4f36315e0AcB82b02Ae8BA40": { - "balance": "0x3782dace9d90000000" - }, - "0x9E126C57330FA71556628e0aabd6B6B6783d99fA": { - "balance": "0x3782dace9d90000000" - }, - "0xcBDc0F9a4C38f1e010bD3B6e43598A55D1868c23": { - "balance": "0x3782dace9d90000000" - }, - "0xBc5BdceE96b1BC47822C74e6f64186fbA7d686be": { - "balance": "0x3782dace9d90000000" - }, - "0x0536896a5e38BbD59F3F369FF3682677965aBD19": { - "balance": "0x3782dace9d90000000" - }, - "0xFE0f143FcAD5B561b1eD2AC960278A2F23559Ef9": { - "balance": "0x3782dace9d90000000" - }, - "0x98D08079928FcCB30598c6C6382ABfd7dbFaA1cD": { - "balance": "0x3782dace9d90000000" - }, - "0x0167001000000000000000000000000000000006": { + "0x0167010000000000000000000000000000000006": { "contractName": "SharedAddressManagerImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000006161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000061630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670100000000000000000000000000000000066001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000061630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670100000000000000000000000000000000066001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000616146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000006": { + "0x1670100000000000000000000000000000000006": { "contractName": "SharedAddressManager", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", - "0x874594376407a7a3ecea7d4704f3d74c6c46d5ebede74ed82e228810d8de14e8": "0x0000000000000000000000001670010000000000000000000000000000000002", - "0x2723bcf67bd1580da6815ff7d2e86d877ad3a715975e5ec695c979712859d633": "0x0000000000000000000000001670010000000000000000000000000000000003", - "0x0b9331c6e6848711b59bebda4cb38292225176ce8cfca5d6019d5b562dc3ed9e": "0x0000000000000000000000001670010000000000000000000000000000000004", - "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", - "0xfe44fe816c0baa33783639d99e595cb6de463e186ec113aaed043e42d2c4e279": "0x0000000000000000000000000167001000000000000000000000000000010096", - "0xd2d6c2a7f8afdb0440c97960518d1f1133dc92587d9c6884dbaff6290e06319c": "0x0000000000000000000000000167001000000000000000000000000000010097", - "0x6db8284aa664f2ba76ffc7a2219f82b728ba258e79df0e93d3eb45b5cb231a69": "0x0000000000000000000000000167001000000000000000000000000000010098", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000006" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0xe5868eccbe729200743507b6a76ef4952ff4776d6f6e681ea64d7940675418c0": "0x0000000000000000000000001670100000000000000000000000000000000001", + "0xac615b65b35c3ba4f3c515a78b7c7087cf20a185f9b50892a5aee8f38a94a2a3": "0x0000000000000000000000001670100000000000000000000000000000000002", + "0x14cb34ed2e94c2835324f4eb54fd6848cf7921d0bf9f4fb32c4024aa57aa1984": "0x0000000000000000000000001670100000000000000000000000000000000003", + "0xb2033e35b11225145ffd6e0525438c45f3904a68265a4ffbb67d58cb05a01cc5": "0x0000000000000000000000001670100000000000000000000000000000000004", + "0x84e8aac80b10d1364654096d750848d40210c937caf853cdc47e8784ad6cf9d5": "0x0000000000000000000000001670100000000000000000000000000000000005", + "0x9a06f3c0b2f5a00a447c9f6319a508edf25cf66bc3f3c78f4ae49dd92666d942": "0x0000000000000000000000000167010000000000000000000000000000010096", + "0x9f59effaee3d6269d0c2edb48468d6b7b24b0d51e8dbf63ea89d415b3ba3c4c3": "0x0000000000000000000000000167010000000000000000000000000000010097", + "0xd2c72e61a4567b7f7a7370a9e5ee40577297986a376fbdb74245f5bd58472e83": "0x0000000000000000000000000167010000000000000000000000000000010098", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000006" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000000001": { + "0x0167010000000000000000000000000000000001": { "contractName": "BridgeImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a2578063eefbf17e146106bf578063f09a4016146106e5578063f2fde38b14610704575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f9c565b610723565b005b34801561024d575f5ffd5b50610240610a21565b610269610264366004612fea565b610ad8565b604051610277929190613176565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461318e565b610e8e565b60405161027792919061324b565b3480156102b8575f5ffd5b506102c161134e565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb36600461329a565b611366565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b506103556103413660046132b5565b60fc6020525f908152604090205460ff1681565b60405161027791906132cc565b34801561036d575f5ffd5b5061030f61037c3660046132f0565b61142d565b34801561038c575f5ffd5b50610240611443565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c73660046133f3565b611457565b3480156103d7575f5ffd5b506103ab611510565b3480156103eb575f5ffd5b506102c16103fa36600461318e565b6115c2565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612fea565b61162d565b348015610449575f5ffd5b506102406116fb565b34801561045d575f5ffd5b5061024061170c565b348015610471575f5ffd5b506104856104803660046132b5565b611783565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b436600461329a565b6117a1565b3480156104c4575f5ffd5b50610240611821565b3480156104d8575f5ffd5b5061030f611834565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d61051836600461343f565b611842565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612fea565b61186e565b348015610566575f5ffd5b5061024061057536600461318e565b611a5d565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa366004613458565b611d61565b3480156105ba575f5ffd5b506102c16105c936600461318e565b611d6d565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe36600461357b565b611dce565b34801561060e575f5ffd5b50610617611dfd565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab6106653660046132b5565b60031890565b348015610676575f5ffd5b5060c9546201000090046001600160401b03165b6040516001600160401b039091168152602001610277565b3480156106ad575f5ffd5b506065546001600160a01b031661030f565b3480156106ca575f5ffd5b5060fb5461068a90600160401b90046001600160401b031681565b3480156106f0575f5ffd5b506102406106ff3660046135ac565b611ea4565b34801561070f575f5ffd5b5061024061071e36600461329a565b611f6b565b61073360e0830160c0840161343f565b46816001600160401b03161461075c57604051631c6c777560e31b815260040160405180910390fd5b61076c60a084016080850161343f565b6001600160401b038116158061078a575046816001600160401b0316145b156107a857604051631c6c777560e31b815260040160405180910390fd5b6107bc60c954610100900460ff1660021490565b156107da5760405163bae6e2a960e01b815260040160405180910390fd5b60026107e860c95460ff1690565b60ff16036108095760405163dfc60d8560e01b815260040160405180910390fd5b6108136002611fdc565b5f6108206105fe866135d8565b905061082d816001611ff2565b61083b856101200135612044565b610858576040516335856fbd60e21b815260040160405180910390fd5b5f61087d866108786d7369676e616c5f7365727669636560901b5f611d61565b6120e5565b156108c8576108c18661012001356188b860405180602001604052805f8152508960e00160208101906108b0919061329a565b6001600160a01b03169291906121dc565b9050610942565b6108d860608701604088016135e3565b63ffffffff1615806108e75750845b801561091557506108ff610100870160e0880161329a565b6001600160a01b0316336001600160a01b031614155b15610933576040516372b6e1c360e11b815260040160405180910390fd5b61093f86835a5f612219565b90505b80156109585761095382600261233d565b610a0f565b84156109f65761096982600361233d565b6109846d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f091906135fc565b50610a0f565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a1b6001611fdc565b50505050565b610a296123fa565b5f54600290610100900460ff16158015610a4957505f5460ff8083169116105b610a6e5760405162461bcd60e51b8152600401610a6590613613565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b3e60c0840160a0850161329a565b6001600160a01b038116610b655760405163538ba4f960e01b815260040160405180910390fd5b610b76610100850160e0860161329a565b6001600160a01b038116610b9d5760405163538ba4f960e01b815260040160405180910390fd5b610bad60e0860160c0870161343f565b6001600160401b0381161580610bcb575046816001600160401b0316145b15610be957604051631c6c777560e31b815260040160405180910390fd5b610bfd60c954610100900460ff1660021490565b15610c1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2960c95460ff1690565b60ff1603610c4a5760405163dfc60d8560e01b815260040160405180910390fd5b610c546002611fdc565b610c6460608701604088016135e3565b63ffffffff165f03610cac57610c80604087016020880161343f565b6001600160401b031615610ca75760405163c9f5178760e01b815260040160405180910390fd5b610cd4565b610cb586612454565b5f03610cd4576040516308c2ad5360e01b815260040160405180910390fd5b5f610ce861051860e0890160c08a0161343f565b50905080610d0957604051631c6c777560e31b815260040160405180910390fd5b34610d1a6040890160208a0161343f565b610d32906001600160401b03166101208a0135613675565b14610d5057604051634ac2abdf60e11b815260040160405180910390fd5b610d59876135d8565b60fb8054919650600160401b9091046001600160401b0316906008610d7d83613688565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610db885611dce565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610dea91906136b2565b60405180910390a2610e0d6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e3a91815260200190565b6020604051808303815f875af1158015610e56573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7a91906135fc565b5050610e866001611fdc565b505050915091565b5f5f610ea460c954610100900460ff1660021490565b15610ec25760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed060c95460ff1690565b60ff1603610ef15760405163dfc60d8560e01b815260040160405180910390fd5b610efb6002611fdc565b5f5a905046610f1060e0880160c0890161343f565b6001600160401b031614610f3757604051631c6c777560e31b815260040160405180910390fd5b610f4760a087016080880161343f565b6001600160401b03161580610f73575046610f6860a088016080890161343f565b6001600160401b0316145b15610f9157604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fc5610100880160e0890161329a565b6001600160a01b031633148015606083015261103457610feb60608801604089016135e3565b63ffffffff165f03611010576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103457604051631e3b03c960e01b815260040160405180910390fd5b5f6110416105fe896135d8565b905061104d815f611ff2565b5f6110696d7369676e616c5f7365727669636560901b5f611d61565b63ffffffff881660208501529050611093818361108c60a08d0160808e0161343f565b8b8b6124a7565b63ffffffff166040808501919091526110d2906110b5908b0160208c0161343f565b6110cd906001600160401b03166101208c0135613675565b612044565b6110ef576040516335856fbd60e21b815260040160405180910390fd5b5f6110fa8a836120e5565b156111135750600295506001945061012089013561115a565b5f8460600151611123575a61112c565b61112c8b612454565b905061113e8b85838860600151612219565b1561114f57600297505f9650611158565b60019750600296505b505b61116a60408b0160208c0161343f565b6001600160401b0316156112cb5761118860408b0160208c0161343f565b61119b906001600160401b031682613675565b9050836060015180156111c257506111b960608b0160408c016135e3565b63ffffffff1615155b156112cb57604084015163ffffffff16614e20025a6111ff6111e86101408e018e6136c4565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f9183916112289183919061255216565b0390505f61123c60608e0160408f016135e3565b63ffffffff168d6020016020810190611255919061343f565b6001600160401b031683028161126d5761126d61370d565b0490505f48830290505f6112b18f602001602081019061128d919061343f565b6001600160401b0316848410156112a95784840160011c6112ab565b845b90612567565b958690039590506112c533826188b861257b565b50505050505b6112f3816188b86112e36101008e0160e08f0161329a565b6001600160a01b0316919061257b565b6112fd838861233d565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b8660405161132f9291906138a5565b60405180910390a250505050506113466001611fdc565b935093915050565b5f600261135d60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113ae5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166113e06125be565b6001600160a01b0316146114065760405162461bcd60e51b8152600401610a6590613945565b61140f816125d9565b604080515f8082526020820190925261142a918391906125e1565b50565b5f61143984848461274b565b90505b9392505050565b61144b6127a7565b611455335f612837565b565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116300361149f5760405162461bcd60e51b8152600401610a65906138f9565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166114d16125be565b6001600160a01b0316146114f75760405162461bcd60e51b8152600401610a6590613945565b611500826125d9565b61150c828260016125e1565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146115af5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a65565b505f516020613b5f5f395f51905f525b90565b5f466115d460a086016080870161343f565b6001600160401b0316146115e957505f61143c565b6114396116076d7369676e616c5f7365727669636560901b5f611d61565b6116166106656105fe886135d8565b61162660e0880160c0890161343f565b86866128e4565b5f4661163f60a084016080850161343f565b6001600160401b03161461165457505f919050565b61166f6d7369676e616c5f7365727669636560901b5f611d61565b6001600160a01b03166332676bc63061168a6105fe866135d8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190613991565b92915050565b6117036123fa565b6114555f612966565b60655433906001600160a01b0316811461177a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a65565b61142a81612966565b5f6116f5620c35006101a06020601f8601819004020160041b6139ac565b806001600160a01b0381166117c95760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b158015611807575f5ffd5b505af1158015611819573d5f5f3e3d5ffd5b505050505050565b61182961297f565b611455336001612837565b5f61183d6125be565b905090565b5f5f611859836562726964676560d01b600161142d565b6001600160a01b038116151594909350915050565b61187e60e0820160c0830161343f565b46816001600160401b0316146118a757604051631c6c777560e31b815260040160405180910390fd5b6118b760a083016080840161343f565b6001600160401b03811615806118d5575046816001600160401b0316145b156118f357604051631c6c777560e31b815260040160405180910390fd5b61190760c954610100900460ff1660021490565b156119255760405163bae6e2a960e01b815260040160405180910390fd5b600261193360c95460ff1690565b60ff16036119545760405163dfc60d8560e01b815260040160405180910390fd5b61195e6002611fdc565b61196f610100840160e0850161329a565b6001600160a01b0316336001600160a01b0316146119a0576040516372b6e1c360e11b815260040160405180910390fd5b5f6119ad6105fe856135d8565b90506119ba816001611ff2565b6119c581600361233d565b6119e06d7369676e616c5f7365727669636560901b5f611d61565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a28573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c91906135fc565b5050611a586001611fdc565b505050565b611a6d60a084016080850161343f565b46816001600160401b031614611a9657604051631c6c777560e31b815260040160405180910390fd5b611aa660e0850160c0860161343f565b6001600160401b0381161580611ac4575046816001600160401b0316145b15611ae257604051631c6c777560e31b815260040160405180910390fd5b611af660c954610100900460ff1660021490565b15611b145760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2260c95460ff1690565b60ff1603611b435760405163dfc60d8560e01b815260040160405180910390fd5b611b4d6002611fdc565b5f611b5a6105fe876135d8565b9050611b66815f611ff2565b5f611b826d7369676e616c5f7365727669636560901b5f611d61565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf29190613991565b611c0f5760405163ab035ad560e01b815260040160405180910390fd5b611c2e8160038418611c2760e08b0160c08c0161343f565b89896124a7565b50611c3a82600461233d565b611c48876101200135612044565b611c65576040516335856fbd60e21b815260040160405180910390fd5b611c8e62bc399d60e11b611c7f60808a0160608b0161329a565b6001600160a01b0316906129f0565b15611d3257611cad8230611ca860a08b0160808c0161343f565b612ac0565b611cbd608088016060890161329a565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf09291906139c8565b5f604051808303818588803b158015611d07575f5ffd5b505af1158015611d19573d5f5f3e3d5ffd5b5050505050611d2d5f195f1b5f1980612ac0565b611d4e565b611d4e6101208801356188b86112e360c08b0160a08c0161329a565b5050611d5a6001611fdc565b5050505050565b5f61143c46848461274b565b5f46611d7f60e0860160c0870161343f565b6001600160401b031614611d9457505f61143c565b611439611db26d7369676e616c5f7365727669636560901b5f611d61565b611dbe6105fe876135d8565b61162660a088016080890161343f565b5f81604051602001611de091906139e9565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e74604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e86575080515f19145b156115bf57604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec257505f54600160ff909116105b80611edb5750303b158015611edb57505f5460ff166001145b611ef75760405162461bcd60e51b8152600401610a6590613613565b5f805460ff191660011790558015611f18575f805461ff0019166101001790555b611f228383612b15565b8015611a58575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f736123fa565b606580546001600160a01b0383166001600160a01b03199091168117909155611fa46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200457612004613223565b5f83815260fc602052604090205460ff16600481111561202657612026613223565b1461150c576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120616c38bab7ba30afb6b0b730b3b2b960991b6001611d61565b90506001600160a01b03811661207a5750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120bf575f5ffd5b505af19250505080156120d0575060015b6120dc57505f92915050565b50600192915050565b5f806120f96101208501610100860161329a565b6001600160a01b03160361210f575060016116f5565b306121226101208501610100860161329a565b6001600160a01b031603612138575060016116f5565b6001600160a01b0382166121546101208501610100860161329a565b6001600160a01b03160361216a575060016116f5565b600461217a6101408501856136c4565b9050101580156121b15750637f07c94760e01b61219b6101408501856136c4565b6121a491613a1f565b6001600160e01b03191614155b801561143c575061143c6121cd6101208501610100860161329a565b6001600160a01b03163b151590565b5f6001600160a01b03851661220457604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f3061222b608087016060880161329a565b6001600160a01b03160361224157612241613a57565b610120850135158015612261575061225d6101408601866136c4565b1590505b1561226e57506001612335565b825f0361227c57505f612335565b6122a084612290608088016060890161329a565b611ca860a0890160808a0161343f565b5f6122b36101208701610100880161329a565b90506101208601355f6122ca6101408901896136c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515612324576123248188612b4f565b6123305f198080612ac0565b505050505b949350505050565b80600481111561234f5761234f613223565b5f83815260fc602052604090205460ff16600481111561237157612371613223565b0361238f576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff191660018360048111156123b9576123b9613223565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123ee91906132cc565b60405180910390a25050565b6033546001600160a01b031633146114555760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a65565b5f8061246e6124676101408501856136c4565b9050611783565b63ffffffff1690508061249f61248a60608601604087016135e3565b63ffffffff168361255290919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124cc876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b81526004016124ef959493929190613a6b565b6020604051808303815f875af1925050508015612529575060408051601f3d908101601f19168201909252612526918101906135fc565b60015b612546576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f818311612560578161143c565b5090919050565b5f818311612575578261143c565b50919050565b815f0361258757505050565b6125a183838360405180602001604052805f8152506121dc565b611a5857604051634c67134d60e11b815260040160405180910390fd5b5f516020613b5f5f395f51905f52546001600160a01b031690565b61142a6123fa565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561261457611a5883612b63565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561266e575060408051601f3d908101601f1916820190925261266b918101906135fc565b60015b6126d15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a65565b5f516020613b5f5f395f51905f52811461273f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a65565b50611a58838383612bfe565b5f6127568484612c22565b9050818061276c57506001600160a01b03811615155b8484909161279e57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610a65565b50509392505050565b6127bb60c954610100900460ff1660021490565b6127d85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061287f575061286a6d636861696e5f7761746368646f6760901b6001611d61565b6001600160a01b0316826001600160a01b0316145b15612888575050565b8080156128c257506128ad6e6272696467655f7761746368646f6760881b6001611d61565b6001600160a01b0316826001600160a01b0316145b156128cb575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d082085612909876562726964676560d01b5f61142d565b8887876040518663ffffffff1660e01b815260040161292c959493929190613a6b565b5f6040518083038186803b158015612942575f5ffd5b505afa925050508015612953575060015b61295e57505f612549565b506001612549565b606580546001600160a01b031916905561142a81612cc4565b61299360c954610100900460ff1660021490565b156129b15760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161282d565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612a4c9190613aac565b5f60405180830381855afa9150503d805f8114612a84576040519150601f19603f3d011682016040523d82523d5f602084013e612a89565b606091505b5091509150818015612a9c575080516020145b15612ab85780806020019051810190612ab59190613991565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612b3d5760405163538ba4f960e01b815260040160405180910390fd5b612b4683612d15565b611a5882612d73565b612b5a603f82613ac7565b82101561150c57fe5b6001600160a01b0381163b612bd05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a65565b5f516020613b5f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612c0783612de3565b5f82511180612c135750805b15611a5857610a1b8383612e22565b6097545f906001600160a01b031680612c4e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612ca0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123359190613ae6565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612d3b5760405162461bcd60e51b8152600401610a6590613b01565b612d43612e47565b612d616001600160a01b03821615612d5b5781612966565b33612966565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d995760405162461bcd60e51b8152600401610a6590613b01565b6001600160401b03461115612dc15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612dec81612b63565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061143c8383604051806060016040528060278152602001613b7f60279139612e6d565b5f54610100900460ff166114555760405162461bcd60e51b8152600401610a6590613b01565b60605f5f856001600160a01b031685604051612e899190613aac565b5f60405180830381855af49150503d805f8114612ec1576040519150601f19603f3d011682016040523d82523d5f602084013e612ec6565b606091505b5091509150612ed786838387612ee1565b9695505050505050565b60608315612f4f5782515f03612f48576001600160a01b0385163b612f485760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a65565b5081612335565b6123358383815115612f645781518083602001fd5b8060405162461bcd60e51b8152600401610a659190613b4c565b5f6101608284031215612575575f5ffd5b801515811461142a575f5ffd5b5f5f60408385031215612fad575f5ffd5b82356001600160401b03811115612fc2575f5ffd5b612fce85828601612f7e565b9250506020830135612fdf81612f8f565b809150509250929050565b5f60208284031215612ffa575f5ffd5b81356001600160401b0381111561300f575f5ffd5b61233584828501612f7e565b5f5b8381101561303557818101518382015260200161301d565b50505f910152565b5f815180845261305481602086016020860161301b565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161309060208501826001600160401b03169052565b5060408201516130a8604085018263ffffffff169052565b5060608201516130c360608501826001600160a01b03169052565b5060808201516130de60808501826001600160401b03169052565b5060a08201516130f960a08501826001600160a01b03169052565b5060c082015161311460c08501826001600160401b03169052565b5060e082015161312f60e08501826001600160a01b03169052565b5061010082015161314c6101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261233561016085018261303d565b828152604060208201525f6114396040830184613068565b5f5f5f604084860312156131a0575f5ffd5b83356001600160401b038111156131b5575f5ffd5b6131c186828701612f7e565b93505060208401356001600160401b038111156131dc575f5ffd5b8401601f810186136131ec575f5ffd5b80356001600160401b03811115613201575f5ffd5b866020828401011115613212575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b6005811061324757613247613223565b9052565b604081016132598285613237565b6004831061326957613269613223565b8260208301529392505050565b6001600160a01b038116811461142a575f5ffd5b803561329581613276565b919050565b5f602082840312156132aa575f5ffd5b813561143c81613276565b5f602082840312156132c5575f5ffd5b5035919050565b602081016116f58284613237565b80356001600160401b0381168114613295575f5ffd5b5f5f5f60608486031215613302575f5ffd5b61330b846132da565b925060208401359150604084013561332281612f8f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156133645761336461332d565b60405290565b5f82601f830112613379575f5ffd5b81356001600160401b038111156133925761339261332d565b604051601f8201601f19908116603f011681016001600160401b03811182821017156133c0576133c061332d565b6040528181528382016020018510156133d7575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613404575f5ffd5b823561340f81613276565b915060208301356001600160401b03811115613429575f5ffd5b6134358582860161336a565b9150509250929050565b5f6020828403121561344f575f5ffd5b61143c826132da565b5f5f60408385031215613469575f5ffd5b823591506020830135612fdf81612f8f565b803563ffffffff81168114613295575f5ffd5b5f610160828403121561349f575f5ffd5b6134a7613341565b90506134b2826132da565b81526134c0602083016132da565b60208201526134d16040830161347b565b60408201526134e26060830161328a565b60608201526134f3608083016132da565b608082015261350460a0830161328a565b60a082015261351560c083016132da565b60c082015261352660e0830161328a565b60e0820152613538610100830161328a565b61010082015261012082810135908201526101408201356001600160401b03811115613562575f5ffd5b61356e8482850161336a565b6101408301525092915050565b5f6020828403121561358b575f5ffd5b81356001600160401b038111156135a0575f5ffd5b6123358482850161348e565b5f5f604083850312156135bd575f5ffd5b82356135c881613276565b91506020830135612fdf81613276565b5f6116f5368361348e565b5f602082840312156135f3575f5ffd5b61143c8261347b565b5f6020828403121561360c575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116f5576116f5613661565b5f6001600160401b0382166001600160401b0381036136a9576136a9613661565b60010192915050565b602081525f61143c6020830184613068565b5f5f8335601e198436030181126136d9575f5ffd5b8301803591506001600160401b038211156136f2575f5ffd5b602001915036819003821315613706575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e19843603018112613736575f5ffd5b83016020810192503590506001600160401b03811115613754575f5ffd5b803603821315613706575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137a482613797836132da565b6001600160401b03169052565b5f6137b1602083016132da565b6001600160401b031660208401526137cb6040830161347b565b63ffffffff1660408401526137e26060830161328a565b6001600160a01b031660608401526137fc608083016132da565b6001600160401b0316608084015261381660a0830161328a565b6001600160a01b031660a084015261383060c083016132da565b6001600160401b031660c084015261384a60e0830161328a565b6001600160a01b031660e0840152613865610100830161328a565b6001600160a01b0316610100840152610120828101359084015261388d610140830183613721565b610160610140860152612ab561016086018284613762565b60a081525f6138b760a083018561378a565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f602082840312156139a1575f5ffd5b815161143c81612f8f565b63ffffffff81811683821601908111156116f5576116f5613661565b604081525f6139da604083018561378a565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f61143c6080830184613068565b80356001600160e01b03198116906004841015613a50576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613aa1608083018486613762565b979650505050505050565b5f8251613abd81846020870161301b565b9190910192915050565b5f82613ae157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613af6575f5ffd5b815161143c81613276565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b602081525f61143c602083018461303d56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206e61aad42c8b57a755963db756b535ddf30400977c2a5a7162959c1da600b0a664736f6c634300081b0033", + "code": "0x60806040526004361061021d575f3560e01c806382b5e8891161011e578063b8acae0e116100a8578063e07baba61161006d578063e07baba61461066b578063e30c3978146106a8578063eefbf17e146106c5578063f09a4016146106eb578063f2fde38b1461070a575f5ffd5b8063b8acae0e146105af578063be880c81146105ce578063c012fa77146105e4578063d0496d6a14610603578063d1aaa5df1461064b575f5ffd5b80638e3881a9116100ee5780638e3881a9146104fe578063913b16cb1461053c5780639efc7a2e1461055b578063a730cdfb1461057a578063a86f9d9e14610590575f5ffd5b806382b5e8891461049a5780638456cb59146104b95780638abf6077146104cd5780638da5cb5b146104e1575f5ffd5b80633f4ba83a116101aa5780635c975abb1161016f5780635c975abb146103ff57806360620c6b1461041f578063715018a61461043e57806379ba5097146104525780637cbadfaa14610466575f5ffd5b80633f4ba83a14610381578063422770fa146103955780634f1ef286146103b957806352d1902d146103cc5780635862f6e1146103e0575f5ffd5b80633075db56116101f05780633075db56146102ad5780633659cfe6146102d15780633ab76e9f146102f05780633c6cf473146103275780633eb6b8cf14610362575f5ffd5b80630432873c14610221578063069489a2146102425780631bdb0037146102565780632035065e14610280575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004612f28565b610729565b005b34801561024d575f5ffd5b50610240610a27565b610269610264366004612f76565b610ade565b604051610277929190613102565b60405180910390f35b34801561028b575f5ffd5b5061029f61029a36600461311a565b610e94565b6040516102779291906131d7565b3480156102b8575f5ffd5b506102c1611354565b6040519015158152602001610277565b3480156102dc575f5ffd5b506102406102eb366004613226565b61136c565b3480156102fb575f5ffd5b5060975461030f906001600160a01b031681565b6040516001600160a01b039091168152602001610277565b348015610332575f5ffd5b50610355610341366004613241565b60fc6020525f908152604090205460ff1681565b6040516102779190613258565b34801561036d575f5ffd5b5061030f61037c36600461327c565b611433565b34801561038c575f5ffd5b50610240611449565b3480156103a0575f5ffd5b506103ab62030d4081565b604051908152602001610277565b6102406103c736600461337f565b61145d565b3480156103d7575f5ffd5b506103ab611516565b3480156103eb575f5ffd5b506102c16103fa36600461311a565b6115c8565b34801561040a575f5ffd5b506102c160c954610100900460ff1660021490565b34801561042a575f5ffd5b506102c1610439366004612f76565b611633565b348015610449575f5ffd5b50610240611701565b34801561045d575f5ffd5b50610240611712565b348015610471575f5ffd5b50610485610480366004613241565b611789565b60405163ffffffff9091168152602001610277565b3480156104a5575f5ffd5b506102406104b4366004613226565b6117a7565b3480156104c4575f5ffd5b50610240611827565b3480156104d8575f5ffd5b5061030f61183a565b3480156104ec575f5ffd5b506033546001600160a01b031661030f565b348015610509575f5ffd5b5061051d6105183660046133cb565b611848565b6040805192151583526001600160a01b03909116602083015201610277565b348015610547575f5ffd5b50610240610556366004612f76565b611874565b348015610566575f5ffd5b5061024061057536600461311a565b611a63565b348015610585575f5ffd5b506104856201d4c081565b34801561059b575f5ffd5b5061030f6105aa3660046133e4565b611d67565b3480156105ba575f5ffd5b506102c16105c936600461311a565b611d73565b3480156105d9575f5ffd5b50610485620c350081565b3480156105ef575f5ffd5b506103ab6105fe366004613507565b611dd4565b34801561060e575f5ffd5b50610617611e03565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610277565b348015610656575f5ffd5b506103ab610665366004613241565b60031890565b348015610676575f5ffd5b5060c954610690906201000090046001600160401b031681565b6040516001600160401b039091168152602001610277565b3480156106b3575f5ffd5b506065546001600160a01b031661030f565b3480156106d0575f5ffd5b5060fb5461069090600160401b90046001600160401b031681565b3480156106f6575f5ffd5b50610240610705366004613538565b611eaa565b348015610715575f5ffd5b50610240610724366004613226565b611f71565b61073960e0830160c084016133cb565b46816001600160401b03161461076257604051631c6c777560e31b815260040160405180910390fd5b61077260a08401608085016133cb565b6001600160401b0381161580610790575046816001600160401b0316145b156107ae57604051631c6c777560e31b815260040160405180910390fd5b6107c260c954610100900460ff1660021490565b156107e05760405163bae6e2a960e01b815260040160405180910390fd5b60026107ee60c95460ff1690565b60ff160361080f5760405163dfc60d8560e01b815260040160405180910390fd5b6108196002611fe2565b5f6108266105fe86613564565b9050610833816001611ff8565b61084185610120013561204a565b61085e576040516335856fbd60e21b815260040160405180910390fd5b5f6108838661087e6d7369676e616c5f7365727669636560901b5f611d67565b6120eb565b156108ce576108c78661012001356188b860405180602001604052805f8152508960e00160208101906108b69190613226565b6001600160a01b03169291906121e2565b9050610948565b6108de606087016040880161356f565b63ffffffff1615806108ed5750845b801561091b5750610905610100870160e08801613226565b6001600160a01b0316336001600160a01b031614155b15610939576040516372b6e1c360e11b815260040160405180910390fd5b61094586835a5f61221f565b90505b801561095e57610959826002612316565b610a15565b84156109fc5761096f826003612316565b61098a6d7369676e616c5f7365727669636560901b5f611d67565b60405163019b28af60e61b81526003841860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af11580156109d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f69190613588565b50610a15565b60405163161e3ead60e01b815260040160405180910390fd5b5050610a216001611fe2565b50505050565b610a2f6123d3565b5f54600290610100900460ff16158015610a4f57505f5460ff8083169116105b610a745760405162461bcd60e51b8152600401610a6b9061359f565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610b4460c0840160a08501613226565b6001600160a01b038116610b6b5760405163538ba4f960e01b815260040160405180910390fd5b610b7c610100850160e08601613226565b6001600160a01b038116610ba35760405163538ba4f960e01b815260040160405180910390fd5b610bb360e0860160c087016133cb565b6001600160401b0381161580610bd1575046816001600160401b0316145b15610bef57604051631c6c777560e31b815260040160405180910390fd5b610c0360c954610100900460ff1660021490565b15610c215760405163bae6e2a960e01b815260040160405180910390fd5b6002610c2f60c95460ff1690565b60ff1603610c505760405163dfc60d8560e01b815260040160405180910390fd5b610c5a6002611fe2565b610c6a606087016040880161356f565b63ffffffff165f03610cb257610c8660408701602088016133cb565b6001600160401b031615610cad5760405163c9f5178760e01b815260040160405180910390fd5b610cda565b610cbb8661242d565b5f03610cda576040516308c2ad5360e01b815260040160405180910390fd5b5f610cee61051860e0890160c08a016133cb565b50905080610d0f57604051631c6c777560e31b815260040160405180910390fd5b34610d206040890160208a016133cb565b610d38906001600160401b03166101208a0135613601565b14610d5657604051634ac2abdf60e11b815260040160405180910390fd5b610d5f87613564565b60fb8054919650600160401b9091046001600160401b0316906008610d8383613614565b82546101009290920a6001600160401b03818102199093169183160217909155908116865233606087015246166080860152610dbe85611dd4565b9550857fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351786604051610df0919061363e565b60405180910390a2610e136d7369676e616c5f7365727669636560901b5f611d67565b6001600160a01b03166366ca2bc0876040518263ffffffff1660e01b8152600401610e4091815260200190565b6020604051808303815f875af1158015610e5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e809190613588565b5050610e8c6001611fe2565b505050915091565b5f5f610eaa60c954610100900460ff1660021490565b15610ec85760405163bae6e2a960e01b815260040160405180910390fd5b6002610ed660c95460ff1690565b60ff1603610ef75760405163dfc60d8560e01b815260040160405180910390fd5b610f016002611fe2565b5f5a905046610f1660e0880160c089016133cb565b6001600160401b031614610f3d57604051631c6c777560e31b815260040160405180910390fd5b610f4d60a08701608088016133cb565b6001600160401b03161580610f79575046610f6e60a08801608089016133cb565b6001600160401b0316145b15610f9757604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610fcb610100880160e08901613226565b6001600160a01b031633148015606083015261103a57610ff1606088016040890161356f565b63ffffffff165f03611016576040516372b6e1c360e11b815260040160405180910390fd5b62030d4085111561103a57604051631e3b03c960e01b815260040160405180910390fd5b5f6110476105fe89613564565b9050611053815f611ff8565b5f61106f6d7369676e616c5f7365727669636560901b5f611d67565b63ffffffff881660208501529050611099818361109260a08d0160808e016133cb565b8b8b612480565b63ffffffff166040808501919091526110d8906110bb908b0160208c016133cb565b6110d3906001600160401b03166101208c0135613601565b61204a565b6110f5576040516335856fbd60e21b815260040160405180910390fd5b5f6111008a836120eb565b1561111957506002955060019450610120890135611160565b5f8460600151611129575a611132565b6111328b61242d565b90506111448b8583886060015161221f565b1561115557600297505f965061115e565b60019750600296505b505b61117060408b0160208c016133cb565b6001600160401b0316156112d15761118e60408b0160208c016133cb565b6111a1906001600160401b031682613601565b9050836060015180156111c857506111bf60608b0160408c0161356f565b63ffffffff1615155b156112d157604084015163ffffffff16614e20025a6112056111ee6101408e018e613650565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168801919091036201d4c00181168087525f91839161122e9183919061252b16565b0390505f61124260608e0160408f0161356f565b63ffffffff168d602001602081019061125b91906133cb565b6001600160401b031683028161127357611273613699565b0490505f48830290505f6112b78f602001602081019061129391906133cb565b6001600160401b0316848410156112af5784840160011c6112b1565b845b90612540565b958690039590506112cb33826188b8612554565b50505050505b6112f9816188b86112e96101008e0160e08f01613226565b6001600160a01b03169190612554565b6113038388612316565b827f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8b86604051611335929190613831565b60405180910390a2505050505061134c6001611fe2565b935093915050565b5f600261136360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000011630036113b45760405162461bcd60e51b8152600401610a6b90613885565b7f00000000000000000000000001670100000000000000000000000000000000016001600160a01b03166113e6612597565b6001600160a01b03161461140c5760405162461bcd60e51b8152600401610a6b906138d1565b611415816125b2565b604080515f80825260208201909252611430918391906125ba565b50565b5f61143f848484612724565b90505b9392505050565b611451612776565b61145b335f612806565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000011630036114a55760405162461bcd60e51b8152600401610a6b90613885565b7f00000000000000000000000001670100000000000000000000000000000000016001600160a01b03166114d7612597565b6001600160a01b0316146114fd5760405162461bcd60e51b8152600401610a6b906138d1565b611506826125b2565b611512828260016125ba565b5050565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000116146115b55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610a6b565b505f516020613aeb5f395f51905f525b90565b5f466115da60a08601608087016133cb565b6001600160401b0316146115ef57505f611442565b61143f61160d6d7369676e616c5f7365727669636560901b5f611d67565b61161c6106656105fe88613564565b61162c60e0880160c089016133cb565b86866128b3565b5f4661164560a08401608085016133cb565b6001600160401b03161461165a57505f919050565b6116756d7369676e616c5f7365727669636560901b5f611d67565b6001600160a01b03166332676bc6306116906105fe86613564565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa1580156116d7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fb919061391d565b92915050565b6117096123d3565b61145b5f612935565b60655433906001600160a01b031681146117805760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610a6b565b61143081612935565b5f6116fb620c35006101a06020601f8601819004020160041b613938565b806001600160a01b0381166117cf5760405163538ba4f960e01b815260040160405180910390fd5b6040516317066a5760e21b81523060048201526001600160a01b03831690635c19a95c906024015f604051808303815f87803b15801561180d575f5ffd5b505af115801561181f573d5f5f3e3d5ffd5b505050505050565b61182f61294e565b61145b336001612806565b5f611843612597565b905090565b5f5f61185f836562726964676560d01b6001611433565b6001600160a01b038116151594909350915050565b61188460e0820160c083016133cb565b46816001600160401b0316146118ad57604051631c6c777560e31b815260040160405180910390fd5b6118bd60a08301608084016133cb565b6001600160401b03811615806118db575046816001600160401b0316145b156118f957604051631c6c777560e31b815260040160405180910390fd5b61190d60c954610100900460ff1660021490565b1561192b5760405163bae6e2a960e01b815260040160405180910390fd5b600261193960c95460ff1690565b60ff160361195a5760405163dfc60d8560e01b815260040160405180910390fd5b6119646002611fe2565b611975610100840160e08501613226565b6001600160a01b0316336001600160a01b0316146119a6576040516372b6e1c360e11b815260040160405180910390fd5b5f6119b36105fe85613564565b90506119c0816001611ff8565b6119cb816003612316565b6119e66d7369676e616c5f7365727669636560901b5f611d67565b60405163019b28af60e61b81526003831860048201526001600160a01b0391909116906366ca2bc0906024016020604051808303815f875af1158015611a2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a529190613588565b5050611a5e6001611fe2565b505050565b611a7360a08401608085016133cb565b46816001600160401b031614611a9c57604051631c6c777560e31b815260040160405180910390fd5b611aac60e0850160c086016133cb565b6001600160401b0381161580611aca575046816001600160401b0316145b15611ae857604051631c6c777560e31b815260040160405180910390fd5b611afc60c954610100900460ff1660021490565b15611b1a5760405163bae6e2a960e01b815260040160405180910390fd5b6002611b2860c95460ff1690565b60ff1603611b495760405163dfc60d8560e01b815260040160405180910390fd5b611b536002611fe2565b5f611b606105fe87613564565b9050611b6c815f611ff8565b5f611b886d7369676e616c5f7365727669636560901b5f611d67565b604051631933b5e360e11b8152306004820152602481018490529091506001600160a01b038216906332676bc690604401602060405180830381865afa158015611bd4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bf8919061391d565b611c155760405163ab035ad560e01b815260040160405180910390fd5b611c348160038418611c2d60e08b0160c08c016133cb565b8989612480565b50611c40826004612316565b611c4e87610120013561204a565b611c6b576040516335856fbd60e21b815260040160405180910390fd5b611c9462bc399d60e11b611c8560808a0160608b01613226565b6001600160a01b0316906129bf565b15611d3857611cb38230611cae60a08b0160808c016133cb565b612a4c565b611cc36080880160608901613226565b6001600160a01b0316630178733a88610120013589856040518463ffffffff1660e01b8152600401611cf6929190613954565b5f604051808303818588803b158015611d0d575f5ffd5b505af1158015611d1f573d5f5f3e3d5ffd5b5050505050611d335f195f1b5f1980612a4c565b611d54565b611d546101208801356188b86112e960c08b0160a08c01613226565b5050611d606001611fe2565b5050505050565b5f611442468484612724565b5f46611d8560e0860160c087016133cb565b6001600160401b031614611d9a57505f611442565b61143f611db86d7369676e616c5f7365727669636560901b5f611d67565b611dc46105fe87613564565b61162c60a08801608089016133cb565b5f81604051602001611de69190613975565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611e7a604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611e8c575080515f19145b156115c557604051635ceed17360e01b815260040160405180910390fd5b5f54610100900460ff1615808015611ec857505f54600160ff909116105b80611ee15750303b158015611ee157505f5460ff166001145b611efd5760405162461bcd60e51b8152600401610a6b9061359f565b5f805460ff191660011790558015611f1e575f805461ff0019166101001790555b611f288383612aa1565b8015611a5e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611f796123d3565b606580546001600160a01b0383166001600160a01b03199091168117909155611faa6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b80600481111561200a5761200a6131af565b5f83815260fc602052604090205460ff16600481111561202c5761202c6131af565b14611512576040516319d893ad60e21b815260040160405180910390fd5b5f5f6120676c38bab7ba30afb6b0b730b3b2b960991b6001611d67565b90506001600160a01b0381166120805750600192915050565b6040516315c638fb60e31b81525f6004820152602481018490526001600160a01b0382169063ae31c7d8906044015f604051808303815f87803b1580156120c5575f5ffd5b505af19250505080156120d6575060015b6120e257505f92915050565b50600192915050565b5f806120ff61012085016101008601613226565b6001600160a01b031603612115575060016116fb565b3061212861012085016101008601613226565b6001600160a01b03160361213e575060016116fb565b6001600160a01b03821661215a61012085016101008601613226565b6001600160a01b031603612170575060016116fb565b6004612180610140850185613650565b9050101580156121b75750637f07c94760e01b6121a1610140850185613650565b6121aa916139ab565b6001600160e01b03191614155b801561144257506114426121d361012085016101008601613226565b6001600160a01b03163b151590565b5f6001600160a01b03851661220a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f306122316080870160608801613226565b6001600160a01b031603612247576122476139e3565b825f0361225557505f61230e565b612279846122696080880160608901613226565b611cae60a0890160808a016133cb565b5f61228c61012087016101008801613226565b90506101208601355f6122a3610140890189613650565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a905085156122fd576122fd8188612adb565b6123095f198080612a4c565b505050505b949350505050565b806004811115612328576123286131af565b5f83815260fc602052604090205460ff16600481111561234a5761234a6131af565b03612368576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff19166001836004811115612392576123926131af565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b2575634826040516123c79190613258565b60405180910390a25050565b6033546001600160a01b0316331461145b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a6b565b5f80612447612440610140850185613650565b9050611789565b63ffffffff16905080612478612463606086016040870161356f565b63ffffffff168361252b90919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856124a5876562726964676560d01b5f611433565b8887876040518663ffffffff1660e01b81526004016124c89594939291906139f7565b6020604051808303815f875af1925050508015612502575060408051601f3d908101601f191682019092526124ff91810190613588565b60015b61251f576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f8183116125395781611442565b5090919050565b5f81831161254e5782611442565b50919050565b815f0361256057505050565b61257a83838360405180602001604052805f8152506121e2565b611a5e57604051634c67134d60e11b815260040160405180910390fd5b5f516020613aeb5f395f51905f52546001600160a01b031690565b6114306123d3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125ed57611a5e83612aef565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612647575060408051601f3d908101601f1916820190925261264491810190613588565b60015b6126aa5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a6b565b5f516020613aeb5f395f51905f5281146127185760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a6b565b50611a5e838383612b8a565b5f61272f8484612bae565b90508115801561274657506001600160a01b038116155b1561144257604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610a6b565b61278a60c954610100900460ff1660021490565b6127a75760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6033546001600160a01b038381169116148061284e57506128396d636861696e5f7761746368646f6760901b6001611d67565b6001600160a01b0316826001600160a01b0316145b15612857575050565b808015612891575061287c6e6272696467655f7761746368646f6760881b6001611d67565b6001600160a01b0316826001600160a01b0316145b1561289a575050565b604051630d85cccf60e11b815260040160405180910390fd5b5f856001600160a01b031663ce9d0820856128d8876562726964676560d01b5f611433565b8887876040518663ffffffff1660e01b81526004016128fb9594939291906139f7565b5f6040518083038186803b158015612911575f5ffd5b505afa925050508015612922575060015b61292d57505f612522565b506001612522565b606580546001600160a01b031916905561143081612c50565b61296260c954610100900460ff1660021490565b156129805760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016127fc565b5f6001600160a01b0383163b6129d657505f6116fb565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015612a40575060408051601f3d908101601f19168201909252612a3d9181019061391d565b60015b156116fb579392505050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b806001600160a01b038116612ac95760405163538ba4f960e01b815260040160405180910390fd5b612ad283612ca1565b611a5e82612cff565b612ae6603f82613a38565b82101561151257fe5b6001600160a01b0381163b612b5c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a6b565b5f516020613aeb5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b612b9383612d6f565b5f82511180612b9f5750805b15611a5e57610a218383612dae565b6097545f906001600160a01b031680612bda57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612c2c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230e9190613a57565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16612cc75760405162461bcd60e51b8152600401610a6b90613a72565b612ccf612dd3565b612ced6001600160a01b03821615612ce75781612935565b33612935565b5060c9805461ff001916610100179055565b5f54610100900460ff16612d255760405162461bcd60e51b8152600401610a6b90613a72565b6001600160401b03461115612d4d5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b612d7881612aef565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114428383604051806060016040528060278152602001613b0b60279139612df9565b5f54610100900460ff1661145b5760405162461bcd60e51b8152600401610a6b90613a72565b60605f5f856001600160a01b031685604051612e159190613abd565b5f60405180830381855af49150503d805f8114612e4d576040519150601f19603f3d011682016040523d82523d5f602084013e612e52565b606091505b5091509150612e6386838387612e6d565b9695505050505050565b60608315612edb5782515f03612ed4576001600160a01b0385163b612ed45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a6b565b508161230e565b61230e8383815115612ef05781518083602001fd5b8060405162461bcd60e51b8152600401610a6b9190613ad8565b5f610160828403121561254e575f5ffd5b8015158114611430575f5ffd5b5f5f60408385031215612f39575f5ffd5b82356001600160401b03811115612f4e575f5ffd5b612f5a85828601612f0a565b9250506020830135612f6b81612f1b565b809150509250929050565b5f60208284031215612f86575f5ffd5b81356001600160401b03811115612f9b575f5ffd5b61230e84828501612f0a565b5f5b83811015612fc1578181015183820152602001612fa9565b50505f910152565b5f8151808452612fe0816020860160208601612fa7565b601f01601f19169290920160200192915050565b80516001600160401b031682525f602082015161301c60208501826001600160401b03169052565b506040820151613034604085018263ffffffff169052565b50606082015161304f60608501826001600160a01b03169052565b50608082015161306a60808501826001600160401b03169052565b5060a082015161308560a08501826001600160a01b03169052565b5060c08201516130a060c08501826001600160401b03169052565b5060e08201516130bb60e08501826001600160a01b03169052565b506101008201516130d86101008501826001600160a01b03169052565b5061012082015161012084015261014082015161016061014085015261230e610160850182612fc9565b828152604060208201525f61143f6040830184612ff4565b5f5f5f6040848603121561312c575f5ffd5b83356001600160401b03811115613141575f5ffd5b61314d86828701612f0a565b93505060208401356001600160401b03811115613168575f5ffd5b8401601f81018613613178575f5ffd5b80356001600160401b0381111561318d575f5ffd5b86602082840101111561319e575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b600581106131d3576131d36131af565b9052565b604081016131e582856131c3565b600483106131f5576131f56131af565b8260208301529392505050565b6001600160a01b0381168114611430575f5ffd5b803561322181613202565b919050565b5f60208284031215613236575f5ffd5b813561144281613202565b5f60208284031215613251575f5ffd5b5035919050565b602081016116fb82846131c3565b80356001600160401b0381168114613221575f5ffd5b5f5f5f6060848603121561328e575f5ffd5b61329784613266565b92506020840135915060408401356132ae81612f1b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b03811182821017156132f0576132f06132b9565b60405290565b5f82601f830112613305575f5ffd5b81356001600160401b0381111561331e5761331e6132b9565b604051601f8201601f19908116603f011681016001600160401b038111828210171561334c5761334c6132b9565b604052818152838201602001851015613363575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613390575f5ffd5b823561339b81613202565b915060208301356001600160401b038111156133b5575f5ffd5b6133c1858286016132f6565b9150509250929050565b5f602082840312156133db575f5ffd5b61144282613266565b5f5f604083850312156133f5575f5ffd5b823591506020830135612f6b81612f1b565b803563ffffffff81168114613221575f5ffd5b5f610160828403121561342b575f5ffd5b6134336132cd565b905061343e82613266565b815261344c60208301613266565b602082015261345d60408301613407565b604082015261346e60608301613216565b606082015261347f60808301613266565b608082015261349060a08301613216565b60a08201526134a160c08301613266565b60c08201526134b260e08301613216565b60e08201526134c46101008301613216565b61010082015261012082810135908201526101408201356001600160401b038111156134ee575f5ffd5b6134fa848285016132f6565b6101408301525092915050565b5f60208284031215613517575f5ffd5b81356001600160401b0381111561352c575f5ffd5b61230e8482850161341a565b5f5f60408385031215613549575f5ffd5b823561355481613202565b91506020830135612f6b81613202565b5f6116fb368361341a565b5f6020828403121561357f575f5ffd5b61144282613407565b5f60208284031215613598575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156116fb576116fb6135ed565b5f6001600160401b0382166001600160401b038103613635576136356135ed565b60010192915050565b602081525f6114426020830184612ff4565b5f5f8335601e19843603018112613665575f5ffd5b8301803591506001600160401b0382111561367e575f5ffd5b602001915036819003821315613692575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126136c2575f5ffd5b83016020810192503590506001600160401b038111156136e0575f5ffd5b803603821315613692575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6137308261372383613266565b6001600160401b03169052565b5f61373d60208301613266565b6001600160401b0316602084015261375760408301613407565b63ffffffff16604084015261376e60608301613216565b6001600160a01b0316606084015261378860808301613266565b6001600160401b031660808401526137a260a08301613216565b6001600160a01b031660a08401526137bc60c08301613266565b6001600160401b031660c08401526137d660e08301613216565b6001600160a01b031660e08401526137f16101008301613216565b6001600160a01b031661010084015261012082810135908401526138196101408301836136ad565b610160610140860152612522610160860182846136ee565b60a081525f61384360a0830185613716565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561392d575f5ffd5b815161144281612f1b565b63ffffffff81811683821601908111156116fb576116fb6135ed565b604081525f6139666040830185613716565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114426080830184612ff4565b80356001600160e01b031981169060048410156139dc576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f613a2d6080830184866136ee565b979650505050505050565b5f82613a5257634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215613a67575f5ffd5b815161144281613202565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613ace818460208701612fa7565b9190910192915050565b602081525f6114426020830184612fc956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220fe7f47dabd46879b9404e8d06f7ee77f2c51d0391f21575037dda2b3e15ccfb164736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000001": { + "0x1670100000000000000000000000000000000001": { "contractName": "Bridge", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000001" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000001" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", - "balance": "0x033b258556117b43a1e00000" + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", + "balance": "0x033b2dc55cae685664a00000" }, - "0x0167001000000000000000000000000000000002": { + "0x0167010000000000000000000000000000000002": { "contractName": "ERC20VaultImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610519578063f09a401614610536578063f2fde38b14610555575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc366004613350565b610574565b005b3480156101de575f5ffd5b506101f26101ed366004613396565b610702565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e6102213660046133d1565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133ff565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b536600461341a565b610752565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e60565b3480156102f1575f5ffd5b506101d16103003660046133ff565b610e78565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e366004613482565b610f48565b34801561034e575f5ffd5b506101d1610f5e565b6101d16103653660046135ca565b610f72565b348015610375575f5ffd5b5061023e611027565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b83660046133d1565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110d8565b3480156103fd575f5ffd5b506101d16110e9565b6101d1610414366004613616565b611160565b348015610424575f5ffd5b506101d16112b0565b348015610438575f5ffd5b506102ba6112c3565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133ff565b6112d1565b6040516101fe9594939291906136cf565b348015610499575f5ffd5b506102ba6104a8366004613728565b611426565b6104c06104bb36600461374b565b611432565b6040516101fe9190613764565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101fe565b348015610524575f5ffd5b506065546001600160a01b03166102ba565b348015610541575f5ffd5b506101d1610550366004613854565b611875565b348015610560575f5ffd5b506101d161056f3660046133ff565b611984565b61058860c954610100900460ff1660021490565b156105a65760405163bae6e2a960e01b815260040160405180910390fd5b60026105b460c95460ff1690565b60ff16036105d55760405163dfc60d8560e01b815260040160405180910390fd5b6105df60026119f5565b6105e7611a0b565b505f6105f7610140840184613870565b6106059160049082906138b9565b81019061061291906138e0565b90505f5f8280602001905181019061062a919061398c565b9350505091505f61064e838760a001602081019061064891906133ff565b84611b01565b905061067861012087013561066960c0890160a08a016133ff565b6001600160a01b031690611ba9565b61068860c0870160a088016133ff565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106e8939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050506106fe60016119f5565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073157506001600160e01b03198216637f07c94760e01b145b8061074c57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f61075b611bb4565b600261076960c95460ff1690565b60ff160361078a5760405163dfc60d8560e01b815260040160405180910390fd5b61079460026119f5565b6001600160a01b03821615806107ca57506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107dd57506001600160a01b0382163b155b156107fb5760405163dc63f98760e01b815260040160405180910390fd5b5f61080c60408501602086016133ff565b6001600160a01b0316148061083557504661082a6020850185613a80565b6001600160401b0316145b1561085357604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff161561088d576040516375c42fc160e01b815260040160405180910390fd5b5f6101308161089f6020870187613a80565b6001600160401b031681526020019081526020015f205f8560200160208101906108c991906133ff565b6001600160a01b0316815260208101919091526040015f205490506108f16276a70082613aaf565b4210156109115760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109226020870187613a80565b6001600160401b031681526020019081526020015f205f85602001602081019061094c91906133ff565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb2576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109db90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0790613ac2565b8015610a525780601f10610a2957610100808354040283529160200191610a52565b820191905f5260205f20905b815481529060010190602001808311610a3557829003601f168201915b50505050508152602001600282018054610a6b90613ac2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9790613ac2565b8015610ae25780601f10610ab957610100808354040283529160200191610ae2565b820191905f5260205f20905b815481529060010190602001808311610ac557829003601f168201915b505050505081525050905080604051602001610afe9190613b59565b6040516020818303038152906040528051906020012085604051602001610b259190613bdf565b6040516020818303038152906040528051906020012014610b5957604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b8d60018301826132f8565b610b9a600283015f6132f8565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd09063b8f2e0c560e01b611c0e565b8015610bf15750610bf16001600160a01b03851663b8f2e0c560e01b611c0e565b15610cb05760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c3c575f5ffd5b505af1158015610c4e573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610c99575f5ffd5b505af1158015610cab573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cd68282613d82565b5083905061012e5f610ceb6020880188613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d1591906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d6e9190613a80565b6001600160401b031681526020019081526020015f205f866020016020810190610d9891906133ff565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dce91906133ff565b6001600160a01b0316610de46020860186613a80565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e1d60608a018a613870565b610e2a60808c018c613870565b610e3a60608e0160408f01613e40565b604051610e4d9796959493929190613e5b565b60405180910390a35061074c60016119f5565b5f6002610e6f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ec95760405162461bcd60e51b8152600401610ec090613eb2565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610efb611cde565b6001600160a01b031614610f215760405162461bcd60e51b8152600401610ec090613efe565b610f2a81611cf9565b604080515f80825260208201909252610f4591839190611d01565b50565b5f610f54848484611e6b565b90505b9392505050565b610f66611ec7565b610f70335f611f57565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fba5760405162461bcd60e51b8152600401610ec090613eb2565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610fec611cde565b6001600160a01b0316146110125760405162461bcd60e51b8152600401610ec090613efe565b61101b82611cf9565b6106fe82826001611d01565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110c65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec0565b505f5160206149de5f395f51905f5290565b6110e0611bb4565b610f705f611f5f565b60655433906001600160a01b031681146111575760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec0565b610f4581611f5f565b61117460c954610100900460ff1660021490565b156111925760405163bae6e2a960e01b815260040160405180910390fd5b60026111a060c95460ff1690565b60ff16036111c15760405163dfc60d8560e01b815260040160405180910390fd5b6111cb60026119f5565b5f8080806111db85870187613f55565b93509350935093505f6111ec611f78565b90506111f783612097565b5f611203868585611b01565b90506112186001600160a01b03851634611ba9565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129894939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a45050505050506106fe60016119f5565b6112b86120d3565b610f70336001611f57565b5f6112cc611cde565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161131990613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461134590613ac2565b80156113905780601f1061136757610100808354040283529160200191611390565b820191905f5260205f20905b81548152906001019060200180831161137357829003601f168201915b5050505050908060020180546113a590613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546113d190613ac2565b801561141c5780601f106113f35761010080835404028352916020019161141c565b820191905f5260205f20905b8154815290600101906020018083116113ff57829003601f168201915b5050505050905085565b5f610f57468484611e6b565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a060c954610100900460ff1660021490565b156114be5760405163bae6e2a960e01b815260040160405180910390fd5b60026114cc60c95460ff1690565b60ff16036114ed5760405163dfc60d8560e01b815260040160405180910390fd5b6114f760026119f5565b8160c001355f0361151b57604051634299323b60e11b815260040160405180910390fd5b5f61152c60a08401608085016133ff565b6001600160a01b031603611553576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156760a08501608086016133ff565b6001600160a01b0316815260208101919091526040015f205460ff16156115a1576040516375c42fc160e01b815260040160405180910390fd5b6115b16080830160608401613a80565b6001600160401b03163410156115da57604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115e685612144565b6040805161016081019091525f8082529396509194509250602081016116126080890160608a01613a80565b6001600160401b0316815260200161163060c0890160a08a0161405a565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166190890189613a80565b6001600160401b031681526020015f6001600160a01b031688602001602081019061168c91906133ff565b6001600160a01b0316036116a057336116b0565b6116b06040890160208a016133ff565b6001600160a01b031681526020908101906116e7906116d1908a018a613a80565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f48565b6001600160a01b031681526020016117056080890160608a01613a80565b611718906001600160401b031634614075565b815260200185905290505f6117366562726964676560d01b82611426565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016117629190613764565b5f6040518083038185885af115801561177d573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117a59190810190614093565b965090506117b960608801604089016133ff565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f0160208101906118089190613a80565b89602001518d608001602081019061182091906133ff565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187060016119f5565b919050565b5f54610100900460ff161580801561189357505f54600160ff909116105b806118ac5750303b1580156118ac57505f5460ff166001145b61190f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec0565b5f805460ff191660011790558015611930575f805461ff0019166101001790555b61193a83836125de565b801561197f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61198c611bb4565b606580546001600160a01b0383166001600160a01b031990911681179091556119bd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a3c816001611426565b6001600160a01b0316336001600160a01b031614611a6d57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611aa9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acd91906141b3565b60208101519092506001600160a01b03163314611afd57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3457506020830151611b2f6001600160a01b0382168484612618565b611b9f565b611b3d8461267b565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b88575f5ffd5b505af1158015611b9a573d5f5f3e3d5ffd5b505050505b610f5781836126bd565b6106fe82825a61274c565b6033546001600160a01b03163314610f705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec0565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611c6a919061421b565b5f60405180830381855afa9150503d805f8114611ca2576040519150601f19603f3d011682016040523d82523d5f602084013e611ca7565b606091505b5091509150818015611cba575080516020145b15611cd65780806020019051810190611cd39190614236565b92505b505092915050565b5f5160206149de5f395f51905f52546001600160a01b031690565b610f45611bb4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611d345761197f8361278f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8e575060408051601f3d908101601f19168201909252611d8b91810190614251565b60015b611df15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec0565b5f5160206149de5f395f51905f528114611e5f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec0565b5061197f83838361282a565b5f611e768484612854565b90508180611e8c57506001600160a01b03811615155b84849091611ebe57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ec0565b50509392505050565b611edb60c954610100900460ff1660021490565b611ef85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106fe611bb4565b606580546001600160a01b0319169055610f45816128fe565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611fa9816001611426565b6001600160a01b0316336001600160a01b031614611fda57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612016573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203a91906141b3565b91505f61205a83604001516116e16a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461209257604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b03811615806120b557506001600160a01b03811630145b15610f4557604051635b50f3f960e01b815260040160405180910390fd5b6120e760c954610100900460ff1660021490565b156121055760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f4d565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161218660a08801608089016133ff565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156123bc576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff16918101919091526001820180548391606084019161220690613ac2565b80601f016020809104026020016040519081016040528092919081815260200182805461223290613ac2565b801561227d5780601f106122545761010080835404028352916020019161227d565b820191905f5260205f20905b81548152906001019060200180831161226057829003601f168201915b5050505050815260200160028201805461229690613ac2565b80601f01602080910402602001604051908101604052809291908181526020018280546122c290613ac2565b801561230d5780601f106122e45761010080835404028352916020019161230d565b820191905f5260205f20905b8154815290600101906020018083116122f057829003601f168201915b505050505081525050925061234633308760c0013588608001602081019061233591906133ff565b6001600160a01b031692919061294f565b61235660a08601608087016133ff565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b15801561239a575f5ffd5b505af11580156123ac573d5f5f3e3d5ffd5b505050508460c00135915061255e565b6040518060a00160405280466001600160401b031681526020018660800160208101906123e991906133ff565b6001600160a01b0316815260200161240f61240a60a0890160808a016133ff565b612987565b60ff16815260200161242f61242a60a0890160808a016133ff565b612a3b565b815260200161244c61244760a0890160808a016133ff565b612ae5565b905292505f61246160a08701608088016133ff565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156124a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124cc9190614251565b90506124e76001600160a01b038316333060c08b013561294f565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa15801561252b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061254f9190614251565b6125599190614075565b935050505b30637f07c947843361257660608a0160408b016133ff565b8660405160200161258a9493929190614268565b60408051601f19818403018152908290526125a79160240161429d565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166126065760405163538ba4f960e01b815260040160405180910390fd5b61260f83612b2b565b61197f82612b89565b6040516001600160a01b03831660248201526044810182905261197f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bf9565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118705761074c82612ccc565b5f6126d96c38bab7ba30afb6b0b730b3b2b960991b6001611426565b90506001600160a01b0381161561197f576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b158015612731575f5ffd5b505af1158015612743573d5f5f3e3d5ffd5b50505050505050565b815f0361275857505050565b61277283838360405180602001604052805f815250612ece565b61197f57604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127fc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec0565b5f5160206149de5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61283383612f0b565b5f8251118061283f5750805b1561197f5761284e8383612f4a565b50505050565b6097545f906001600160a01b03168061288057604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156128d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f691906142af565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261284e9085906323b872dd60e01b90608401612644565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129cc919061421b565b5f60405180830381855afa9150503d805f8114612a04576040519150601f19603f3d011682016040523d82523d5f602084013e612a09565b606091505b5091509150818015612a1c575080516020145b612a275760126128f6565b808060200190518101906128f691906142ca565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f60405180830381855afa9150503d805f8114612ab9576040519150601f19603f3d011682016040523d82523d5f602084013e612abe565b606091505b509150915081612adc5760405180602001604052805f8152506128f6565b6128f681612f6f565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a81919061421b565b5f54610100900460ff16612b515760405162461bcd60e51b8152600401610ec0906142e5565b612b596130dc565b612b776001600160a01b03821615612b715781611f5f565b33611f5f565b5060c9805461ff001916610100179055565b5f54610100900460ff16612baf5760405162461bcd60e51b8152600401610ec0906142e5565b6001600160401b03461115612bd75760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c4d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131029092919063ffffffff16565b905080515f1480612c6d575080806020019051810190612c6d9190614236565b61197f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec0565b5f5f612ce06033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612d1697966001600160a01b031695949390602401614330565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d5c6c0627269646765645f657263323609c1b5f611426565b81604051612d699061332f565b612d7492919061439b565b604051809103905ff080158015612d8d573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612e0f90826143be565b5060808201516002820190612e2490826143be565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612ec09391929190614478565b60405180910390a450919050565b5f6001600160a01b038516612ef657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612f148161278f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5783836040518060600160405280602781526020016149fe60279139613110565b60606040825110612f8e578180602001905181019061074c91906144b0565b81516020036130c9575f5b60208160ff16108015612fce5750828160ff1681518110612fbc57612fbc6144e1565b01602001516001600160f81b03191615155b15612fe55780612fdd816144f5565b915050612f99565b5f8160ff166001600160401b03811115613001576130016134c1565b6040519080825280601f01601f19166020018201604052801561302b576020820181803683370190505b5090505f91505b60208260ff161080156130675750838260ff1681518110613055576130556144e1565b01602001516001600160f81b03191615155b15610f5757838260ff1681518110613081576130816144e1565b602001015160f81c60f81b818360ff16815181106130a1576130a16144e1565b60200101906001600160f81b03191690815f1a905350816130c1816144f5565b925050613032565b505060408051602081019091525f815290565b5f54610100900460ff16610f705760405162461bcd60e51b8152600401610ec0906142e5565b6060610f5484845f85613184565b60605f5f856001600160a01b03168560405161312c919061421b565b5f60405180830381855af49150503d805f8114613164576040519150601f19603f3d011682016040523d82523d5f602084013e613169565b606091505b509150915061317a8683838761325b565b9695505050505050565b6060824710156131e55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec0565b5f5f866001600160a01b03168587604051613200919061421b565b5f6040518083038185875af1925050503d805f811461323a576040519150601f19603f3d011682016040523d82523d5f602084013e61323f565b606091505b50915091506132508783838761325b565b979650505050505050565b606083156132c95782515f036132c2576001600160a01b0385163b6132c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec0565b50816128f6565b6128f683838151156132de5781518083602001fd5b8060405162461bcd60e51b8152600401610ec0919061429d565b50805461330490613ac2565b5f825580601f10613313575050565b601f0160209004905f5260205f2090810190610f45919061333c565b6104ca8061451483390190565b5b80821115611afd575f815560010161333d565b5f5f60408385031215613361575f5ffd5b82356001600160401b03811115613376575f5ffd5b83016101608186031215613388575f5ffd5b946020939093013593505050565b5f602082840312156133a6575f5ffd5b81356001600160e01b031981168114610f57575f5ffd5b6001600160a01b0381168114610f45575f5ffd5b5f5f604083850312156133e2575f5ffd5b8235915060208301356133f4816133bd565b809150509250929050565b5f6020828403121561340f575f5ffd5b8135610f57816133bd565b5f5f6040838503121561342b575f5ffd5b82356001600160401b03811115613440575f5ffd5b830160a08186031215613451575f5ffd5b915060208301356133f4816133bd565b6001600160401b0381168114610f45575f5ffd5b8015158114610f45575f5ffd5b5f5f5f60608486031215613494575f5ffd5b833561349f81613461565b92506020840135915060408401356134b681613475565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134f7576134f76134c1565b60405290565b60405161016081016001600160401b03811182821017156134f7576134f76134c1565b604051601f8201601f191681016001600160401b0381118282101715613548576135486134c1565b604052919050565b5f6001600160401b03821115613568576135686134c1565b50601f01601f191660200190565b5f82601f830112613585575f5ffd5b8135602083015f61359d61359884613550565b613520565b90508281528583830111156135b0575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f604083850312156135db575f5ffd5b82356135e6816133bd565b915060208301356001600160401b03811115613600575f5ffd5b61360c85828601613576565b9150509250929050565b5f5f60208385031215613627575f5ffd5b82356001600160401b0381111561363c575f5ffd5b8301601f8101851361364c575f5ffd5b80356001600160401b03811115613661575f5ffd5b856020828401011115613672575f5ffd5b6020919091019590945092505050565b5f5b8381101561369c578181015183820152602001613684565b50505f910152565b5f81518084526136bb816020860160208601613682565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f9061370a908301856136a4565b828103608084015261371c81856136a4565b98975050505050505050565b5f5f60408385031215613739575f5ffd5b8235915060208301356133f481613475565b5f60e082840312801561375c575f5ffd5b509092915050565b6020815261377e6020820183516001600160401b03169052565b5f602083015161379960408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128f66101808401826136a4565b5f5f60408385031215613865575f5ffd5b8235613451816133bd565b5f5f8335601e19843603018112613885575f5ffd5b8301803591506001600160401b0382111561389e575f5ffd5b6020019150368190038213156138b2575f5ffd5b9250929050565b5f5f858511156138c7575f5ffd5b838611156138d3575f5ffd5b5050820193919092039150565b5f602082840312156138f0575f5ffd5b81356001600160401b03811115613905575f5ffd5b6128f684828501613576565b805161187081613461565b8051611870816133bd565b60ff81168114610f45575f5ffd5b805161187081613927565b5f82601f83011261394f575f5ffd5b8151602083015f61396261359884613550565b9050828152858383011115613975575f5ffd5b613983836020830184613682565b95945050505050565b5f5f5f5f6080858703121561399f575f5ffd5b84516001600160401b038111156139b4575f5ffd5b850160a081880312156139c5575f5ffd5b6139cd6134d5565b81516139d881613461565b815260208201516139e8816133bd565b60208201526139f960408301613935565b604082015260608201516001600160401b03811115613a16575f5ffd5b613a2289828501613940565b60608301525060808201516001600160401b03811115613a40575f5ffd5b613a4c89828501613940565b6080830152509450613a6290506020860161391c565b9250613a706040860161391c565b6060959095015193969295505050565b5f60208284031215613a90575f5ffd5b8135610f5781613461565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561074c5761074c613a9b565b600181811c90821680613ad657607f821691505b602082108103613af457634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613b4060a08501826136a4565b905060808301518482036080860152611cd382826136a4565b602081525f610f576020830184613afa565b803561187081613927565b5f5f8335601e19843603018112613b8b575f5ffd5b83016020810192503590506001600160401b03811115613ba9575f5ffd5b8036038213156138b2575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613bef81613461565b6001600160401b0381166020840152506020830135613c0d816133bd565b6001600160a01b0316604083810191909152830135613c2b81613927565b60ff8116606084015250613c426060840184613b76565b60a06080850152613c5760c085018284613bb7565b915050613c676080850185613b76565b848303601f190160a086015261317a838284613bb7565b601f82111561197f57805f5260205f20601f840160051c81016020851015613ca35750805b601f840160051c820191505b81811015613cc2575f8155600101613caf565b5050505050565b6001600160401b03831115613ce057613ce06134c1565b613cf483613cee8354613ac2565b83613c7e565b5f601f841160018114613d25575f8515613d0e5750838201355b5f19600387901b1c1916600186901b178355613cc2565b5f83815260208120601f198716915b82811015613d545786850135825560209485019460019092019101613d34565b5086821015613d70575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d8d81613461565b6001600160401b03811690508154816001600160401b031982161783556020840135613db8816133bd565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613def81613927565b825460ff60e01b191660e09190911b60ff60e01b1617825550613e156060830183613870565b613e23818360018601613cc9565b5050613e326080830183613870565b61284e818360028601613cc9565b5f60208284031215613e50575f5ffd5b8135610f5781613927565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e879083018789613bb7565b8281036060840152613e9a818688613bb7565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8035611870816133bd565b5f5f5f5f60808587031215613f68575f5ffd5b84356001600160401b03811115613f7d575f5ffd5b850160a08188031215613f8e575f5ffd5b613f966134d5565b8135613fa181613461565b81526020820135613fb1816133bd565b6020820152613fc260408301613b6b565b604082015260608201356001600160401b03811115613fdf575f5ffd5b613feb89828501613576565b60608301525060808201356001600160401b03811115614009575f5ffd5b61401589828501613576565b608083015250945061402b905060208601613f4a565b925061403960408601613f4a565b9396929550929360600135925050565b63ffffffff81168114610f45575f5ffd5b5f6020828403121561406a575f5ffd5b8135610f5781614049565b8181038181111561074c5761074c613a9b565b805161187081614049565b5f5f604083850312156140a4575f5ffd5b825160208401519092506001600160401b038111156140c1575f5ffd5b830161016081860312156140d3575f5ffd5b6140db6134fd565b6140e482613911565b81526140f260208301613911565b602082015261410360408301614088565b60408201526141146060830161391c565b606082015261412560808301613911565b608082015261413660a0830161391c565b60a082015261414760c08301613911565b60c082015261415860e0830161391c565b60e082015261416a610100830161391c565b61010082015261012082810151908201526101408201516001600160401b03811115614194575f5ffd5b6141a087828501613940565b6101408301525080925050509250929050565b5f60608284031280156141c4575f5ffd5b50604051606081016001600160401b03811182821017156141e7576141e76134c1565b6040528251815260208301516141fc816133bd565b6020820152604083015161420f81613461565b60408201529392505050565b5f825161422c818460208701613682565b9190910192915050565b5f60208284031215614246575f5ffd5b8151610f5781613475565b5f60208284031215614261575f5ffd5b5051919050565b608081525f61427a6080830187613afa565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5760208301846136a4565b5f602082840312156142bf575f5ffd5b8151610f57816133bd565b5f602082840312156142da575f5ffd5b8151610f5781613927565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f9061437b908301856136a4565b82810360c084015261438d81856136a4565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f54908301846136a4565b81516001600160401b038111156143d7576143d76134c1565b6143eb816143e58454613ac2565b84613c7e565b6020601f82116001811461441d575f83156144065750848201515b5f19600385901b1c1916600184901b178455613cc2565b5f84815260208120601f198516915b8281101561444c578785015182556020948501946001909201910161442c565b508482101561446957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f61448a60608301866136a4565b828103602084015261449c81866136a4565b91505060ff83166040830152949350505050565b5f602082840312156144c0575f5ffd5b81516001600160401b038111156144d5575f5ffd5b6128f684828501613940565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff810361450a5761450a613a9b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122081cb565f479e4a5edf2c2fd18d805122a8190cec8f0969065a9660e524c17c9964736f6c634300081b0033", + "code": "0x6080604052600436106101ba575f3560e01c806367090ccf116100f25780639aa8605c11610092578063e07baba611610062578063e07baba6146104e3578063e30c397814610520578063f09a40161461053d578063f2fde38b1461055c575f5ffd5b80639aa8605c1461045e578063a86f9d9e1461048e578063b84d9ffe146104ad578063d56ad7ac146104cd575f5ffd5b80637f07c947116100cd5780637f07c947146104065780638456cb59146104195780638abf60771461042d5780638da5cb5b14610441575f5ffd5b806367090ccf1461039e578063715018a6146103de57806379ba5097146103f2575f5ffd5b80633659cfe61161015d5780633f4ba83a116101385780633f4ba83a146103435780634f1ef2861461035757806352d1902d1461036a5780635c975abb1461037e575f5ffd5b80633659cfe6146102e65780633ab76e9f146103055780633eb6b8cf14610324575f5ffd5b806306fdde031161019857806306fdde031461024c5780630e7eeb791461026c5780630ecd8be91461029b5780633075db56146102d2575f5ffd5b80630178733a146101be57806301ffc9a7146101d3578063066fe7b414610207575b5f5ffd5b6101d16101cc36600461330a565b61057b565b005b3480156101de575f5ffd5b506101f26101ed366004613350565b610709565b60405190151581526020015b60405180910390f35b348015610212575f5ffd5b5061023e61022136600461338b565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101fe565b348015610257575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b61023e565b348015610277575f5ffd5b506101f26102863660046133b9565b61012f6020525f908152604090205460ff1681565b3480156102a6575f5ffd5b506102ba6102b53660046133d4565b610759565b6040516001600160a01b0390911681526020016101fe565b3480156102dd575f5ffd5b506101f2610e67565b3480156102f1575f5ffd5b506101d16103003660046133b9565b610e7f565b348015610310575f5ffd5b506097546102ba906001600160a01b031681565b34801561032f575f5ffd5b506102ba61033e36600461343c565b610f4f565b34801561034e575f5ffd5b506101d1610f65565b6101d1610365366004613584565b610f79565b348015610375575f5ffd5b5061023e61102e565b348015610389575f5ffd5b506101f260c954610100900460ff1660021490565b3480156103a9575f5ffd5b506102ba6103b836600461338b565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103e9575f5ffd5b506101d16110df565b3480156103fd575f5ffd5b506101d16110f0565b6101d16104143660046135d0565b611167565b348015610424575f5ffd5b506101d16112b7565b348015610438575f5ffd5b506102ba6112ca565b34801561044c575f5ffd5b506033546001600160a01b03166102ba565b348015610469575f5ffd5b5061047d6104783660046133b9565b6112d8565b6040516101fe959493929190613689565b348015610499575f5ffd5b506102ba6104a83660046136e2565b61142d565b6104c06104bb366004613705565b611439565b6040516101fe919061371e565b3480156104d8575f5ffd5b5061023e6276a70081565b3480156104ee575f5ffd5b5060c954610508906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101fe565b34801561052b575f5ffd5b506065546001600160a01b03166102ba565b348015610548575f5ffd5b506101d161055736600461380e565b61187c565b348015610567575f5ffd5b506101d16105763660046133b9565b61198b565b61058f60c954610100900460ff1660021490565b156105ad5760405163bae6e2a960e01b815260040160405180910390fd5b60026105bb60c95460ff1690565b60ff16036105dc5760405163dfc60d8560e01b815260040160405180910390fd5b6105e660026119fc565b6105ee611a12565b505f6105fe61014084018461382a565b61060c916004908290613873565b810190610619919061389a565b90505f5f828060200190518101906106319190613946565b9350505091505f610655838760a001602081019061064f91906133b9565b84611b08565b905061067f61012087013561067060c0890160a08a016133b9565b6001600160a01b031690611bb0565b61068f60c0870160a088016133b9565b6001600160a01b0316857f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516106ef939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a35050505061070560016119fc565b5050565b5f6001600160e01b0319821662bc399d60e11b148061073857506001600160e01b03198216637f07c94760e01b145b8061075357506001600160e01b031982166301ffc9a760e01b145b92915050565b5f610762611bbb565b600261077060c95460ff1690565b60ff16036107915760405163dfc60d8560e01b815260040160405180910390fd5b61079b60026119fc565b6001600160a01b03821615806107d157506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806107e457506001600160a01b0382163b155b156108025760405163dc63f98760e01b815260040160405180910390fd5b5f61081360408501602086016133b9565b6001600160a01b0316148061083c5750466108316020850185613a3a565b6001600160401b0316145b1561085a57604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff1615610894576040516375c42fc160e01b815260040160405180910390fd5b5f610130816108a66020870187613a3a565b6001600160401b031681526020019081526020015f205f8560200160208101906108d091906133b9565b6001600160a01b0316815260208101919091526040015f205490506108f86276a70082613a69565b4210156109185760405163231d35fb60e11b815260040160405180910390fd5b61012e5f6109296020870187613a3a565b6001600160401b031681526020019081526020015f205f85602001602081019061095391906133b9565b6001600160a01b03908116825260208201929092526040015f20541691508115610cb9576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906109e290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0e90613a7c565b8015610a595780601f10610a3057610100808354040283529160200191610a59565b820191905f5260205f20905b815481529060010190602001808311610a3c57829003601f168201915b50505050508152602001600282018054610a7290613a7c565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9e90613a7c565b8015610ae95780601f10610ac057610100808354040283529160200191610ae9565b820191905f5260205f20905b815481529060010190602001808311610acc57829003601f168201915b505050505081525050905080604051602001610b059190613b13565b6040516020818303038152906040528051906020012085604051602001610b2c9190613b99565b6040516020818303038152906040528051906020012014610b6057604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610b9460018301826132b2565b610ba1600283015f6132b2565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610bd79063b8f2e0c560e01b611c15565b8015610bf85750610bf86001600160a01b03851663b8f2e0c560e01b611c15565b15610cb75760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610c43575f5ffd5b505af1158015610c55573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610cdd8282613d3c565b5083905061012e5f610cf26020880188613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d1c91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610d759190613a3a565b6001600160401b031681526020019081526020015f205f866020016020810190610d9f91906133b9565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610dd591906133b9565b6001600160a01b0316610deb6020860186613a3a565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610e2460608a018a61382a565b610e3160808c018c61382a565b610e4160608e0160408f01613dfa565b604051610e549796959493929190613e15565b60405180910390a35061075360016119fc565b5f6002610e7660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000002163003610ed05760405162461bcd60e51b8152600401610ec790613e6c565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000000026001600160a01b0316610f02611ca2565b6001600160a01b031614610f285760405162461bcd60e51b8152600401610ec790613eb8565b610f3181611cbd565b604080515f80825260208201909252610f4c91839190611cc5565b50565b5f610f5b848484611e2f565b90505b9392505050565b610f6d611e81565b610f77335f611f11565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000002163003610fc15760405162461bcd60e51b8152600401610ec790613e6c565b7f00000000000000000000000001670100000000000000000000000000000000026001600160a01b0316610ff3611ca2565b6001600160a01b0316146110195760405162461bcd60e51b8152600401610ec790613eb8565b61102282611cbd565b61070582826001611cc5565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000000000216146110cd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ec7565b505f5160206149985f395f51905f5290565b6110e7611bbb565b610f775f611f19565b60655433906001600160a01b0316811461115e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ec7565b610f4c81611f19565b61117b60c954610100900460ff1660021490565b156111995760405163bae6e2a960e01b815260040160405180910390fd5b60026111a760c95460ff1690565b60ff16036111c85760405163dfc60d8560e01b815260040160405180910390fd5b6111d260026119fc565b5f8080806111e285870187613f0f565b93509350935093505f6111f3611f32565b90506111fe83612051565b5f61120a868585611b08565b905061121f6001600160a01b03851634611bb0565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161129f94939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a450505050505061070560016119fc565b6112bf61208d565b610f77336001611f11565b5f6112d3611ca2565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161132090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461134c90613a7c565b80156113975780601f1061136e57610100808354040283529160200191611397565b820191905f5260205f20905b81548152906001019060200180831161137a57829003601f168201915b5050505050908060020180546113ac90613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546113d890613a7c565b80156114235780601f106113fa57610100808354040283529160200191611423565b820191905f5260205f20905b81548152906001019060200180831161140657829003601f168201915b5050505050905085565b5f610f5e468484611e2f565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a760c954610100900460ff1660021490565b156114c55760405163bae6e2a960e01b815260040160405180910390fd5b60026114d360c95460ff1690565b60ff16036114f45760405163dfc60d8560e01b815260040160405180910390fd5b6114fe60026119fc565b8160c001355f0361152257604051634299323b60e11b815260040160405180910390fd5b5f61153360a08401608085016133b9565b6001600160a01b03160361155a576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61156e60a08501608086016133b9565b6001600160a01b0316815260208101919091526040015f205460ff16156115a8576040516375c42fc160e01b815260040160405180910390fd5b6115b86080830160608401613a3a565b6001600160401b03163410156115e157604051630178ce0b60e31b815260040160405180910390fd5b5f5f5f6115ed856120fe565b6040805161016081019091525f8082529396509194509250602081016116196080890160608a01613a3a565b6001600160401b0316815260200161163760c0890160a08a01614014565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061166890890189613a3a565b6001600160401b031681526020015f6001600160a01b031688602001602081019061169391906133b9565b6001600160a01b0316036116a757336116b7565b6116b76040890160208a016133b9565b6001600160a01b031681526020908101906116ee906116d8908a018a613a3a565b6a195c98cc8c17dd985d5b1d60aa1b5b5f610f4f565b6001600160a01b0316815260200161170c6080890160608a01613a3a565b61171f906001600160401b03163461402f565b815260200185905290505f61173d6562726964676560d01b8261142d565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401611769919061371e565b5f6040518083038185885af1158015611784573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117ac919081019061404d565b965090506117c060608801604089016133b9565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f01602081019061180f9190613a3a565b89602001518d608001602081019061182791906133b9565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a4505050505061187760016119fc565b919050565b5f54610100900460ff161580801561189a57505f54600160ff909116105b806118b35750303b1580156118b357505f5460ff166001145b6119165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ec7565b5f805460ff191660011790558015611937575f805461ff0019166101001790555b6119418383612598565b8015611986575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611993611bbb565b606580546001600160a01b0383166001600160a01b031990911681179091556119c46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611a4381600161142d565b6001600160a01b0316336001600160a01b031614611a7457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ab0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ad4919061416d565b60208101519092506001600160a01b03163314611b0457604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611b3b57506020830151611b366001600160a01b03821684846125d2565b611ba6565b611b4484612635565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611b8f575f5ffd5b505af1158015611ba1573d5f5f3e3d5ffd5b505050505b610f5e8183612677565b61070582825a612706565b6033546001600160a01b03163314610f775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ec7565b5f6001600160a01b0383163b611c2c57505f610753565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa925050508015611c96575060408051601f3d908101601f19168201909252611c93918101906141d5565b60015b15610753579392505050565b5f5160206149985f395f51905f52546001600160a01b031690565b610f4c611bbb565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611cf85761198683612749565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d52575060408051601f3d908101601f19168201909252611d4f918101906141f0565b60015b611db55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ec7565b5f5160206149985f395f51905f528114611e235760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ec7565b506119868383836127e4565b5f611e3a848461280e565b905081158015611e5157506001600160a01b038116155b15610f5e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ec7565b611e9560c954610100900460ff1660021490565b611eb25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610705611bbb565b606580546001600160a01b0319169055610f4c816128b8565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611f6381600161142d565b6001600160a01b0316336001600160a01b031614611f9457604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff4919061416d565b91505f61201483604001516116e86a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b03161461204c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b038116158061206f57506001600160a01b03811630145b15610f4c57604051635b50f3f960e01b815260040160405180910390fd5b6120a160c954610100900460ff1660021490565b156120bf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611f07565b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d8161214060a08801608089016133b9565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615612376576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff1691810191909152600182018054839160608401916121c090613a7c565b80601f01602080910402602001604051908101604052809291908181526020018280546121ec90613a7c565b80156122375780601f1061220e57610100808354040283529160200191612237565b820191905f5260205f20905b81548152906001019060200180831161221a57829003601f168201915b5050505050815260200160028201805461225090613a7c565b80601f016020809104026020016040519081016040528092919081815260200182805461227c90613a7c565b80156122c75780601f1061229e576101008083540402835291602001916122c7565b820191905f5260205f20905b8154815290600101906020018083116122aa57829003601f168201915b505050505081525050925061230033308760c001358860800160208101906122ef91906133b9565b6001600160a01b0316929190612909565b61231060a08601608087016133b9565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b158015612354575f5ffd5b505af1158015612366573d5f5f3e3d5ffd5b505050508460c001359150612518565b6040518060a00160405280466001600160401b031681526020018660800160208101906123a391906133b9565b6001600160a01b031681526020016123c96123c460a0890160808a016133b9565b612941565b60ff1681526020016123e96123e460a0890160808a016133b9565b6129f5565b815260200161240661240160a0890160808a016133b9565b612a9f565b905292505f61241b60a08701608088016133b9565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa158015612462573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248691906141f0565b90506124a16001600160a01b038316333060c08b0135612909565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156124e5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061250991906141f0565b612513919061402f565b935050505b30637f07c947843361253060608a0160408b016133b9565b866040516020016125449493929190614207565b60408051601f19818403018152908290526125619160240161423c565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b806001600160a01b0381166125c05760405163538ba4f960e01b815260040160405180910390fd5b6125c983612ae5565b61198682612b43565b6040516001600160a01b03831660248201526044810182905261198690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612bb3565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b03908116855292529091205416806118775761075382612c86565b5f6126936c38bab7ba30afb6b0b730b3b2b960991b600161142d565b90506001600160a01b03811615611986576040516315c638fb60e31b81526001600160a01b0384811660048301526024820184905282169063ae31c7d8906044015f604051808303815f87803b1580156126eb575f5ffd5b505af11580156126fd573d5f5f3e3d5ffd5b50505050505050565b815f0361271257505050565b61272c83838360405180602001604052805f815250612e88565b61198657604051634c67134d60e11b815260040160405180910390fd5b6001600160a01b0381163b6127b65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ec7565b5f5160206149985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127ed83612ec5565b5f825111806127f95750805b15611986576128088383612f04565b50505050565b6097545f906001600160a01b03168061283a57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561288c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b0919061424e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526128089085906323b872dd60e01b906084016125fe565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916129869190614269565b5f60405180830381855afa9150503d805f81146129be576040519150601f19603f3d011682016040523d82523d5f602084013e6129c3565b606091505b50915091508180156129d6575080516020145b6129e15760126128b0565b808060200190518101906128b09190614284565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f60405180830381855afa9150503d805f8114612a73576040519150601f19603f3d011682016040523d82523d5f602084013e612a78565b606091505b509150915081612a965760405180602001604052805f8152506128b0565b6128b081612f29565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691612a3b9190614269565b5f54610100900460ff16612b0b5760405162461bcd60e51b8152600401610ec79061429f565b612b13613096565b612b316001600160a01b03821615612b2b5781611f19565b33611f19565b5060c9805461ff001916610100179055565b5f54610100900460ff16612b695760405162461bcd60e51b8152600401610ec79061429f565b6001600160401b03461115612b915760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f612c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166130bc9092919063ffffffff16565b905080515f1480612c27575080806020019051810190612c2791906141d5565b6119865760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ec7565b5f5f612c9a6033546001600160a01b031690565b60975460208501518551604080880151606089015160808a01519251612cd097966001600160a01b0316959493906024016142ea565b60408051601f198184030181529190526020810180516001600160e01b031663bb86ef9360e01b1790529050612d166c0627269646765645f657263323609c1b5f61142d565b81604051612d23906132e9565b612d2e929190614355565b604051809103905ff080158015612d47573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612dc99082614378565b5060808201516002820190612dde9082614378565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612e7a9391929190614432565b60405180910390a450919050565b5f6001600160a01b038516612eb057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612ece81612749565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610f5e83836040518060600160405280602781526020016149b8602791396130ca565b60606040825110612f485781806020019051810190610753919061446a565b8151602003613083575f5b60208160ff16108015612f885750828160ff1681518110612f7657612f7661449b565b01602001516001600160f81b03191615155b15612f9f5780612f97816144af565b915050612f53565b5f8160ff166001600160401b03811115612fbb57612fbb61347b565b6040519080825280601f01601f191660200182016040528015612fe5576020820181803683370190505b5090505f91505b60208260ff161080156130215750838260ff168151811061300f5761300f61449b565b01602001516001600160f81b03191615155b15610f5e57838260ff168151811061303b5761303b61449b565b602001015160f81c60f81b818360ff168151811061305b5761305b61449b565b60200101906001600160f81b03191690815f1a9053508161307b816144af565b925050612fec565b505060408051602081019091525f815290565b5f54610100900460ff16610f775760405162461bcd60e51b8152600401610ec79061429f565b6060610f5b84845f8561313e565b60605f5f856001600160a01b0316856040516130e69190614269565b5f60405180830381855af49150503d805f811461311e576040519150601f19603f3d011682016040523d82523d5f602084013e613123565b606091505b509150915061313486838387613215565b9695505050505050565b60608247101561319f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ec7565b5f5f866001600160a01b031685876040516131ba9190614269565b5f6040518083038185875af1925050503d805f81146131f4576040519150601f19603f3d011682016040523d82523d5f602084013e6131f9565b606091505b509150915061320a87838387613215565b979650505050505050565b606083156132835782515f0361327c576001600160a01b0385163b61327c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ec7565b50816128b0565b6128b083838151156132985781518083602001fd5b8060405162461bcd60e51b8152600401610ec7919061423c565b5080546132be90613a7c565b5f825580601f106132cd575050565b601f0160209004905f5260205f2090810190610f4c91906132f6565b6104ca806144ce83390190565b5b80821115611b04575f81556001016132f7565b5f5f6040838503121561331b575f5ffd5b82356001600160401b03811115613330575f5ffd5b83016101608186031215613342575f5ffd5b946020939093013593505050565b5f60208284031215613360575f5ffd5b81356001600160e01b031981168114610f5e575f5ffd5b6001600160a01b0381168114610f4c575f5ffd5b5f5f6040838503121561339c575f5ffd5b8235915060208301356133ae81613377565b809150509250929050565b5f602082840312156133c9575f5ffd5b8135610f5e81613377565b5f5f604083850312156133e5575f5ffd5b82356001600160401b038111156133fa575f5ffd5b830160a0818603121561340b575f5ffd5b915060208301356133ae81613377565b6001600160401b0381168114610f4c575f5ffd5b8015158114610f4c575f5ffd5b5f5f5f6060848603121561344e575f5ffd5b83356134598161341b565b92506020840135915060408401356134708161342f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156134b1576134b161347b565b60405290565b60405161016081016001600160401b03811182821017156134b1576134b161347b565b604051601f8201601f191681016001600160401b03811182821017156135025761350261347b565b604052919050565b5f6001600160401b038211156135225761352261347b565b50601f01601f191660200190565b5f82601f83011261353f575f5ffd5b8135602083015f6135576135528461350a565b6134da565b905082815285838301111561356a575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613595575f5ffd5b82356135a081613377565b915060208301356001600160401b038111156135ba575f5ffd5b6135c685828601613530565b9150509250929050565b5f5f602083850312156135e1575f5ffd5b82356001600160401b038111156135f6575f5ffd5b8301601f81018513613606575f5ffd5b80356001600160401b0381111561361b575f5ffd5b85602082840101111561362c575f5ffd5b6020919091019590945092505050565b5f5b8381101561365657818101518382015260200161363e565b50505f910152565b5f815180845261367581602086016020860161363c565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f906136c49083018561365e565b82810360808401526136d6818561365e565b98975050505050505050565b5f5f604083850312156136f3575f5ffd5b8235915060208301356133ae8161342f565b5f60e0828403128015613716575f5ffd5b509092915050565b602081526137386020820183516001600160401b03169052565b5f602083015161375360408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526128b061018084018261365e565b5f5f6040838503121561381f575f5ffd5b823561340b81613377565b5f5f8335601e1984360301811261383f575f5ffd5b8301803591506001600160401b03821115613858575f5ffd5b60200191503681900382131561386c575f5ffd5b9250929050565b5f5f85851115613881575f5ffd5b8386111561388d575f5ffd5b5050820193919092039150565b5f602082840312156138aa575f5ffd5b81356001600160401b038111156138bf575f5ffd5b6128b084828501613530565b80516118778161341b565b805161187781613377565b60ff81168114610f4c575f5ffd5b8051611877816138e1565b5f82601f830112613909575f5ffd5b8151602083015f61391c6135528461350a565b905082815285838301111561392f575f5ffd5b61393d83602083018461363c565b95945050505050565b5f5f5f5f60808587031215613959575f5ffd5b84516001600160401b0381111561396e575f5ffd5b850160a0818803121561397f575f5ffd5b61398761348f565b81516139928161341b565b815260208201516139a281613377565b60208201526139b3604083016138ef565b604082015260608201516001600160401b038111156139d0575f5ffd5b6139dc898285016138fa565b60608301525060808201516001600160401b038111156139fa575f5ffd5b613a06898285016138fa565b6080830152509450613a1c9050602086016138d6565b9250613a2a604086016138d6565b6060959095015193969295505050565b5f60208284031215613a4a575f5ffd5b8135610f5e8161341b565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561075357610753613a55565b600181811c90821680613a9057607f821691505b602082108103613aae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a06060850152613afa60a085018261365e565b90506080830151848203608086015261393d828261365e565b602081525f610f5e6020830184613ab4565b8035611877816138e1565b5f5f8335601e19843603018112613b45575f5ffd5b83016020810192503590506001600160401b03811115613b63575f5ffd5b80360382131561386c575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f8235613ba98161341b565b6001600160401b0381166020840152506020830135613bc781613377565b6001600160a01b0316604083810191909152830135613be5816138e1565b60ff8116606084015250613bfc6060840184613b30565b60a06080850152613c1160c085018284613b71565b915050613c216080850185613b30565b848303601f190160a0860152613134838284613b71565b601f82111561198657805f5260205f20601f840160051c81016020851015613c5d5750805b601f840160051c820191505b81811015613c7c575f8155600101613c69565b5050505050565b6001600160401b03831115613c9a57613c9a61347b565b613cae83613ca88354613a7c565b83613c38565b5f601f841160018114613cdf575f8515613cc85750838201355b5f19600387901b1c1916600186901b178355613c7c565b5f83815260208120601f198716915b82811015613d0e5786850135825560209485019460019092019101613cee565b5086821015613d2a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135613d478161341b565b6001600160401b03811690508154816001600160401b031982161783556020840135613d7281613377565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613da9816138e1565b825460ff60e01b191660e09190911b60ff60e01b1617825550613dcf606083018361382a565b613ddd818360018601613c83565b5050613dec608083018361382a565b612808818360028601613c83565b5f60208284031215613e0a575f5ffd5b8135610f5e816138e1565b6001600160a01b0388811682528716602082015260a0604082018190525f90613e419083018789613b71565b8281036060840152613e54818688613b71565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b803561187781613377565b5f5f5f5f60808587031215613f22575f5ffd5b84356001600160401b03811115613f37575f5ffd5b850160a08188031215613f48575f5ffd5b613f5061348f565b8135613f5b8161341b565b81526020820135613f6b81613377565b6020820152613f7c60408301613b25565b604082015260608201356001600160401b03811115613f99575f5ffd5b613fa589828501613530565b60608301525060808201356001600160401b03811115613fc3575f5ffd5b613fcf89828501613530565b6080830152509450613fe5905060208601613f04565b9250613ff360408601613f04565b9396929550929360600135925050565b63ffffffff81168114610f4c575f5ffd5b5f60208284031215614024575f5ffd5b8135610f5e81614003565b8181038181111561075357610753613a55565b805161187781614003565b5f5f6040838503121561405e575f5ffd5b825160208401519092506001600160401b0381111561407b575f5ffd5b8301610160818603121561408d575f5ffd5b6140956134b7565b61409e826138cb565b81526140ac602083016138cb565b60208201526140bd60408301614042565b60408201526140ce606083016138d6565b60608201526140df608083016138cb565b60808201526140f060a083016138d6565b60a082015261410160c083016138cb565b60c082015261411260e083016138d6565b60e082015261412461010083016138d6565b61010082015261012082810151908201526101408201516001600160401b0381111561414e575f5ffd5b61415a878285016138fa565b6101408301525080925050509250929050565b5f606082840312801561417e575f5ffd5b50604051606081016001600160401b03811182821017156141a1576141a161347b565b6040528251815260208301516141b681613377565b602082015260408301516141c98161341b565b60408201529392505050565b5f602082840312156141e5575f5ffd5b8151610f5e8161342f565b5f60208284031215614200575f5ffd5b5051919050565b608081525f6142196080830187613ab4565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f610f5e602083018461365e565b5f6020828403121561425e575f5ffd5b8151610f5e81613377565b5f825161427a81846020870161363c565b9190910192915050565b5f60208284031215614294575f5ffd5b8151610f5e816138e1565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0388811682528781166020830152861660408201526001600160401b038516606082015260ff8416608082015260e060a082018190525f906143359083018561365e565b82810360c0840152614347818561365e565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190525f90610f5b9083018461365e565b81516001600160401b038111156143915761439161347b565b6143a58161439f8454613a7c565b84613c38565b6020601f8211600181146143d7575f83156143c05750848201515b5f19600385901b1c1916600184901b178455613c7c565b5f84815260208120601f198516915b8281101561440657878501518255602094850194600190920191016143e6565b508482101561442357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f614444606083018661365e565b8281036020840152614456818661365e565b91505060ff83166040830152949350505050565b5f6020828403121561447a575f5ffd5b81516001600160401b0381111561448f575f5ffd5b6128b0848285016138fa565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff81036144c4576144c4613a55565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b8d385d4f2d6cc75f0553b0f75a9defc23ce602bcb05516f25f5e40cac657bef64736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000002": { + "0x1670100000000000000000000000000000000002": { "contractName": "ERC20Vault", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000002" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000002" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000000003": { + "0x0167010000000000000000000000000000000003": { "contractName": "ERC721VaultImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c39781461047f578063f09a40161461049c578063f2fde38b146104bb575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d366004612930565b6104da565b005b34801561019f575f5ffd5b506101b36101ae366004612976565b61068d565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d366004612a00565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a6d565b6106dd565b6040516101bf9190612af1565b348015610262575f5ffd5b506101b3610b63565b348015610276575f5ffd5b50610192610285366004612be1565b610b7b565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612c28565b610c4b565b3480156102eb575f5ffd5b50610192610c61565b610192610302366004612d93565b610c75565b348015610312575f5ffd5b506101e5610d2a565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612ddf565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610ddb565b34801561039a575f5ffd5b50610192610dec565b6101926103b1366004612e0d565b610e63565b3480156103c1575f5ffd5b50610192610fcc565b3480156103d5575f5ffd5b506102a9610fdf565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612be1565b610fed565b6040516101bf9493929190612e4b565b348015610435575f5ffd5b506102a9610444366004612e9a565b611138565b348015610454575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bf565b34801561048a575f5ffd5b506065546001600160a01b03166102a9565b3480156104a7575f5ffd5b506101926104b6366004612ebd565b611144565b3480156104c6575f5ffd5b506101926104d5366004612be1565b611253565b6104ee60c954610100900460ff1660021490565b1561050c5760405163bae6e2a960e01b815260040160405180910390fd5b600261051a60c95460ff1690565b60ff160361053b5760405163dfc60d8560e01b815260040160405180910390fd5b61054560026112c4565b61054d6112da565b505f61055d610140840184612ee9565b61056b916004908290612f2b565b8101906105789190612f52565b90505f5f82806020019051810190610590919061306c565b9350505091505f6105b4838760a00160208101906105ae9190612be1565b846113d0565b90506105de6101208701356105cf60c0890160a08a01612be1565b6001600160a01b031690611547565b6105ee60c0870160a08801612be1565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561063957610639612c67565b604051908082528060200260200182016040528015610662578160200160208202803683370190505b5060405161067394939291906131ab565b60405180910390a35050505061068960016112c4565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106bc57506001600160e01b03198216637f07c94760e01b145b806106d757506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261074b60c954610100900460ff1660021490565b156107695760405163bae6e2a960e01b815260040160405180910390fd5b6107728261325f565b8060e00151518160c00151511461079c5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107c7576040516303f8a7d360e01b815260040160405180910390fd5b60026107d560c95460ff1690565b60ff16036107f65760405163dfc60d8560e01b815260040160405180910390fd5b61080060026112c4565b6108106080840160608501613332565b6001600160401b031634101561083957604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084860c085018561334d565b905081101561089c5761085e60e085018561334d565b8281811061086e5761086e613392565b905060200201355f1461089457604051634299323b60e11b815260040160405180910390fd5b60010161083b565b506108c76380ac58cd60e01b6108b860a0860160808701612be1565b6001600160a01b031690611552565b6108e457604051633ee915f560e11b815260040160405180910390fd5b5f5f6108ef85611622565b6040805161016081019091525f808252929450909250602081016109196080890160608a01613332565b6001600160401b0316815260200161093760c0890160a08a016133a6565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096890890189613332565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109939190612be1565b6001600160a01b0316036109a757336109b7565b6109b76040890160208a01612be1565b6001600160a01b031681526020908101906109ef906109d8908a018a613332565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c4b565b6001600160a01b03168152602001610a0d6080890160608a01613332565b610a20906001600160401b0316346133d5565b815260200184905290505f610a3e6562726964676560d01b82611138565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a6a9190612af1565b5f6040518083038185885af1158015610a85573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610aad91908101906133f3565b96509050610ac16060880160408901612be1565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b179190612be1565b610b2460c08f018f61334d565b8f8060e00190610b34919061334d565b604051610b479796959493929190613543565b60405180910390a450505050610b5d60016112c4565b50919050565b5f6002610b7260c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610bcc5760405162461bcd60e51b8152600401610bc39061359f565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610bfe611b04565b6001600160a01b031614610c245760405162461bcd60e51b8152600401610bc3906135eb565b610c2d81611b1f565b604080515f80825260208201909252610c4891839190611b27565b50565b5f610c57848484611c91565b90505b9392505050565b610c69611ced565b610c73335f611d7d565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610cbd5760405162461bcd60e51b8152600401610bc39061359f565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610cef611b04565b6001600160a01b031614610d155760405162461bcd60e51b8152600401610bc3906135eb565b610d1e82611b1f565b61068982826001611b27565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610dc95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bc3565b505f51602061403f5f395f51905f5290565b610de3611d81565b610c735f611ddb565b60655433906001600160a01b03168114610e5a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bc3565b610c4881611ddb565b610e7760c954610100900460ff1660021490565b15610e955760405163bae6e2a960e01b815260040160405180910390fd5b6002610ea360c95460ff1690565b60ff1603610ec45760405163dfc60d8560e01b815260040160405180910390fd5b610ece60026112c4565b5f808080610ede85870187613637565b93509350935093505f610eef611df4565b9050610efa83611f14565b5f610f068685856113d0565b9050610f1b6001600160a01b03851634611547565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f7957610f79612c67565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b50604051610fb4959493929190613730565b60405180910390a450505050505061068960016112c4565b610fd4611f50565b610c73336001611d7d565b5f610fe8611b04565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061102b90613788565b80601f016020809104026020016040519081016040528092919081815260200182805461105790613788565b80156110a25780601f10611079576101008083540402835291602001916110a2565b820191905f5260205f20905b81548152906001019060200180831161108557829003601f168201915b5050505050908060020180546110b790613788565b80601f01602080910402602001604051908101604052809291908181526020018280546110e390613788565b801561112e5780601f106111055761010080835404028352916020019161112e565b820191905f5260205f20905b81548152906001019060200180831161111157829003601f168201915b5050505050905084565b5f610c5a468484611c91565b5f54610100900460ff161580801561116257505f54600160ff909116105b8061117b5750303b15801561117b57505f5460ff166001145b6111de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bc3565b5f805460ff1916600117905580156111ff575f805461ff0019166101001790555b6112098383611fc1565b801561124e575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61125b611d81565b606580546001600160a01b0383166001600160a01b0319909116811790915561128c6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61130b816001611138565b6001600160a01b0316336001600160a01b03161461133c57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611378573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139c91906137ba565b60208101519092506001600160a01b031633146113cc57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b031603611496575060208301515f5b825181101561149057816001600160a01b03166342842e0e308686858151811061141857611418613392565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b15801561146f575f5ffd5b505af1158015611481573d5f5f3e3d5ffd5b505050508060010190506113ec565b50610c5a565b61149f84611ffb565b90505f5b825181101561153f57816001600160a01b03166340c10f19858584815181106114ce576114ce613392565b60200260200101516040518363ffffffff1660e01b81526004016115079291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561151e575f5ffd5b505af1158015611530573d5f5f3e3d5ffd5b505050508060010190506114a3565b509392505050565b61068982825a612042565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115ae9190613822565b5f60405180830381855afa9150503d805f81146115e6576040519150601f19603f3d011682016040523d82523d5f602084013e6115eb565b606091505b50915091508180156115fe575080516020145b1561161a5780806020019051810190611617919061383d565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161165860a0870160808801612be1565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615611939576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116c990613788565b80601f01602080910402602001604051908101604052809291908181526020018280546116f590613788565b80156117405780601f1061171757610100808354040283529160200191611740565b820191905f5260205f20905b81548152906001019060200180831161172357829003601f168201915b5050505050815260200160028201805461175990613788565b80601f016020809104026020016040519081016040528092919081815260200182805461178590613788565b80156117d05780601f106117a7576101008083540402835291602001916117d0565b820191905f5260205f20905b8154815290600101906020018083116117b357829003601f168201915b50505050508152505091505f5b6117ea60c086018661334d565b90508110156119335761180360a0860160808701612be1565b6001600160a01b03166342842e0e333061182060c08a018a61334d565b8681811061183057611830613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611884575f5ffd5b505af1158015611896573d5f5f3e3d5ffd5b506118ab9250505060a0860160808701612be1565b6001600160a01b03166342966c686118c660c088018861334d565b848181106118d6576118d6613392565b905060200201356040518263ffffffff1660e01b81526004016118fb91815260200190565b5f604051808303815f87803b158015611912575f5ffd5b505af1158015611924573d5f5f3e3d5ffd5b505050508060010190506117dd565b50611a79565b6040518060800160405280466001600160401b031681526020018560800160208101906119669190612be1565b6001600160a01b0316815260200161198c61198760a0880160808901612be1565b612085565b81526020016119a96119a460a0880160808901612be1565b612137565b905291505f5b6119bc60c086018661334d565b9050811015611a77576119d560a0860160808701612be1565b6001600160a01b03166342842e0e33306119f260c08a018a61334d565b86818110611a0257611a02613392565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a56575f5ffd5b505af1158015611a68573d5f5f3e3d5ffd5b505050508060010190506119af565b505b5030637f07c9478233611a926060880160408901612be1565b611a9f60c089018961334d565b604051602001611ab3959493929190613858565b60408051601f1981840301815290829052611ad0916024016138e9565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061403f5f395f51905f52546001600160a01b031690565b610c48611d81565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b5a5761124e8361217d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bb4575060408051601f3d908101601f19168201909252611bb1918101906138fb565b60015b611c175760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bc3565b5f51602061403f5f395f51905f528114611c855760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bc3565b5061124e838383612218565b5f611c9c8484612242565b90508180611cb257506001600160a01b03811615155b84849091611ce457604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610bc3565b50509392505050565b611d0160c954610100900460ff1660021490565b611d1e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106895b6033546001600160a01b03163314610c735760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bc3565b606580546001600160a01b0319169055610c48816122e4565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e25816001611138565b6001600160a01b0316336001600160a01b031614611e5657604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb691906137ba565b91505f611ed783604001516109e96b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611f0f57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611f3257506001600160a01b03811630145b15610c4857604051635b50f3f960e01b815260040160405180910390fd5b611f6460c954610100900460ff1660021490565b15611f825760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d73565b806001600160a01b038116611fe95760405163538ba4f960e01b815260040160405180910390fd5b611ff283612335565b61124e82612393565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061203d576106d782612403565b919050565b815f0361204e57505050565b61206883838360405180602001604052805f8152506125de565b61124e57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b5f60405180830381855afa9150503d805f8114612103576040519150601f19603f3d011682016040523d82523d5f602084013e612108565b606091505b5091509150816121265760405180602001604052805f81525061212f565b61212f8161261b565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120cb9190613822565b6001600160a01b0381163b6121ea5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bc3565b5f51602061403f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61222183612788565b5f8251118061222d5750805b1561124e5761223c83836127c7565b50505050565b6097545f906001600160a01b03168061226e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa1580156122c0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212f9190613912565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661235b5760405162461bcd60e51b8152600401610bc39061392d565b6123636127ec565b6123816001600160a01b0382161561237b5781611ddb565b33611ddb565b5060c9805461ff001916610100179055565b5f54610100900460ff166123b95760405162461bcd60e51b8152600401610bc39061392d565b6001600160401b034611156123e15760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6124176033546001600160a01b031690565b609754602085015185516040808801516060890151915161244896956001600160a01b031694939290602401613978565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b179052905061248f6d627269646765645f65726337323160901b5f611138565b8160405161249c90612923565b6124a79291906139d9565b604051809103905ff0801580156124c0573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906125249082613a47565b50606082015160028201906125399082613a47565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125d09290613b01565b60405180910390a450919050565b5f6001600160a01b03851661260657604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061263a57818060200190518101906106d79190613b25565b8151602003612775575f5b60208160ff1610801561267a5750828160ff168151811061266857612668613392565b01602001516001600160f81b03191615155b15612691578061268981613b56565b915050612645565b5f8160ff166001600160401b038111156126ad576126ad612c67565b6040519080825280601f01601f1916602001820160405280156126d7576020820181803683370190505b5090505f91505b60208260ff161080156127135750838260ff168151811061270157612701613392565b01602001516001600160f81b03191615155b15610c5a57838260ff168151811061272d5761272d613392565b602001015160f81c60f81b818360ff168151811061274d5761274d613392565b60200101906001600160f81b03191690815f1a9053508161276d81613b56565b9250506126de565b505060408051602081019091525f815290565b6127918161217d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c5a838360405180606001604052806027815260200161405f60279139612812565b5f54610100900460ff16610c735760405162461bcd60e51b8152600401610bc39061392d565b60605f5f856001600160a01b03168560405161282e9190613822565b5f60405180830381855af49150503d805f8114612866576040519150601f19603f3d011682016040523d82523d5f602084013e61286b565b606091505b509150915061287c86838387612886565b9695505050505050565b606083156128f45782515f036128ed576001600160a01b0385163b6128ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bc3565b508161212f565b61212f83838151156129095781518083602001fd5b8060405162461bcd60e51b8152600401610bc391906138e9565b6104ca80613b7583390190565b5f5f60408385031215612941575f5ffd5b82356001600160401b03811115612956575f5ffd5b83016101608186031215612968575f5ffd5b946020939093013593505050565b5f60208284031215612986575f5ffd5b81356001600160e01b031981168114610c5a575f5ffd5b6001600160a01b0381168114610c48575f5ffd5b803561203d8161299d565b5f5f83601f8401126129cc575f5ffd5b5081356001600160401b038111156129e2575f5ffd5b6020830191508360208285010111156129f9575f5ffd5b9250929050565b5f5f5f5f5f60808688031215612a14575f5ffd5b8535612a1f8161299d565b94506020860135612a2f8161299d565b93506040860135925060608601356001600160401b03811115612a50575f5ffd5b612a5c888289016129bc565b969995985093965092949392505050565b5f60208284031215612a7d575f5ffd5b81356001600160401b03811115612a92575f5ffd5b82016101008185031215610c5a575f5ffd5b5f5b83811015612abe578181015183820152602001612aa6565b50505f910152565b5f8151808452612add816020860160208601612aa4565b601f01601f19169290920160200192915050565b60208152612b0b6020820183516001600160401b03169052565b5f6020830151612b2660408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b038116610120840152506101208301516101408301526101408301516101608084015261212f610180840182612ac6565b5f60208284031215612bf1575f5ffd5b8135610c5a8161299d565b6001600160401b0381168114610c48575f5ffd5b803561203d81612bfc565b8015158114610c48575f5ffd5b5f5f5f60608486031215612c3a575f5ffd5b8335612c4581612bfc565b9250602084013591506040840135612c5c81612c1b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c9d57612c9d612c67565b60405290565b60405161010081016001600160401b0381118282101715612c9d57612c9d612c67565b60405161016081016001600160401b0381118282101715612c9d57612c9d612c67565b604051601f8201601f191681016001600160401b0381118282101715612d1157612d11612c67565b604052919050565b5f6001600160401b03821115612d3157612d31612c67565b50601f01601f191660200190565b5f82601f830112612d4e575f5ffd5b8135602083015f612d66612d6184612d19565b612ce9565b9050828152858383011115612d79575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612da4575f5ffd5b8235612daf8161299d565b915060208301356001600160401b03811115612dc9575f5ffd5b612dd585828601612d3f565b9150509250929050565b5f5f60408385031215612df0575f5ffd5b823591506020830135612e028161299d565b809150509250929050565b5f5f60208385031215612e1e575f5ffd5b82356001600160401b03811115612e33575f5ffd5b612e3f858286016129bc565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e7d90830185612ac6565b8281036060840152612e8f8185612ac6565b979650505050505050565b5f5f60408385031215612eab575f5ffd5b823591506020830135612e0281612c1b565b5f5f60408385031215612ece575f5ffd5b8235612ed98161299d565b91506020830135612e028161299d565b5f5f8335601e19843603018112612efe575f5ffd5b8301803591506001600160401b03821115612f17575f5ffd5b6020019150368190038213156129f9575f5ffd5b5f5f85851115612f39575f5ffd5b83861115612f45575f5ffd5b5050820193919092039150565b5f60208284031215612f62575f5ffd5b81356001600160401b03811115612f77575f5ffd5b61212f84828501612d3f565b805161203d81612bfc565b805161203d8161299d565b5f82601f830112612fa8575f5ffd5b8151602083015f612fbb612d6184612d19565b9050828152858383011115612fce575f5ffd5b612fdc836020830184612aa4565b95945050505050565b5f6001600160401b03821115612ffd57612ffd612c67565b5060051b60200190565b5f82601f830112613016575f5ffd5b8151613024612d6182612fe5565b8082825260208201915060208360051b860101925085831115613045575f5ffd5b602085015b8381101561306257805183526020928301920161304a565b5095945050505050565b5f5f5f5f6080858703121561307f575f5ffd5b84516001600160401b03811115613094575f5ffd5b8501608081880312156130a5575f5ffd5b6130ad612c7b565b81516130b881612bfc565b815260208201516130c88161299d565b602082015260408201516001600160401b038111156130e5575f5ffd5b6130f189828501612f99565b60408301525060608201516001600160401b0381111561310f575f5ffd5b61311b89828501612f99565b6060830152509450613131905060208601612f8e565b925061313f60408601612f8e565b915060608501516001600160401b03811115613159575f5ffd5b61316587828801613007565b91505092959194509250565b5f8151808452602084019350602083015f5b828110156131a1578151865260209586019590910190600101613183565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131d690830185613171565b8281036060840152612e8f8185613171565b63ffffffff81168114610c48575f5ffd5b803561203d816131e8565b5f82601f830112613213575f5ffd5b8135613221612d6182612fe5565b8082825260208201915060208360051b860101925085831115613242575f5ffd5b602085015b83811015613062578035835260209283019201613247565b5f6101008236031215613270575f5ffd5b613278612ca3565b61328183612c10565b815261328f602084016129b1565b60208201526132a0604084016129b1565b60408201526132b160608401612c10565b60608201526132c2608084016129b1565b60808201526132d360a084016131f9565b60a082015260c08301356001600160401b038111156132f0575f5ffd5b6132fc36828601613204565b60c08301525060e08301356001600160401b0381111561331a575f5ffd5b61332636828601613204565b60e08301525092915050565b5f60208284031215613342575f5ffd5b8135610c5a81612bfc565b5f5f8335601e19843603018112613362575f5ffd5b8301803591506001600160401b0382111561337b575f5ffd5b6020019150600581901b36038213156129f9575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156133b6575f5ffd5b8135610c5a816131e8565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106d7576106d76133c1565b805161203d816131e8565b5f5f60408385031215613404575f5ffd5b825160208401519092506001600160401b03811115613421575f5ffd5b83016101608186031215613433575f5ffd5b61343b612cc6565b61344482612f83565b815261345260208301612f83565b6020820152613463604083016133e8565b604082015261347460608301612f8e565b606082015261348560808301612f83565b608082015261349660a08301612f8e565b60a08201526134a760c08301612f83565b60c08201526134b860e08301612f8e565b60e08201526134ca6101008301612f8e565b61010082015261012082810151908201526101408201516001600160401b038111156134f4575f5ffd5b61350087828501612f99565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561352a575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061357e9083018688613513565b8281036080840152613591818587613513565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f6080858703121561364a575f5ffd5b84356001600160401b0381111561365f575f5ffd5b850160808188031215613670575f5ffd5b613678612c7b565b813561368381612bfc565b815260208201356136938161299d565b602082015260408201356001600160401b038111156136b0575f5ffd5b6136bc89828501612d3f565b60408301525060608201356001600160401b038111156136da575f5ffd5b6136e689828501612d3f565b60608301525094506136fc9050602086016129b1565b925061370a604086016129b1565b915060608501356001600160401b03811115613724575f5ffd5b61316587828801613204565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061376a90830185613171565b828103608084015261377c8185613171565b98975050505050505050565b600181811c9082168061379c57607f821691505b602082108103610b5d57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156137cb575f5ffd5b50604051606081016001600160401b03811182821017156137ee576137ee612c67565b6040528251815260208301516138038161299d565b6020820152604083015161381681612bfc565b60408201529392505050565b5f8251613833818460208701612aa4565b9190910192915050565b5f6020828403121561384d575f5ffd5b8151610c5a81612c1b565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613899610100840182612ac6565b90506060880151607f198483030160e08501526138b68282612ac6565b6001600160a01b0389811660208701528816604086015291506138d69050565b828103606084015261377c818587613513565b602081525f610c5a6020830184612ac6565b5f6020828403121561390b575f5ffd5b5051919050565b5f60208284031215613922575f5ffd5b8151610c5a8161299d565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f906139ba90830185612ac6565b82810360a08401526139cc8185612ac6565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5790830184612ac6565b601f82111561124e57805f5260205f20601f840160051c81016020851015613a215750805b601f840160051c820191505b81811015613a40575f8155600101613a2d565b5050505050565b81516001600160401b03811115613a6057613a60612c67565b613a7481613a6e8454613788565b846139fc565b6020601f821160018114613aa6575f8315613a8f5750848201515b5f19600385901b1c1916600184901b178455613a40565b5f84815260208120601f198516915b82811015613ad55787850151825560209485019460019092019101613ab5565b5084821015613af257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613b136040830185612ac6565b8281036020840152612fdc8185612ac6565b5f60208284031215613b35575f5ffd5b81516001600160401b03811115613b4a575f5ffd5b61212f84828501612f99565b5f60ff821660ff8103613b6b57613b6b6133c1565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203cd495f2fefd9f75bbedef71608a9c7ed2199e60f25d6a5d6d7c916d19d3a30364736f6c634300081b0033", + "code": "0x60806040526004361061017b575f3560e01c806367090ccf116100cd5780638da5cb5b11610087578063e07baba611610062578063e07baba614610449578063e30c397814610486578063f09a4016146104a3578063f2fde38b146104c2575f5ffd5b80638da5cb5b146103de5780639aa8605c146103fb578063a86f9d9e1461042a575f5ffd5b806367090ccf1461033b578063715018a61461037b57806379ba50971461038f5780637f07c947146103a35780638456cb59146103b65780638abf6077146103ca575f5ffd5b80633659cfe6116101385780633f4ba83a116101135780633f4ba83a146102e05780634f1ef286146102f457806352d1902d146103075780635c975abb1461031b575f5ffd5b80633659cfe61461026b5780633ab76e9f1461028a5780633eb6b8cf146102c1575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806306fdde03146101c8578063150b7a02146101f35780631f59a830146102375780633075db5614610257575b5f5ffd5b61019261018d3660046128ea565b6104e1565b005b34801561019f575f5ffd5b506101b36101ae366004612930565b610694565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b6040519081526020016101bf565b3480156101fe575f5ffd5b5061021e61020d3660046129ba565b630a85bd0160e11b95945050505050565b6040516001600160e01b031990911681526020016101bf565b61024a610245366004612a27565b6106e4565b6040516101bf9190612aab565b348015610262575f5ffd5b506101b3610b6a565b348015610276575f5ffd5b50610192610285366004612b9b565b610b82565b348015610295575f5ffd5b506097546102a9906001600160a01b031681565b6040516001600160a01b0390911681526020016101bf565b3480156102cc575f5ffd5b506102a96102db366004612be2565b610c52565b3480156102eb575f5ffd5b50610192610c68565b610192610302366004612d4d565b610c7c565b348015610312575f5ffd5b506101e5610d31565b348015610326575f5ffd5b506101b360c954610100900460ff1660021490565b348015610346575f5ffd5b506102a9610355366004612d99565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610386575f5ffd5b50610192610de2565b34801561039a575f5ffd5b50610192610df3565b6101926103b1366004612dc7565b610e6a565b3480156103c1575f5ffd5b50610192610fd3565b3480156103d5575f5ffd5b506102a9610fe6565b3480156103e9575f5ffd5b506033546001600160a01b03166102a9565b348015610406575f5ffd5b5061041a610415366004612b9b565b610ff4565b6040516101bf9493929190612e05565b348015610435575f5ffd5b506102a9610444366004612e54565b61113f565b348015610454575f5ffd5b5060c95461046e906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101bf565b348015610491575f5ffd5b506065546001600160a01b03166102a9565b3480156104ae575f5ffd5b506101926104bd366004612e77565b61114b565b3480156104cd575f5ffd5b506101926104dc366004612b9b565b61125a565b6104f560c954610100900460ff1660021490565b156105135760405163bae6e2a960e01b815260040160405180910390fd5b600261052160c95460ff1690565b60ff16036105425760405163dfc60d8560e01b815260040160405180910390fd5b61054c60026112cb565b6105546112e1565b505f610564610140840184612ea3565b610572916004908290612ee5565b81019061057f9190612f0c565b90505f5f828060200190518101906105979190613026565b9350505091505f6105bb838760a00160208101906105b59190612b9b565b846113d7565b90506105e56101208701356105d660c0890160a08a01612b9b565b6001600160a01b03169061154e565b6105f560c0870160a08801612b9b565b6001600160a01b0316857fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561064057610640612c21565b604051908082528060200260200182016040528015610669578160200160208202803683370190505b5060405161067a9493929190613165565b60405180910390a35050505061069060016112cb565b5050565b5f6001600160e01b0319821662bc399d60e11b14806106c357506001600160e01b03198216637f07c94760e01b145b806106de57506001600160e01b031982166301ffc9a760e01b145b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261075260c954610100900460ff1660021490565b156107705760405163bae6e2a960e01b815260040160405180910390fd5b61077982613219565b8060e00151518160c0015151146107a35760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107ce576040516303f8a7d360e01b815260040160405180910390fd5b60026107dc60c95460ff1690565b60ff16036107fd5760405163dfc60d8560e01b815260040160405180910390fd5b61080760026112cb565b61081760808401606085016132ec565b6001600160401b031634101561084057604051630178ce0b60e31b815260040160405180910390fd5b5f5b61084f60c0850185613307565b90508110156108a35761086560e0850185613307565b828181106108755761087561334c565b905060200201355f1461089b57604051634299323b60e11b815260040160405180910390fd5b600101610842565b506108ce6380ac58cd60e01b6108bf60a0860160808701612b9b565b6001600160a01b031690611559565b6108eb57604051633ee915f560e11b815260040160405180910390fd5b5f5f6108f6856115e6565b6040805161016081019091525f808252929450909250602081016109206080890160608a016132ec565b6001600160401b0316815260200161093e60c0890160a08a01613360565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061096f908901896132ec565b6001600160401b031681526020015f6001600160a01b031688602001602081019061099a9190612b9b565b6001600160a01b0316036109ae57336109be565b6109be6040890160208a01612b9b565b6001600160a01b031681526020908101906109f6906109df908a018a6132ec565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f610c52565b6001600160a01b03168152602001610a146080890160608a016132ec565b610a27906001600160401b03163461338f565b815260200184905290505f610a456562726964676560d01b8261113f565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a719190612aab565b5f6040518083038185885af1158015610a8c573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610ab491908101906133ad565b96509050610ac86060880160408901612b9b565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610b1e9190612b9b565b610b2b60c08f018f613307565b8f8060e00190610b3b9190613307565b604051610b4e97969594939291906134fd565b60405180910390a450505050610b6460016112cb565b50919050565b5f6002610b7960c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000003163003610bd35760405162461bcd60e51b8152600401610bca90613559565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000000036001600160a01b0316610c05611ac8565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca906135a5565b610c3481611ae3565b604080515f80825260208201909252610c4f91839190611aeb565b50565b5f610c5e848484611c55565b90505b9392505050565b610c70611ca7565b610c7a335f611d37565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000003163003610cc45760405162461bcd60e51b8152600401610bca90613559565b7f00000000000000000000000001670100000000000000000000000000000000036001600160a01b0316610cf6611ac8565b6001600160a01b031614610d1c5760405162461bcd60e51b8152600401610bca906135a5565b610d2582611ae3565b61069082826001611aeb565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000000031614610dd05760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610bca565b505f516020613ff95f395f51905f5290565b610dea611d3b565b610c7a5f611d95565b60655433906001600160a01b03168114610e615760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610bca565b610c4f81611d95565b610e7e60c954610100900460ff1660021490565b15610e9c5760405163bae6e2a960e01b815260040160405180910390fd5b6002610eaa60c95460ff1690565b60ff1603610ecb5760405163dfc60d8560e01b815260040160405180910390fd5b610ed560026112cb565b5f808080610ee5858701876135f1565b93509350935093505f610ef6611dae565b9050610f0183611ece565b5f610f0d8685856113d7565b9050610f226001600160a01b0385163461154e565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f8057610f80612c21565b604051908082528060200260200182016040528015610fa9578160200160208202803683370190505b50604051610fbb9594939291906136ea565b60405180910390a450505050505061069060016112cb565b610fdb611f0a565b610c7a336001611d37565b5f610fef611ac8565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b031692919061103290613742565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90613742565b80156110a95780601f10611080576101008083540402835291602001916110a9565b820191905f5260205f20905b81548152906001019060200180831161108c57829003601f168201915b5050505050908060020180546110be90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546110ea90613742565b80156111355780601f1061110c57610100808354040283529160200191611135565b820191905f5260205f20905b81548152906001019060200180831161111857829003601f168201915b5050505050905084565b5f610c61468484611c55565b5f54610100900460ff161580801561116957505f54600160ff909116105b806111825750303b15801561118257505f5460ff166001145b6111e55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b5f805460ff191660011790558015611206575f805461ff0019166101001790555b6112108383611f7b565b8015611255575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611262611d3b565b606580546001600160a01b0383166001600160a01b031990911681179091556112936033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b61131281600161113f565b6001600160a01b0316336001600160a01b03161461134357604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561137f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a39190613774565b60208101519092506001600160a01b031633146113d357604051632583296b60e01b815260040160405180910390fd5b5090565b5f46845f01516001600160401b03160361149d575060208301515f5b825181101561149757816001600160a01b03166342842e0e308686858151811061141f5761141f61334c565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b158015611476575f5ffd5b505af1158015611488573d5f5f3e3d5ffd5b505050508060010190506113f3565b50610c61565b6114a684611fb5565b90505f5b825181101561154657816001600160a01b03166340c10f19858584815181106114d5576114d561334c565b60200260200101516040518363ffffffff1660e01b815260040161150e9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015611525575f5ffd5b505af1158015611537573d5f5f3e3d5ffd5b505050508060010190506114aa565b509392505050565b61069082825a611ffc565b5f6001600160a01b0383163b61157057505f6106de565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa9250505080156115da575060408051601f3d908101601f191682019092526115d7918101906137dc565b60015b156106de579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161161c60a0870160808801612b9b565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118fd576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061168d90613742565b80601f01602080910402602001604051908101604052809291908181526020018280546116b990613742565b80156117045780601f106116db57610100808354040283529160200191611704565b820191905f5260205f20905b8154815290600101906020018083116116e757829003601f168201915b5050505050815260200160028201805461171d90613742565b80601f016020809104026020016040519081016040528092919081815260200182805461174990613742565b80156117945780601f1061176b57610100808354040283529160200191611794565b820191905f5260205f20905b81548152906001019060200180831161177757829003601f168201915b50505050508152505091505f5b6117ae60c0860186613307565b90508110156118f7576117c760a0860160808701612b9b565b6001600160a01b03166342842e0e33306117e460c08a018a613307565b868181106117f4576117f461334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611848575f5ffd5b505af115801561185a573d5f5f3e3d5ffd5b5061186f9250505060a0860160808701612b9b565b6001600160a01b03166342966c6861188a60c0880188613307565b8481811061189a5761189a61334c565b905060200201356040518263ffffffff1660e01b81526004016118bf91815260200190565b5f604051808303815f87803b1580156118d6575f5ffd5b505af11580156118e8573d5f5f3e3d5ffd5b505050508060010190506117a1565b50611a3d565b6040518060800160405280466001600160401b0316815260200185608001602081019061192a9190612b9b565b6001600160a01b0316815260200161195061194b60a0880160808901612b9b565b61203f565b815260200161196d61196860a0880160808901612b9b565b6120f1565b905291505f5b61198060c0860186613307565b9050811015611a3b5761199960a0860160808701612b9b565b6001600160a01b03166342842e0e33306119b660c08a018a613307565b868181106119c6576119c661334c565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b158015611a1a575f5ffd5b505af1158015611a2c573d5f5f3e3d5ffd5b50505050806001019050611973565b505b5030637f07c9478233611a566060880160408901612b9b565b611a6360c0890189613307565b604051602001611a779594939291906137f7565b60408051601f1981840301815290829052611a9491602401613888565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f516020613ff95f395f51905f52546001600160a01b031690565b610c4f611d3b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b1e5761125583612137565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b78575060408051601f3d908101601f19168201909252611b759181019061389a565b60015b611bdb5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b5f516020613ff95f395f51905f528114611c495760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b506112558383836121d2565b5f611c6084846121fc565b905081158015611c7757506001600160a01b038116155b15610c6157604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610bca565b611cbb60c954610100900460ff1660021490565b611cd85760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106905b6033546001600160a01b03163314610c7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610bca565b606580546001600160a01b0319169055610c4f8161229e565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611ddf81600161113f565b6001600160a01b0316336001600160a01b031614611e1057604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e709190613774565b91505f611e9183604001516109f06b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611ec957604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eec57506001600160a01b03811630145b15610c4f57604051635b50f3f960e01b815260040160405180910390fd5b611f1e60c954610100900460ff1660021490565b15611f3c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611d2d565b806001600160a01b038116611fa35760405163538ba4f960e01b815260040160405180910390fd5b611fac836122ef565b6112558261234d565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611ff7576106de826123bd565b919050565b815f0361200857505050565b61202283838360405180602001604052805f815250612598565b61125557604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b5f60405180830381855afa9150503d805f81146120bd576040519150601f19603f3d011682016040523d82523d5f602084013e6120c2565b606091505b5091509150816120e05760405180602001604052805f8152506120e9565b6120e9816125d5565b949350505050565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161208591906138b1565b6001600160a01b0381163b6121a45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b5f516020613ff95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121db83612742565b5f825111806121e75750805b15611255576121f68383612781565b50505050565b6097545f906001600160a01b03168061222857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561227a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e991906138cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123155760405162461bcd60e51b8152600401610bca906138e7565b61231d6127a6565b61233b6001600160a01b038216156123355781611d95565b33611d95565b5060c9805461ff001916610100179055565b5f54610100900460ff166123735760405162461bcd60e51b8152600401610bca906138e7565b6001600160401b0346111561239b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123d16033546001600160a01b031690565b609754602085015185516040808801516060890151915161240296956001600160a01b031694939290602401613932565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124496d627269646765645f65726337323160901b5f61113f565b81604051612456906128dd565b612461929190613993565b604051809103905ff08015801561247a573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124de9082613a01565b50606082015160028201906124f39082613a01565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261258a9290613abb565b60405180910390a450919050565b5f6001600160a01b0385166125c057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125f457818060200190518101906106de9190613adf565b815160200361272f575f5b60208160ff161080156126345750828160ff16815181106126225761262261334c565b01602001516001600160f81b03191615155b1561264b578061264381613b10565b9150506125ff565b5f8160ff166001600160401b0381111561266757612667612c21565b6040519080825280601f01601f191660200182016040528015612691576020820181803683370190505b5090505f91505b60208260ff161080156126cd5750838260ff16815181106126bb576126bb61334c565b01602001516001600160f81b03191615155b15610c6157838260ff16815181106126e7576126e761334c565b602001015160f81c60f81b818360ff16815181106127075761270761334c565b60200101906001600160f81b03191690815f1a9053508161272781613b10565b925050612698565b505060408051602081019091525f815290565b61274b81612137565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c618383604051806060016040528060278152602001614019602791396127cc565b5f54610100900460ff16610c7a5760405162461bcd60e51b8152600401610bca906138e7565b60605f5f856001600160a01b0316856040516127e891906138b1565b5f60405180830381855af49150503d805f8114612820576040519150601f19603f3d011682016040523d82523d5f602084013e612825565b606091505b509150915061283686838387612840565b9695505050505050565b606083156128ae5782515f036128a7576001600160a01b0385163b6128a75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610bca565b50816120e9565b6120e983838151156128c35781518083602001fd5b8060405162461bcd60e51b8152600401610bca9190613888565b6104ca80613b2f83390190565b5f5f604083850312156128fb575f5ffd5b82356001600160401b03811115612910575f5ffd5b83016101608186031215612922575f5ffd5b946020939093013593505050565b5f60208284031215612940575f5ffd5b81356001600160e01b031981168114610c61575f5ffd5b6001600160a01b0381168114610c4f575f5ffd5b8035611ff781612957565b5f5f83601f840112612986575f5ffd5b5081356001600160401b0381111561299c575f5ffd5b6020830191508360208285010111156129b3575f5ffd5b9250929050565b5f5f5f5f5f608086880312156129ce575f5ffd5b85356129d981612957565b945060208601356129e981612957565b93506040860135925060608601356001600160401b03811115612a0a575f5ffd5b612a1688828901612976565b969995985093965092949392505050565b5f60208284031215612a37575f5ffd5b81356001600160401b03811115612a4c575f5ffd5b82016101008185031215610c61575f5ffd5b5f5b83811015612a78578181015183820152602001612a60565b50505f910152565b5f8151808452612a97816020860160208601612a5e565b601f01601f19169290920160200192915050565b60208152612ac56020820183516001600160401b03169052565b5f6020830151612ae060408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526120e9610180840182612a80565b5f60208284031215612bab575f5ffd5b8135610c6181612957565b6001600160401b0381168114610c4f575f5ffd5b8035611ff781612bb6565b8015158114610c4f575f5ffd5b5f5f5f60608486031215612bf4575f5ffd5b8335612bff81612bb6565b9250602084013591506040840135612c1681612bd5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612c5757612c57612c21565b60405290565b60405161010081016001600160401b0381118282101715612c5757612c57612c21565b60405161016081016001600160401b0381118282101715612c5757612c57612c21565b604051601f8201601f191681016001600160401b0381118282101715612ccb57612ccb612c21565b604052919050565b5f6001600160401b03821115612ceb57612ceb612c21565b50601f01601f191660200190565b5f82601f830112612d08575f5ffd5b8135602083015f612d20612d1b84612cd3565b612ca3565b9050828152858383011115612d33575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612d5e575f5ffd5b8235612d6981612957565b915060208301356001600160401b03811115612d83575f5ffd5b612d8f85828601612cf9565b9150509250929050565b5f5f60408385031215612daa575f5ffd5b823591506020830135612dbc81612957565b809150509250929050565b5f5f60208385031215612dd8575f5ffd5b82356001600160401b03811115612ded575f5ffd5b612df985828601612976565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612e3790830185612a80565b8281036060840152612e498185612a80565b979650505050505050565b5f5f60408385031215612e65575f5ffd5b823591506020830135612dbc81612bd5565b5f5f60408385031215612e88575f5ffd5b8235612e9381612957565b91506020830135612dbc81612957565b5f5f8335601e19843603018112612eb8575f5ffd5b8301803591506001600160401b03821115612ed1575f5ffd5b6020019150368190038213156129b3575f5ffd5b5f5f85851115612ef3575f5ffd5b83861115612eff575f5ffd5b5050820193919092039150565b5f60208284031215612f1c575f5ffd5b81356001600160401b03811115612f31575f5ffd5b6120e984828501612cf9565b8051611ff781612bb6565b8051611ff781612957565b5f82601f830112612f62575f5ffd5b8151602083015f612f75612d1b84612cd3565b9050828152858383011115612f88575f5ffd5b612f96836020830184612a5e565b95945050505050565b5f6001600160401b03821115612fb757612fb7612c21565b5060051b60200190565b5f82601f830112612fd0575f5ffd5b8151612fde612d1b82612f9f565b8082825260208201915060208360051b860101925085831115612fff575f5ffd5b602085015b8381101561301c578051835260209283019201613004565b5095945050505050565b5f5f5f5f60808587031215613039575f5ffd5b84516001600160401b0381111561304e575f5ffd5b85016080818803121561305f575f5ffd5b613067612c35565b815161307281612bb6565b8152602082015161308281612957565b602082015260408201516001600160401b0381111561309f575f5ffd5b6130ab89828501612f53565b60408301525060608201516001600160401b038111156130c9575f5ffd5b6130d589828501612f53565b60608301525094506130eb905060208601612f48565b92506130f960408601612f48565b915060608501516001600160401b03811115613113575f5ffd5b61311f87828801612fc1565b91505092959194509250565b5f8151808452602084019350602083015f5b8281101561315b57815186526020958601959091019060010161313d565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906131909083018561312b565b8281036060840152612e49818561312b565b63ffffffff81168114610c4f575f5ffd5b8035611ff7816131a2565b5f82601f8301126131cd575f5ffd5b81356131db612d1b82612f9f565b8082825260208201915060208360051b8601019250858311156131fc575f5ffd5b602085015b8381101561301c578035835260209283019201613201565b5f610100823603121561322a575f5ffd5b613232612c5d565b61323b83612bca565b81526132496020840161296b565b602082015261325a6040840161296b565b604082015261326b60608401612bca565b606082015261327c6080840161296b565b608082015261328d60a084016131b3565b60a082015260c08301356001600160401b038111156132aa575f5ffd5b6132b6368286016131be565b60c08301525060e08301356001600160401b038111156132d4575f5ffd5b6132e0368286016131be565b60e08301525092915050565b5f602082840312156132fc575f5ffd5b8135610c6181612bb6565b5f5f8335601e1984360301811261331c575f5ffd5b8301803591506001600160401b03821115613335575f5ffd5b6020019150600581901b36038213156129b3575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613370575f5ffd5b8135610c61816131a2565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106de576106de61337b565b8051611ff7816131a2565b5f5f604083850312156133be575f5ffd5b825160208401519092506001600160401b038111156133db575f5ffd5b830161016081860312156133ed575f5ffd5b6133f5612c80565b6133fe82612f3d565b815261340c60208301612f3d565b602082015261341d604083016133a2565b604082015261342e60608301612f48565b606082015261343f60808301612f3d565b608082015261345060a08301612f48565b60a082015261346160c08301612f3d565b60c082015261347260e08301612f48565b60e08201526134846101008301612f48565b61010082015261012082810151908201526101408201516001600160401b038111156134ae575f5ffd5b6134ba87828501612f53565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156134e4575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061353890830186886134cd565b828103608084015261354b8185876134cd565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f60808587031215613604575f5ffd5b84356001600160401b03811115613619575f5ffd5b85016080818803121561362a575f5ffd5b613632612c35565b813561363d81612bb6565b8152602082013561364d81612957565b602082015260408201356001600160401b0381111561366a575f5ffd5b61367689828501612cf9565b60408301525060608201356001600160401b03811115613694575f5ffd5b6136a089828501612cf9565b60608301525094506136b690506020860161296b565b92506136c46040860161296b565b915060608501356001600160401b038111156136de575f5ffd5b61311f878288016131be565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137249083018561312b565b8281036080840152613736818561312b565b98975050505050505050565b600181811c9082168061375657607f821691505b602082108103610b6457634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613785575f5ffd5b50604051606081016001600160401b03811182821017156137a8576137a8612c21565b6040528251815260208301516137bd81612957565b602082015260408301516137d081612bb6565b60408201529392505050565b5f602082840312156137ec575f5ffd5b8151610c6181612bd5565b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613838610100840182612a80565b90506060880151607f198483030160e08501526138558282612a80565b6001600160a01b0389811660208701528816604086015291506138759050565b82810360608401526137368185876134cd565b602081525f610c616020830184612a80565b5f602082840312156138aa575f5ffd5b5051919050565b5f82516138c2818460208701612a5e565b9190910192915050565b5f602082840312156138dc575f5ffd5b8151610c6181612957565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f9061397490830185612a80565b82810360a08401526139868185612a80565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c5e90830184612a80565b601f82111561125557805f5260205f20601f840160051c810160208510156139db5750805b601f840160051c820191505b818110156139fa575f81556001016139e7565b5050505050565b81516001600160401b03811115613a1a57613a1a612c21565b613a2e81613a288454613742565b846139b6565b6020601f821160018114613a60575f8315613a495750848201515b5f19600385901b1c1916600184901b1784556139fa565b5f84815260208120601f198516915b82811015613a8f5787850151825560209485019460019092019101613a6f565b5084821015613aac57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613acd6040830185612a80565b8281036020840152612f968185612a80565b5f60208284031215613aef575f5ffd5b81516001600160401b03811115613b04575f5ffd5b6120e984828501612f53565b5f60ff821660ff8103613b2557613b2561337b565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122055e523a48576516437df6fcf2810806cc0aeefb1755d2891dc02a161b66f632464736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000003": { + "0x1670100000000000000000000000000000000003": { "contractName": "ERC721Vault", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000003" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000003" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000000004": { + "0x0167010000000000000000000000000000000004": { "contractName": "ERC1155VaultImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c39781461049d578063f09a4016146104ba578063f23a6e61146104d9578063f2fde38b14610505575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a73660046128ab565b610524565b005b3480156101b9575f5ffd5b506101cd6101c83660046128f1565b61069a565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c366004612918565b6106b9565b6040516101d9919061299c565b348015610239575f5ffd5b506101cd610b40565b34801561024d575f5ffd5b506101ac61025c366004612aab565b610b58565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612af2565b610c28565b3480156102c2575f5ffd5b506101ac610c3c565b6101ac6102d9366004612c5d565b610c50565b3480156102e9575f5ffd5b50610200610d05565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612ca9565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610db6565b348015610371575f5ffd5b506101ac610dc7565b6101ac610388366004612d1b565b610e3e565b348015610398575f5ffd5b506101ac610f6a565b3480156103ac575f5ffd5b50610280610f7d565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612aab565b610f8b565b6040516101d99493929190612d59565b34801561040c575f5ffd5b5061028061041b366004612da8565b6110d6565b34801561042b575f5ffd5b5061044e61043a366004612e0b565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101d9565b3480156104a8575f5ffd5b506065546001600160a01b0316610280565b3480156104c5575f5ffd5b506101ac6104d4366004612ecb565b6110e9565b3480156104e4575f5ffd5b5061044e6104f3366004612ef7565b63f23a6e6160e01b9695505050505050565b348015610510575f5ffd5b506101ac61051f366004612aab565b611200565b61053860c954610100900460ff1660021490565b156105565760405163bae6e2a960e01b815260040160405180910390fd5b600261056460c95460ff1690565b60ff16036105855760405163dfc60d8560e01b815260040160405180910390fd5b61058f6002611271565b610597611287565b505f6105a7610140840184612f6d565b6105b5916004908290612faf565b8101906105c29190612fd6565b90505f5f5f838060200190518101906105db91906130f0565b94509450505092505f610602848860a00160208101906105fb9190612aab565b858561137d565b905061062c61012088013561061d60c08a0160a08b01612aab565b6001600160a01b03169061146c565b61063c60c0880160a08901612aab565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c866020015184878760405161067f9493929190613258565b60405180910390a350505050506106966001611271565b5050565b5f6106a482611477565b806106b357506106b3826114c6565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072760c954610100900460ff1660021490565b156107455760405163bae6e2a960e01b815260040160405180910390fd5b61074e8261330c565b8060e00151518160c0015151146107785760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107a3576040516303f8a7d360e01b815260040160405180910390fd5b60026107b160c95460ff1690565b60ff16036107d25760405163dfc60d8560e01b815260040160405180910390fd5b6107dc6002611271565b6107ec60808401606085016133df565b6001600160401b031634101561081557604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082460e08501856133fa565b90508110156108785761083a60e08501856133fa565b8281811061084a5761084a61343f565b905060200201355f0361087057604051634299323b60e11b815260040160405180910390fd5b600101610817565b506108a3636cdb3d1360e11b61089460a0860160808701612aab565b6001600160a01b0316906114fa565b6108c057604051633ee915f560e11b815260040160405180910390fd5b5f5f6108cb856115ca565b6040805161016081019091525f808252929450909250602081016108f56080890160608a016133df565b6001600160401b0316815260200161091360c0890160a08a01613453565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190610944908901896133df565b6001600160401b031681526020015f6001600160a01b031688602001602081019061096f9190612aab565b6001600160a01b0316036109835733610993565b6109936040890160208a01612aab565b6001600160a01b031681526020908101906109cc906109b4908a018a6133df565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c28565b6001600160a01b031681526020016109ea6080890160608a016133df565b6109fd906001600160401b031634613482565b815260200184905290505f610a1b6562726964676560d01b826110d6565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a47919061299c565b5f6040518083038185885af1158015610a62573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a8a91908101906134a0565b96509050610a9e6060880160408901612aab565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610af49190612aab565b610b0160c08f018f6133fa565b8f8060e00190610b1191906133fa565b604051610b2497969594939291906135f0565b60405180910390a450505050610b3a6001611271565b50919050565b5f6002610b4f60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610ba95760405162461bcd60e51b8152600401610ba09061364c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610bdb611a8a565b6001600160a01b031614610c015760405162461bcd60e51b8152600401610ba090613698565b610c0a81611aa5565b604080515f80825260208201909252610c2591839190611aad565b50565b5f610c34848484611c17565b949350505050565b610c44611c73565b610c4e335f611d03565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c985760405162461bcd60e51b8152600401610ba09061364c565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610cca611a8a565b6001600160a01b031614610cf05760405162461bcd60e51b8152600401610ba090613698565b610cf982611aa5565b61069682826001611aad565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610da45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba0565b505f51602061421e5f395f51905f5290565b610dbe611d07565b610c4e5f611d61565b60655433906001600160a01b03168114610e355760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba0565b610c2581611d61565b610e5260c954610100900460ff1660021490565b15610e705760405163bae6e2a960e01b815260040160405180910390fd5b6002610e7e60c95460ff1690565b60ff1603610e9f5760405163dfc60d8560e01b815260040160405180910390fd5b610ea96002611271565b5f80808080610eba868801886136e4565b945094509450945094505f610ecd611d7a565b9050610ed884611e9b565b5f610ee58786868661137d565b9050610efa6001600160a01b0386163461146c565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f51959493929190613805565b60405180910390a4505050505050506106966001611271565b610f72611ed7565b610c4e336001611d03565b5f610f86611a8a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fc99061385d565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff59061385d565b80156110405780601f1061101757610100808354040283529160200191611040565b820191905f5260205f20905b81548152906001019060200180831161102357829003601f168201915b5050505050908060020180546110559061385d565b80601f01602080910402602001604051908101604052809291908181526020018280546110819061385d565b80156110cc5780601f106110a3576101008083540402835291602001916110cc565b820191905f5260205f20905b8154815290600101906020018083116110af57829003601f168201915b5050505050905084565b5f6110e2468484611c17565b9392505050565b5f54610100900460ff161580801561110757505f54600160ff909116105b806111205750303b15801561112057505f5460ff166001145b6111835760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba0565b5f805460ff1916600117905580156111a4575f805461ff0019166101001790555b6111ae8383611f48565b6111b6611f82565b80156111fb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611208611d07565b606580546001600160a01b0383166001600160a01b031990911681179091556112396033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112b88160016110d6565b6001600160a01b0316336001600160a01b0316146112e957604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611325573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611349919061388f565b60208101519092506001600160a01b0316331461137957604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fb57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113c99030908890889088906004016138f7565b5f604051808303815f87803b1580156113e0575f5ffd5b505af11580156113f2573d5f5f3e3d5ffd5b50505050610c34565b61140485611fa8565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143790879087908790600401613950565b5f604051808303815f87803b15801561144e575f5ffd5b505af1158015611460573d5f5f3e3d5ffd5b50505050949350505050565b61069682825a611fef565b5f6001600160e01b0319821662bc399d60e11b14806114a657506001600160e01b03198216637f07c94760e01b145b806106b357506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106b357506301ffc9a760e01b6001600160e01b03198316146106b3565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516115569190613985565b5f60405180830381855afa9150503d805f811461158e576040519150601f19603f3d011682016040523d82523d5f602084013e611593565b606091505b50915091508180156115a6575080516020145b156115c257808060200190518101906115bf91906139a0565b92505b505092915050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161160060a0870160808801612aab565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118f3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906116719061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461169d9061385d565b80156116e85780601f106116bf576101008083540402835291602001916116e8565b820191905f5260205f20905b8154815290600101906020018083116116cb57829003601f168201915b505050505081526020016002820180546117019061385d565b80601f016020809104026020016040519081016040528092919081815260200182805461172d9061385d565b80156117785780601f1061174f57610100808354040283529160200191611778565b820191905f5260205f20905b81548152906001019060200180831161175b57829003601f168201915b50505050508152505091508360800160208101906117969190612aab565b6001600160a01b0316632eb2c2d633306117b360c08901896133fa565b6117c060e08b018b6133fa565b6040518763ffffffff1660e01b81526004016117e1969594939291906139bb565b5f604051808303815f87803b1580156117f8575f5ffd5b505af115801561180a573d5f5f3e3d5ffd5b505050505f5b61181d60c08601866133fa565b90508110156118ed5761183660a0860160808701612aab565b6001600160a01b031663b390c0ab61185160c08801886133fa565b848181106118615761186161343f565b90506020020135878060e0019061187891906133fa565b858181106118885761188861343f565b905060200201356040518363ffffffff1660e01b81526004016118b5929190918252602082015260400190565b5f604051808303815f87803b1580156118cc575f5ffd5b505af11580156118de573d5f5f3e3d5ffd5b50505050806001019050611810565b506119f0565b6040518060800160405280466001600160401b031681526020018560800160208101906119209190612aab565b6001600160a01b0316815260200161194661194160a0880160808901612aab565b612032565b815260200161196361195e60a0880160808901612aab565b6120dc565b9052915061197760a0850160808601612aab565b6001600160a01b0316632eb2c2d6333061199460c08901896133fa565b6119a160e08b018b6133fa565b6040518763ffffffff1660e01b81526004016119c2969594939291906139bb565b5f604051808303815f87803b1580156119d9575f5ffd5b505af11580156119eb573d5f5f3e3d5ffd5b505050505b5030637f07c9478233611a096060880160408901612aab565b611a1660c08901896133fa565b611a2360e08b018b6133fa565b604051602001611a399796959493929190613a18565b60408051601f1981840301815290829052611a5691602401613ac8565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f51602061421e5f395f51905f52546001600160a01b031690565b610c25611d07565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611ae0576111fb83612122565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b3a575060408051601f3d908101601f19168201909252611b3791810190613ada565b60015b611b9d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba0565b5f51602061421e5f395f51905f528114611c0b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba0565b506111fb8383836121bd565b5f611c2284846121e7565b90508180611c3857506001600160a01b03811615155b84849091611c6a57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610ba0565b50509392505050565b611c8760c954610100900460ff1660021490565b611ca45760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6106965b6033546001600160a01b03163314610c4e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba0565b606580546001600160a01b0319169055610c2581612289565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611dab8160016110d6565b6001600160a01b0316336001600160a01b031614611ddc57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3c919061388f565b91505f611e5e83604001516109c66c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e9657604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611eb957506001600160a01b03811630145b15610c2557604051635b50f3f960e01b815260040160405180910390fd5b611eeb60c954610100900460ff1660021490565b15611f095760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611cf9565b806001600160a01b038116611f705760405163538ba4f960e01b815260040160405180910390fd5b611f79836122da565b6111fb82612338565b5f54610100900460ff16610c4e5760405162461bcd60e51b8152600401610ba090613af1565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fea576106b3826123a8565b919050565b815f03611ffb57505050565b61201583838360405180602001604052805f815250612584565b6111fb57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b038616916120789190613985565b5f60405180830381855afa9150503d805f81146120b0576040519150601f19603f3d011682016040523d82523d5f602084013e6120b5565b606091505b5091509150816120d35760405180602001604052805f815250610c34565b610c34816125c1565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b038616916120789190613985565b6001600160a01b0381163b61218f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba0565b5f51602061421e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6121c68361272e565b5f825111806121d25750805b156111fb576121e1838361276d565b50505050565b6097545f906001600160a01b03168061221357604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015612265573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190613b3c565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166123005760405162461bcd60e51b8152600401610ba090613af1565b612308611f82565b6123266001600160a01b038216156123205781611d61565b33611d61565b5060c9805461ff001916610100179055565b5f54610100900460ff1661235e5760405162461bcd60e51b8152600401610ba090613af1565b6001600160401b034611156123865760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123bc6033546001600160a01b031690565b60975460208501518551604080880151606089015191516123ed96956001600160a01b031694939290602401613b57565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506124356e627269646765645f6572633131353560881b5f6110d6565b816040516124429061289e565b61244d929190613bb8565b604051809103905ff080158015612466573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124ca9082613c26565b50606082015160028201906124df9082613c26565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b926125769290613ce0565b60405180910390a450919050565b5f6001600160a01b0385166125ac57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106125e057818060200190518101906106b39190613d04565b815160200361271b575f5b60208160ff161080156126205750828160ff168151811061260e5761260e61343f565b01602001516001600160f81b03191615155b15612637578061262f81613d35565b9150506125eb565b5f8160ff166001600160401b0381111561265357612653612b31565b6040519080825280601f01601f19166020018201604052801561267d576020820181803683370190505b5090505f91505b60208260ff161080156126b95750838260ff16815181106126a7576126a761343f565b01602001516001600160f81b03191615155b156110e257838260ff16815181106126d3576126d361343f565b602001015160f81c60f81b818360ff16815181106126f3576126f361343f565b60200101906001600160f81b03191690815f1a9053508161271381613d35565b925050612684565b505060408051602081019091525f815290565b61273781612122565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606110e2838360405180606001604052806027815260200161423e6027913960605f5f856001600160a01b0316856040516127a99190613985565b5f60405180830381855af49150503d805f81146127e1576040519150601f19603f3d011682016040523d82523d5f602084013e6127e6565b606091505b50915091506127f786838387612801565b9695505050505050565b6060831561286f5782515f03612868576001600160a01b0385163b6128685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba0565b5081610c34565b610c3483838151156128845781518083602001fd5b8060405162461bcd60e51b8152600401610ba09190613ac8565b6104ca80613d5483390190565b5f5f604083850312156128bc575f5ffd5b82356001600160401b038111156128d1575f5ffd5b830161016081860312156128e3575f5ffd5b946020939093013593505050565b5f60208284031215612901575f5ffd5b81356001600160e01b0319811681146110e2575f5ffd5b5f60208284031215612928575f5ffd5b81356001600160401b0381111561293d575f5ffd5b820161010081850312156110e2575f5ffd5b5f5b83811015612969578181015183820152602001612951565b50505f910152565b5f815180845261298881602086016020860161294f565b601f01601f19169290920160200192915050565b602081526129b66020820183516001600160401b03169052565b5f60208301516129d160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152610c34610180840182612971565b6001600160a01b0381168114610c25575f5ffd5b8035611fea81612a8c565b5f60208284031215612abb575f5ffd5b81356110e281612a8c565b6001600160401b0381168114610c25575f5ffd5b8035611fea81612ac6565b8015158114610c25575f5ffd5b5f5f5f60608486031215612b04575f5ffd5b8335612b0f81612ac6565b9250602084013591506040840135612b2681612ae5565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b6757612b67612b31565b60405290565b60405161010081016001600160401b0381118282101715612b6757612b67612b31565b60405161016081016001600160401b0381118282101715612b6757612b67612b31565b604051601f8201601f191681016001600160401b0381118282101715612bdb57612bdb612b31565b604052919050565b5f6001600160401b03821115612bfb57612bfb612b31565b50601f01601f191660200190565b5f82601f830112612c18575f5ffd5b8135602083015f612c30612c2b84612be3565b612bb3565b9050828152858383011115612c43575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c6e575f5ffd5b8235612c7981612a8c565b915060208301356001600160401b03811115612c93575f5ffd5b612c9f85828601612c09565b9150509250929050565b5f5f60408385031215612cba575f5ffd5b823591506020830135612ccc81612a8c565b809150509250929050565b5f5f83601f840112612ce7575f5ffd5b5081356001600160401b03811115612cfd575f5ffd5b602083019150836020828501011115612d14575f5ffd5b9250929050565b5f5f60208385031215612d2c575f5ffd5b82356001600160401b03811115612d41575f5ffd5b612d4d85828601612cd7565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d8b90830185612971565b8281036060840152612d9d8185612971565b979650505050505050565b5f5f60408385031215612db9575f5ffd5b823591506020830135612ccc81612ae5565b5f5f83601f840112612ddb575f5ffd5b5081356001600160401b03811115612df1575f5ffd5b6020830191508360208260051b8501011115612d14575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612e22575f5ffd5b8835612e2d81612a8c565b97506020890135612e3d81612a8c565b965060408901356001600160401b03811115612e57575f5ffd5b612e638b828c01612dcb565b90975095505060608901356001600160401b03811115612e81575f5ffd5b612e8d8b828c01612dcb565b90955093505060808901356001600160401b03811115612eab575f5ffd5b612eb78b828c01612cd7565b999c989b5096995094979396929594505050565b5f5f60408385031215612edc575f5ffd5b8235612ee781612a8c565b91506020830135612ccc81612a8c565b5f5f5f5f5f5f60a08789031215612f0c575f5ffd5b8635612f1781612a8c565b95506020870135612f2781612a8c565b9450604087013593506060870135925060808701356001600160401b03811115612f4f575f5ffd5b612f5b89828a01612cd7565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f82575f5ffd5b8301803591506001600160401b03821115612f9b575f5ffd5b602001915036819003821315612d14575f5ffd5b5f5f85851115612fbd575f5ffd5b83861115612fc9575f5ffd5b5050820193919092039150565b5f60208284031215612fe6575f5ffd5b81356001600160401b03811115612ffb575f5ffd5b610c3484828501612c09565b8051611fea81612ac6565b8051611fea81612a8c565b5f82601f83011261302c575f5ffd5b8151602083015f61303f612c2b84612be3565b9050828152858383011115613052575f5ffd5b61306083602083018461294f565b95945050505050565b5f6001600160401b0382111561308157613081612b31565b5060051b60200190565b5f82601f83011261309a575f5ffd5b81516130a8612c2b82613069565b8082825260208201915060208360051b8601019250858311156130c9575f5ffd5b602085015b838110156130e65780518352602092830192016130ce565b5095945050505050565b5f5f5f5f5f60a08688031215613104575f5ffd5b85516001600160401b03811115613119575f5ffd5b86016080818903121561312a575f5ffd5b613132612b45565b815161313d81612ac6565b8152602082015161314d81612a8c565b602082015260408201516001600160401b0381111561316a575f5ffd5b6131768a82850161301d565b60408301525060608201516001600160401b03811115613194575f5ffd5b6131a08a82850161301d565b60608301525095506131b6905060208701613012565b93506131c460408701613012565b925060608601516001600160401b038111156131de575f5ffd5b6131ea8882890161308b565b92505060808601516001600160401b03811115613205575f5ffd5b6132118882890161308b565b9150509295509295909350565b5f8151808452602084019350602083015f5b8281101561324e578151865260209586019590910190600101613230565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f906132839083018561321e565b8281036060840152612d9d818561321e565b63ffffffff81168114610c25575f5ffd5b8035611fea81613295565b5f82601f8301126132c0575f5ffd5b81356132ce612c2b82613069565b8082825260208201915060208360051b8601019250858311156132ef575f5ffd5b602085015b838110156130e65780358352602092830192016132f4565b5f610100823603121561331d575f5ffd5b613325612b6d565b61332e83612ada565b815261333c60208401612aa0565b602082015261334d60408401612aa0565b604082015261335e60608401612ada565b606082015261336f60808401612aa0565b608082015261338060a084016132a6565b60a082015260c08301356001600160401b0381111561339d575f5ffd5b6133a9368286016132b1565b60c08301525060e08301356001600160401b038111156133c7575f5ffd5b6133d3368286016132b1565b60e08301525092915050565b5f602082840312156133ef575f5ffd5b81356110e281612ac6565b5f5f8335601e1984360301811261340f575f5ffd5b8301803591506001600160401b03821115613428575f5ffd5b6020019150600581901b3603821315612d14575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613463575f5ffd5b81356110e281613295565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106b3576106b361346e565b8051611fea81613295565b5f5f604083850312156134b1575f5ffd5b825160208401519092506001600160401b038111156134ce575f5ffd5b830161016081860312156134e0575f5ffd5b6134e8612b90565b6134f182613007565b81526134ff60208301613007565b602082015261351060408301613495565b604082015261352160608301613012565b606082015261353260808301613007565b608082015261354360a08301613012565b60a082015261355460c08301613007565b60c082015261356560e08301613012565b60e08201526135776101008301613012565b61010082015261012082810151908201526101408201516001600160401b038111156135a1575f5ffd5b6135ad8782850161301d565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156135d7575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061362b90830186886135c0565b828103608084015261363e8185876135c0565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136f8575f5ffd5b85356001600160401b0381111561370d575f5ffd5b86016080818903121561371e575f5ffd5b613726612b45565b813561373181612ac6565b8152602082013561374181612a8c565b602082015260408201356001600160401b0381111561375e575f5ffd5b61376a8a828501612c09565b60408301525060608201356001600160401b03811115613788575f5ffd5b6137948a828501612c09565b60608301525095506137aa905060208701612aa0565b93506137b860408701612aa0565b925060608601356001600160401b038111156137d2575f5ffd5b6137de888289016132b1565b92505060808601356001600160401b038111156137f9575f5ffd5b613211888289016132b1565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061383f9083018561321e565b8281036080840152613851818561321e565b98975050505050505050565b600181811c9082168061387157607f821691505b602082108103610b3a57634e487b7160e01b5f52602260045260245ffd5b5f60608284031280156138a0575f5ffd5b50604051606081016001600160401b03811182821017156138c3576138c3612b31565b6040528251815260208301516138d881612a8c565b602082015260408301516138eb81612ac6565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906139229083018561321e565b8281036060840152613934818561321e565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f906139739083018561321e565b82810360408401526127f7818561321e565b5f825161399681846020870161294f565b9190910192915050565b5f602082840312156139b0575f5ffd5b81516110e281612ae5565b6001600160a01b0387811682528616602082015260a0604082018190525f906139e790830186886135c0565b82810360608401526139fa8185876135c0565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613a5b610120840182612971565b905060608a0151609f1984830301610100850152613a798282612971565b915050613a91602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613ab38187896135c0565b9050828103608084015261363e8185876135c0565b602081525f6110e26020830184612971565b5f60208284031215613aea575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613b4c575f5ffd5b81516110e281612a8c565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b9990830185612971565b82810360a0840152613bab8185612971565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3490830184612971565b601f8211156111fb57805f5260205f20601f840160051c81016020851015613c005750805b601f840160051c820191505b81811015613c1f575f8155600101613c0c565b5050505050565b81516001600160401b03811115613c3f57613c3f612b31565b613c5381613c4d845461385d565b84613bdb565b6020601f821160018114613c85575f8315613c6e5750848201515b5f19600385901b1c1916600184901b178455613c1f565b5f84815260208120601f198516915b82811015613cb45787850151825560209485019460019092019101613c94565b5084821015613cd157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613cf26040830185612971565b82810360208401526130608185612971565b5f60208284031215613d14575f5ffd5b81516001600160401b03811115613d29575f5ffd5b610c348482850161301d565b5f60ff821660ff8103613d4a57613d4a61346e565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203e164d80a5bf888f120843fbb6a1d20044e55ebe0e054374c174b7a64300b39064736f6c634300081b0033", + "code": "0x608060405260043610610195575f3560e01c8063715018a6116100e7578063a86f9d9e11610087578063e30c397811610062578063e30c3978146104a4578063f09a4016146104c1578063f23a6e61146104e0578063f2fde38b1461050c575f5ffd5b8063a86f9d9e14610401578063bc197c8114610420578063e07baba614610467575f5ffd5b80638456cb59116100c25780638456cb591461038d5780638abf6077146103a15780638da5cb5b146103b55780639aa8605c146103d2575f5ffd5b8063715018a61461035257806379ba5097146103665780637f07c9471461037a575f5ffd5b80633ab76e9f116101525780634f1ef2861161012d5780634f1ef286146102cb57806352d1902d146102de5780635c975abb146102f257806367090ccf14610312575f5ffd5b80633ab76e9f146102615780633eb6b8cf146102985780633f4ba83a146102b7575f5ffd5b80630178733a1461019957806301ffc9a7146101ae57806306fdde03146101e25780631f59a8301461020e5780633075db561461022e5780633659cfe614610242575b5f5ffd5b6101ac6101a7366004612861565b61052b565b005b3480156101b9575f5ffd5b506101cd6101c83660046128a7565b6106a1565b60405190151581526020015b60405180910390f35b3480156101ed575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b6040519081526020016101d9565b61022161021c3660046128ce565b6106c0565b6040516101d99190612952565b348015610239575f5ffd5b506101cd610b47565b34801561024d575f5ffd5b506101ac61025c366004612a61565b610b5f565b34801561026c575f5ffd5b50609754610280906001600160a01b031681565b6040516001600160a01b0390911681526020016101d9565b3480156102a3575f5ffd5b506102806102b2366004612aa8565b610c2f565b3480156102c2575f5ffd5b506101ac610c45565b6101ac6102d9366004612c13565b610c59565b3480156102e9575f5ffd5b50610200610d0e565b3480156102fd575f5ffd5b506101cd60c954610100900460ff1660021490565b34801561031d575f5ffd5b5061028061032c366004612c5f565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561035d575f5ffd5b506101ac610dbf565b348015610371575f5ffd5b506101ac610dd0565b6101ac610388366004612cd1565b610e47565b348015610398575f5ffd5b506101ac610f73565b3480156103ac575f5ffd5b50610280610f86565b3480156103c0575f5ffd5b506033546001600160a01b0316610280565b3480156103dd575f5ffd5b506103f16103ec366004612a61565b610f94565b6040516101d99493929190612d0f565b34801561040c575f5ffd5b5061028061041b366004612d5e565b6110df565b34801561042b575f5ffd5b5061044e61043a366004612dc1565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b031990911681526020016101d9565b348015610472575f5ffd5b5060c95461048c906201000090046001600160401b031681565b6040516001600160401b0390911681526020016101d9565b3480156104af575f5ffd5b506065546001600160a01b0316610280565b3480156104cc575f5ffd5b506101ac6104db366004612e81565b6110eb565b3480156104eb575f5ffd5b5061044e6104fa366004612ead565b63f23a6e6160e01b9695505050505050565b348015610517575f5ffd5b506101ac610526366004612a61565b611202565b61053f60c954610100900460ff1660021490565b1561055d5760405163bae6e2a960e01b815260040160405180910390fd5b600261056b60c95460ff1690565b60ff160361058c5760405163dfc60d8560e01b815260040160405180910390fd5b6105966002611273565b61059e611289565b505f6105ae610140840184612f23565b6105bc916004908290612f65565b8101906105c99190612f8c565b90505f5f5f838060200190518101906105e291906130a6565b94509450505092505f610609848860a00160208101906106029190612a61565b858561137f565b905061063361012088013561062460c08a0160a08b01612a61565b6001600160a01b03169061146f565b61064360c0880160a08901612a61565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8660200151848787604051610686949392919061320e565b60405180910390a3505050505061069d6001611273565b5050565b5f6106ab8261147a565b806106ba57506106ba826114c9565b92915050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261072e60c954610100900460ff1660021490565b1561074c5760405163bae6e2a960e01b815260040160405180910390fd5b610755826132c2565b8060e00151518160c00151511461077f5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b03166107aa576040516303f8a7d360e01b815260040160405180910390fd5b60026107b860c95460ff1690565b60ff16036107d95760405163dfc60d8560e01b815260040160405180910390fd5b6107e36002611273565b6107f36080840160608501613395565b6001600160401b031634101561081c57604051630178ce0b60e31b815260040160405180910390fd5b5f5b61082b60e08501856133b0565b905081101561087f5761084160e08501856133b0565b82818110610851576108516133f5565b905060200201355f0361087757604051634299323b60e11b815260040160405180910390fd5b60010161081e565b506108aa636cdb3d1360e11b61089b60a0860160808701612a61565b6001600160a01b0316906114fd565b6108c757604051633ee915f560e11b815260040160405180910390fd5b5f5f6108d28561158a565b6040805161016081019091525f808252929450909250602081016108fc6080890160608a01613395565b6001600160401b0316815260200161091a60c0890160a08a01613409565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061094b90890189613395565b6001600160401b031681526020015f6001600160a01b03168860200160208101906109769190612a61565b6001600160a01b03160361098a573361099a565b61099a6040890160208a01612a61565b6001600160a01b031681526020908101906109d3906109bb908a018a613395565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f610c2f565b6001600160a01b031681526020016109f16080890160608a01613395565b610a04906001600160401b031634613438565b815260200184905290505f610a226562726964676560d01b826110df565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a4e9190612952565b5f6040518083038185885af1158015610a69573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a919190810190613456565b96509050610aa56060880160408901612a61565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610afb9190612a61565b610b0860c08f018f6133b0565b8f8060e00190610b1891906133b0565b604051610b2b97969594939291906135a6565b60405180910390a450505050610b416001611273565b50919050565b5f6002610b5660c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000004163003610bb05760405162461bcd60e51b8152600401610ba790613602565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000000046001600160a01b0316610be2611a4a565b6001600160a01b031614610c085760405162461bcd60e51b8152600401610ba79061364e565b610c1181611a65565b604080515f80825260208201909252610c2c91839190611a6d565b50565b5f610c3b848484611bd7565b90505b9392505050565b610c4d611c29565b610c57335f611cb9565b565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000000004163003610ca15760405162461bcd60e51b8152600401610ba790613602565b7f00000000000000000000000001670100000000000000000000000000000000046001600160a01b0316610cd3611a4a565b6001600160a01b031614610cf95760405162461bcd60e51b8152600401610ba79061364e565b610d0282611a65565b61069d82826001611a6d565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000000041614610dad5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ba7565b505f5160206141d45f395f51905f5290565b610dc7611cbd565b610c575f611d17565b60655433906001600160a01b03168114610e3e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610ba7565b610c2c81611d17565b610e5b60c954610100900460ff1660021490565b15610e795760405163bae6e2a960e01b815260040160405180910390fd5b6002610e8760c95460ff1690565b60ff1603610ea85760405163dfc60d8560e01b815260040160405180910390fd5b610eb26002611273565b5f80808080610ec38688018861369a565b945094509450945094505f610ed6611d30565b9050610ee184611e51565b5f610eee8786868661137f565b9050610f036001600160a01b0386163461146f565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610f5a9594939291906137bb565b60405180910390a45050505050505061069d6001611273565b610f7b611e8d565b610c57336001611cb9565b5f610f8f611a4a565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610fd290613813565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffe90613813565b80156110495780601f1061102057610100808354040283529160200191611049565b820191905f5260205f20905b81548152906001019060200180831161102c57829003601f168201915b50505050509080600201805461105e90613813565b80601f016020809104026020016040519081016040528092919081815260200182805461108a90613813565b80156110d55780601f106110ac576101008083540402835291602001916110d5565b820191905f5260205f20905b8154815290600101906020018083116110b857829003601f168201915b5050505050905084565b5f610c3e468484611bd7565b5f54610100900460ff161580801561110957505f54600160ff909116105b806111225750303b15801561112257505f5460ff166001145b6111855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ba7565b5f805460ff1916600117905580156111a6575f805461ff0019166101001790555b6111b08383611efe565b6111b8611f38565b80156111fd575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61120a611cbd565b606580546001600160a01b0383166001600160a01b0319909116811790915561123b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60c9805460ff191660ff92909216919091179055565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b6112ba8160016110df565b6001600160a01b0316336001600160a01b0316146112eb57604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611327573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134b9190613845565b60208101519092506001600160a01b0316331461137b57604051632583296b60e01b815260040160405180910390fd5b5090565b5f46855f01516001600160401b0316036113fd57506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d6906113cb9030908890889088906004016138ad565b5f604051808303815f87803b1580156113e2575f5ffd5b505af11580156113f4573d5f5f3e3d5ffd5b50505050611467565b61140685611f5e565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061143990879087908790600401613906565b5f604051808303815f87803b158015611450575f5ffd5b505af1158015611462573d5f5f3e3d5ffd5b505050505b949350505050565b61069d82825a611fa5565b5f6001600160e01b0319821662bc399d60e11b14806114a957506001600160e01b03198216637f07c94760e01b145b806106ba57506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806106ba57506301ffc9a760e01b6001600160e01b03198316146106ba565b5f6001600160a01b0383163b61151457505f6106ba565b6040516301ffc9a760e01b81526001600160e01b0319831660048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa92505050801561157e575060408051601f3d908101601f1916820190925261157b9181019061393b565b60015b156106ba579392505050565b604080516080810182525f808252602082015260609181018290528082018290525f61012d816115c060a0870160808801612a61565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118b3576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061163190613813565b80601f016020809104026020016040519081016040528092919081815260200182805461165d90613813565b80156116a85780601f1061167f576101008083540402835291602001916116a8565b820191905f5260205f20905b81548152906001019060200180831161168b57829003601f168201915b505050505081526020016002820180546116c190613813565b80601f01602080910402602001604051908101604052809291908181526020018280546116ed90613813565b80156117385780601f1061170f57610100808354040283529160200191611738565b820191905f5260205f20905b81548152906001019060200180831161171b57829003601f168201915b50505050508152505091508360800160208101906117569190612a61565b6001600160a01b0316632eb2c2d6333061177360c08901896133b0565b61178060e08b018b6133b0565b6040518763ffffffff1660e01b81526004016117a196959493929190613956565b5f604051808303815f87803b1580156117b8575f5ffd5b505af11580156117ca573d5f5f3e3d5ffd5b505050505f5b6117dd60c08601866133b0565b90508110156118ad576117f660a0860160808701612a61565b6001600160a01b031663b390c0ab61181160c08801886133b0565b84818110611821576118216133f5565b90506020020135878060e0019061183891906133b0565b85818110611848576118486133f5565b905060200201356040518363ffffffff1660e01b8152600401611875929190918252602082015260400190565b5f604051808303815f87803b15801561188c575f5ffd5b505af115801561189e573d5f5f3e3d5ffd5b505050508060010190506117d0565b506119b0565b6040518060800160405280466001600160401b031681526020018560800160208101906118e09190612a61565b6001600160a01b0316815260200161190661190160a0880160808901612a61565b611fe8565b815260200161192361191e60a0880160808901612a61565b612092565b9052915061193760a0850160808601612a61565b6001600160a01b0316632eb2c2d6333061195460c08901896133b0565b61196160e08b018b6133b0565b6040518763ffffffff1660e01b815260040161198296959493929190613956565b5f604051808303815f87803b158015611999575f5ffd5b505af11580156119ab573d5f5f3e3d5ffd5b505050505b5030637f07c94782336119c96060880160408901612a61565b6119d660c08901896133b0565b6119e360e08b018b6133b0565b6040516020016119f997969594939291906139b3565b60408051601f1981840301815290829052611a1691602401613a63565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f5160206141d45f395f51905f52546001600160a01b031690565b610c2c611cbd565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611aa0576111fd836120d8565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611afa575060408051601f3d908101601f19168201909252611af791810190613a75565b60015b611b5d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ba7565b5f5160206141d45f395f51905f528114611bcb5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ba7565b506111fd838383612173565b5f611be2848461219d565b905081158015611bf957506001600160a01b038116155b15610c3e57604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610ba7565b611c3d60c954610100900460ff1660021490565b611c5a5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b61069d5b6033546001600160a01b03163314610c575760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ba7565b606580546001600160a01b0319169055610c2c8161223f565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611d618160016110df565b6001600160a01b0316336001600160a01b031614611d9257604051630d85cccf60e11b815260040160405180910390fd5b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dce573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611df29190613845565b91505f611e1483604001516109cd6c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e4c57604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611e6f57506001600160a01b03811630145b15610c2c57604051635b50f3f960e01b815260040160405180910390fd5b611ea160c954610100900460ff1660021490565b15611ebf5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611caf565b806001600160a01b038116611f265760405163538ba4f960e01b815260040160405180910390fd5b611f2f83612290565b6111fd826122ee565b5f54610100900460ff16610c575760405162461bcd60e51b8152600401610ba790613a8c565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611fa0576106ba8261235e565b919050565b815f03611fb157505050565b611fcb83838360405180602001604052805f81525061253a565b6111fd57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b5f60405180830381855afa9150503d805f8114612066576040519150601f19603f3d011682016040523d82523d5f602084013e61206b565b606091505b5091509150816120895760405180602001604052805f815250611467565b61146781612577565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161202e9190613ad7565b6001600160a01b0381163b6121455760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ba7565b5f5160206141d45f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61217c836126e4565b5f825111806121885750805b156111fd576121978383612723565b50505050565b6097545f906001600160a01b0316806121c957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa15801561221b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114679190613af2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166122b65760405162461bcd60e51b8152600401610ba790613a8c565b6122be611f38565b6122dc6001600160a01b038216156122d65781611d17565b33611d17565b5060c9805461ff001916610100179055565b5f54610100900460ff166123145760405162461bcd60e51b8152600401610ba790613a8c565b6001600160401b0346111561233c5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f5f6123726033546001600160a01b031690565b60975460208501518551604080880151606089015191516123a396956001600160a01b031694939290602401613b0d565b60408051601f198184030181529190526020810180516001600160e01b03166377c6257360e11b17905290506123eb6e627269646765645f6572633131353560881b5f6110df565b816040516123f890612854565b612403929190613b6e565b604051809103905ff08015801561241c573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906124809082613bdc565b50606082015160028201906124959082613bdc565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261252c9290613c96565b60405180910390a450919050565b5f6001600160a01b03851661256257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061259657818060200190518101906106ba9190613cba565b81516020036126d1575f5b60208160ff161080156125d65750828160ff16815181106125c4576125c46133f5565b01602001516001600160f81b03191615155b156125ed57806125e581613ceb565b9150506125a1565b5f8160ff166001600160401b0381111561260957612609612ae7565b6040519080825280601f01601f191660200182016040528015612633576020820181803683370190505b5090505f91505b60208260ff1610801561266f5750838260ff168151811061265d5761265d6133f5565b01602001516001600160f81b03191615155b15610c3e57838260ff1681518110612689576126896133f5565b602001015160f81c60f81b818360ff16815181106126a9576126a96133f5565b60200101906001600160f81b03191690815f1a905350816126c981613ceb565b92505061263a565b505060408051602081019091525f815290565b6126ed816120d8565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c3e83836040518060600160405280602781526020016141f46027913960605f5f856001600160a01b03168560405161275f9190613ad7565b5f60405180830381855af49150503d805f8114612797576040519150601f19603f3d011682016040523d82523d5f602084013e61279c565b606091505b50915091506127ad868383876127b7565b9695505050505050565b606083156128255782515f0361281e576001600160a01b0385163b61281e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ba7565b5081611467565b611467838381511561283a5781518083602001fd5b8060405162461bcd60e51b8152600401610ba79190613a63565b6104ca80613d0a83390190565b5f5f60408385031215612872575f5ffd5b82356001600160401b03811115612887575f5ffd5b83016101608186031215612899575f5ffd5b946020939093013593505050565b5f602082840312156128b7575f5ffd5b81356001600160e01b031981168114610c3e575f5ffd5b5f602082840312156128de575f5ffd5b81356001600160401b038111156128f3575f5ffd5b82016101008185031215610c3e575f5ffd5b5f5b8381101561291f578181015183820152602001612907565b50505f910152565b5f815180845261293e816020860160208601612905565b601f01601f19169290920160200192915050565b6020815261296c6020820183516001600160401b03169052565b5f602083015161298760408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611467610180840182612927565b6001600160a01b0381168114610c2c575f5ffd5b8035611fa081612a42565b5f60208284031215612a71575f5ffd5b8135610c3e81612a42565b6001600160401b0381168114610c2c575f5ffd5b8035611fa081612a7c565b8015158114610c2c575f5ffd5b5f5f5f60608486031215612aba575f5ffd5b8335612ac581612a7c565b9250602084013591506040840135612adc81612a9b565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405290565b60405161010081016001600160401b0381118282101715612b1d57612b1d612ae7565b60405161016081016001600160401b0381118282101715612b1d57612b1d612ae7565b604051601f8201601f191681016001600160401b0381118282101715612b9157612b91612ae7565b604052919050565b5f6001600160401b03821115612bb157612bb1612ae7565b50601f01601f191660200190565b5f82601f830112612bce575f5ffd5b8135602083015f612be6612be184612b99565b612b69565b9050828152858383011115612bf9575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612c24575f5ffd5b8235612c2f81612a42565b915060208301356001600160401b03811115612c49575f5ffd5b612c5585828601612bbf565b9150509250929050565b5f5f60408385031215612c70575f5ffd5b823591506020830135612c8281612a42565b809150509250929050565b5f5f83601f840112612c9d575f5ffd5b5081356001600160401b03811115612cb3575f5ffd5b602083019150836020828501011115612cca575f5ffd5b9250929050565b5f5f60208385031215612ce2575f5ffd5b82356001600160401b03811115612cf7575f5ffd5b612d0385828601612c8d565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612d4190830185612927565b8281036060840152612d538185612927565b979650505050505050565b5f5f60408385031215612d6f575f5ffd5b823591506020830135612c8281612a9b565b5f5f83601f840112612d91575f5ffd5b5081356001600160401b03811115612da7575f5ffd5b6020830191508360208260051b8501011115612cca575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612dd8575f5ffd5b8835612de381612a42565b97506020890135612df381612a42565b965060408901356001600160401b03811115612e0d575f5ffd5b612e198b828c01612d81565b90975095505060608901356001600160401b03811115612e37575f5ffd5b612e438b828c01612d81565b90955093505060808901356001600160401b03811115612e61575f5ffd5b612e6d8b828c01612c8d565b999c989b5096995094979396929594505050565b5f5f60408385031215612e92575f5ffd5b8235612e9d81612a42565b91506020830135612c8281612a42565b5f5f5f5f5f5f60a08789031215612ec2575f5ffd5b8635612ecd81612a42565b95506020870135612edd81612a42565b9450604087013593506060870135925060808701356001600160401b03811115612f05575f5ffd5b612f1189828a01612c8d565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612f38575f5ffd5b8301803591506001600160401b03821115612f51575f5ffd5b602001915036819003821315612cca575f5ffd5b5f5f85851115612f73575f5ffd5b83861115612f7f575f5ffd5b5050820193919092039150565b5f60208284031215612f9c575f5ffd5b81356001600160401b03811115612fb1575f5ffd5b61146784828501612bbf565b8051611fa081612a7c565b8051611fa081612a42565b5f82601f830112612fe2575f5ffd5b8151602083015f612ff5612be184612b99565b9050828152858383011115613008575f5ffd5b613016836020830184612905565b95945050505050565b5f6001600160401b0382111561303757613037612ae7565b5060051b60200190565b5f82601f830112613050575f5ffd5b815161305e612be18261301f565b8082825260208201915060208360051b86010192508583111561307f575f5ffd5b602085015b8381101561309c578051835260209283019201613084565b5095945050505050565b5f5f5f5f5f60a086880312156130ba575f5ffd5b85516001600160401b038111156130cf575f5ffd5b8601608081890312156130e0575f5ffd5b6130e8612afb565b81516130f381612a7c565b8152602082015161310381612a42565b602082015260408201516001600160401b03811115613120575f5ffd5b61312c8a828501612fd3565b60408301525060608201516001600160401b0381111561314a575f5ffd5b6131568a828501612fd3565b606083015250955061316c905060208701612fc8565b935061317a60408701612fc8565b925060608601516001600160401b03811115613194575f5ffd5b6131a088828901613041565b92505060808601516001600160401b038111156131bb575f5ffd5b6131c788828901613041565b9150509295509295909350565b5f8151808452602084019350602083015f5b828110156132045781518652602095860195909101906001016131e6565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90613239908301856131d4565b8281036060840152612d5381856131d4565b63ffffffff81168114610c2c575f5ffd5b8035611fa08161324b565b5f82601f830112613276575f5ffd5b8135613284612be18261301f565b8082825260208201915060208360051b8601019250858311156132a5575f5ffd5b602085015b8381101561309c5780358352602092830192016132aa565b5f61010082360312156132d3575f5ffd5b6132db612b23565b6132e483612a90565b81526132f260208401612a56565b602082015261330360408401612a56565b604082015261331460608401612a90565b606082015261332560808401612a56565b608082015261333660a0840161325c565b60a082015260c08301356001600160401b03811115613353575f5ffd5b61335f36828601613267565b60c08301525060e08301356001600160401b0381111561337d575f5ffd5b61338936828601613267565b60e08301525092915050565b5f602082840312156133a5575f5ffd5b8135610c3e81612a7c565b5f5f8335601e198436030181126133c5575f5ffd5b8301803591506001600160401b038211156133de575f5ffd5b6020019150600581901b3603821315612cca575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613419575f5ffd5b8135610c3e8161324b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ba576106ba613424565b8051611fa08161324b565b5f5f60408385031215613467575f5ffd5b825160208401519092506001600160401b03811115613484575f5ffd5b83016101608186031215613496575f5ffd5b61349e612b46565b6134a782612fbd565b81526134b560208301612fbd565b60208201526134c66040830161344b565b60408201526134d760608301612fc8565b60608201526134e860808301612fbd565b60808201526134f960a08301612fc8565b60a082015261350a60c08301612fbd565b60c082015261351b60e08301612fc8565b60e082015261352d6101008301612fc8565b61010082015261012082810151908201526101408201516001600160401b03811115613557575f5ffd5b61356387828501612fd3565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561358d575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f906135e19083018688613576565b82810360808401526135f4818587613576565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156136ae575f5ffd5b85356001600160401b038111156136c3575f5ffd5b8601608081890312156136d4575f5ffd5b6136dc612afb565b81356136e781612a7c565b815260208201356136f781612a42565b602082015260408201356001600160401b03811115613714575f5ffd5b6137208a828501612bbf565b60408301525060608201356001600160401b0381111561373e575f5ffd5b61374a8a828501612bbf565b6060830152509550613760905060208701612a56565b935061376e60408701612a56565b925060608601356001600160401b03811115613788575f5ffd5b61379488828901613267565b92505060808601356001600160401b038111156137af575f5ffd5b6131c788828901613267565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f906137f5908301856131d4565b828103608084015261380781856131d4565b98975050505050505050565b600181811c9082168061382757607f821691505b602082108103610b4157634e487b7160e01b5f52602260045260245ffd5b5f6060828403128015613856575f5ffd5b50604051606081016001600160401b038111828210171561387957613879612ae7565b60405282518152602083015161388e81612a42565b602082015260408301516138a181612a7c565b60408201529392505050565b6001600160a01b0385811682528416602082015260a0604082018190525f906138d8908301856131d4565b82810360608401526138ea81856131d4565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f90613929908301856131d4565b82810360408401526127ad81856131d4565b5f6020828403121561394b575f5ffd5b8151610c3e81612a9b565b6001600160a01b0387811682528616602082015260a0604082018190525f906139829083018688613576565b8281036060840152613995818587613576565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f906139f6610120840182612927565b905060608a0151609f1984830301610100850152613a148282612927565b915050613a2c602084018a6001600160a01b03169052565b6001600160a01b03881660408401528281036060840152613a4e818789613576565b905082810360808401526135f4818587613576565b602081525f610c3e6020830184612927565b5f60208284031215613a85575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f8251613ae8818460208701612905565b9190910192915050565b5f60208284031215613b02575f5ffd5b8151610c3e81612a42565b6001600160a01b0387811682528681166020830152851660408201526001600160401b038416606082015260c0608082018190525f90613b4f90830185612927565b82810360a0840152613b618185612927565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f90610c3b90830184612927565b601f8211156111fd57805f5260205f20601f840160051c81016020851015613bb65750805b601f840160051c820191505b81811015613bd5575f8155600101613bc2565b5050505050565b81516001600160401b03811115613bf557613bf5612ae7565b613c0981613c038454613813565b84613b91565b6020601f821160018114613c3b575f8315613c245750848201515b5f19600385901b1c1916600184901b178455613bd5565b5f84815260208120601f198516915b82811015613c6a5787850151825560209485019460019092019101613c4a565b5084821015613c8757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f613ca86040830185612927565b82810360208401526130168185612927565b5f60208284031215613cca575f5ffd5b81516001600160401b03811115613cdf575f5ffd5b61146784828501612fd3565b5f60ff821660ff8103613d0057613d00613424565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e67f8ea00e362cad72cd2e8e61f89b237848f76dd2a93bc34c0064a232f8158c64736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000004": { + "0x1670100000000000000000000000000000000004": { "contractName": "ERC1155Vault", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000004" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000000006", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000004" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010096": { + "0x0167010000000000000000000000000000010096": { "contractName": "BridgedERC20", "storage": {}, - "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106d9578063f12506c1146106f6578063f2fde38b1461070a575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b50610256610251366004612185565b610729565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107cb565b60405161026291906121ce565b348015610297575f5ffd5b506102566102a6366004612214565b61085b565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b5061025661030436600461223e565b610872565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b50610256610895565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a836600461227c565b6108ad565b005b3480156103ba575f5ffd5b506102566103c9366004612214565b61097d565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122ab565b61099e565b34801561042f575f5ffd5b506103ad6109b2565b348015610443575f5ffd5b506103ad610452366004612214565b6109c6565b348015610462575f5ffd5b506103ad6104713660046122f1565b610ae0565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a36600461231c565b610c1d565b3480156104aa575f5ffd5b506102dc610cd2565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed36600461227c565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d83565b348015610526575f5ffd5b506103ad610d94565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e0b565b34801561058e575f5ffd5b506103ed610e1e565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e2c565b3480156105d3575f5ffd5b506102566105e2366004612214565b610e3b565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123df565b610eb5565b348015610632575f5ffd5b50610256610641366004612214565b610ec8565b348015610651575f5ffd5b506103ad610660366004612409565b610ed5565b348015610670575f5ffd5b506103ad61067f366004612477565b611052565b34801561068f575f5ffd5b506102dc61069e36600461253d565b611212565b3480156106ae575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610262565b3480156106e4575f5ffd5b506065546001600160a01b03166103ed565b348015610701575f5ffd5b5061025661123c565b348015610715575f5ffd5b506103ad61072436600461227c565b611267565b5f6001600160e01b0319821663093e326b60e21b148061075957506001600160e01b0319821663bb86ef9360e01b145b8061077457506001600160e01b0319821663b8f2e0c560e01b145b8061078f57506001600160e01b031982166336372b0760e01b145b806107aa57506001600160e01b0319821663a219a02560e01b145b806107c557506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107da90612574565b80601f016020809104026020016040519081016040528092919081815260200182805461080690612574565b80156108515780601f1061082857610100808354040283529160200191610851565b820191905f5260205f20905b81548152906001019060200180831161083457829003601f168201915b5050505050905090565b5f336108688185856112d8565b5060019392505050565b5f3361087f8582856113fb565b61088a858585611473565b506001949350505050565b5f60026108a460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108fe5760405162461bcd60e51b81526004016108f5906125ac565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610930611627565b6001600160a01b0316146109565760405162461bcd60e51b81526004016108f5906125f8565b61095f81611642565b604080515f8082526020820190925261097a9183919061164a565b50565b5f3361086881858561098f8383611212565b6109999190612644565b6112d8565b5f6109aa8484846117b4565b949350505050565b6109ba611810565b6109c4335f6118a0565b565b6109da60c954610100900460ff1660021490565b156109f85760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0660c95460ff1690565b60ff1603610a275760405163dfc60d8560e01b815260040160405180910390fd5b610a3160026118a8565b610a3961123c565b15610a575760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610abe57826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610ab191815260200190565b60405180910390a3610ac7565b610ac7336118be565b610ad18383611936565b50610adc60016118a8565b5050565b610af460c954610100900460ff1660021490565b15610b125760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2060c95460ff1690565b60ff1603610b415760405163dfc60d8560e01b815260040160405180910390fd5b610b4b60026118a8565b610b5361123c565b15610c005761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610be4575f5ffd5b505af1158015610bf6573d5f5f3e3d5ffd5b5050505050610c09565b610c09336118be565b610c133382611a00565b61097a60016118a8565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610c655760405162461bcd60e51b81526004016108f5906125ac565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610c97611627565b6001600160a01b031614610cbd5760405162461bcd60e51b81526004016108f5906125f8565b610cc682611642565b610adc8282600161164a565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610d715760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108f5565b505f5160206128015f395f51905f5290565b610d8b611b3d565b6109c45f611b97565b60655433906001600160a01b03168114610e025760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108f5565b61097a81611b97565b610e13611bb0565b6109c43360016118a0565b5f610e27611627565b905090565b606060ff80546107da90612574565b5f3381610e488286611212565b905083811015610ea85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108f5565b61088a82868684036112d8565b5f610ec14684846117b4565b9392505050565b5f33610868818585611473565b610ee960c954610100900460ff1660021490565b15610f075760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f21816001610eb5565b6001600160a01b0316336001600160a01b031614610f5257604051630d85cccf60e11b815260040160405180910390fd5b6002610f6060c95460ff1690565b60ff1603610f815760405163dfc60d8560e01b815260040160405180910390fd5b610f8b60026118a8565b61012f546001600160a01b038481169116148015610fbc575061012f60149054906101000a900460ff161515821515145b15610fda5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161104d60016118a8565b505050565b5f54610100900460ff161580801561107057505f54600160ff909116105b806110895750303b15801561108957505f5460ff166001145b6110ec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108f5565b5f805460ff19166001179055801561110d575f805461ff0019166101001790555b6111178888611c21565b6111218a8a611c5d565b61119283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9792505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611206575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e2757505061012f54600160a01b900460ff161590565b61126f611b3d565b606580546001600160a01b0383166001600160a01b031990911681179091556112a06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b03831661133a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108f5565b6001600160a01b03821661139b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108f5565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6114068484611212565b90505f19811461146d57818110156114605760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108f5565b61146d84848484036112d8565b50505050565b6001600160a01b0383166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108f5565b6001600160a01b0382166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108f5565b611544838383611cc7565b6001600160a01b0383165f90815260fb6020526040902054818110156115bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108f5565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061161a9086815260200190565b60405180910390a361146d565b5f5160206128015f395f51905f52546001600160a01b031690565b61097a611b3d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561167d5761104d83611d02565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116d7575060408051601f3d908101601f191682019092526116d491810190612663565b60015b61173a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108f5565b5f5160206128015f395f51905f5281146117a85760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108f5565b5061104d838383611d9d565b5f6117bf8484611dc1565b905081806117d557506001600160a01b03811615155b8484909161180757604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016108f5565b50509392505050565b61182460c954610100900460ff1660021490565b6118415760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610adc611b3d565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118df6033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806119195750611904816001610eb5565b6001600160a01b0316336001600160a01b0316145b610adc57604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108f5565b6119975f8383611cc7565b8060fd5f8282546119a89190612644565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a605760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108f5565b611a6b825f83611cc7565b6001600160a01b0382165f90815260fb602052604090205481811015611ade5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108f5565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108f5565b606580546001600160a01b031916905561097a81611e63565b611bc460c954610100900460ff1660021490565b15611be25760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611896565b6001600160a01b0382161580611c35575080155b80611c3f57504681145b15610adc5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c855760405163538ba4f960e01b815260040160405180910390fd5b611c8e83611eb4565b61104d82611f12565b5f54610100900460ff16611cbd5760405162461bcd60e51b81526004016108f59061267a565b610adc8282611f82565b611cdb60c954610100900460ff1660021490565b15611cf95760405163bae6e2a960e01b815260040160405180910390fd5b61104d82611fc1565b6001600160a01b0381163b611d6f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108f5565b5f5160206128015f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611da683611fea565b5f82511180611db25750805b1561104d5761146d8383612029565b6097545f906001600160a01b031680611ded57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e3f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109aa91906126c5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611eda5760405162461bcd60e51b81526004016108f59061267a565b611ee261204e565b611f006001600160a01b03821615611efa5781611b97565b33611b97565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f385760405162461bcd60e51b81526004016108f59061267a565b6001600160401b03461115611f605760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611fa85760405162461bcd60e51b81526004016108f59061267a565b60fe611fb4838261272b565b5060ff61104d828261272b565b306001600160a01b0382160361097a57604051630c292c9d60e21b815260040160405180910390fd5b611ff381611d02565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ec1838360405180606001604052806027815260200161282160279139612074565b5f54610100900460ff166109c45760405162461bcd60e51b81526004016108f59061267a565b60605f5f856001600160a01b03168560405161209091906127e5565b5f60405180830381855af49150503d805f81146120c8576040519150601f19603f3d011682016040523d82523d5f602084013e6120cd565b606091505b50915091506120de868383876120e8565b9695505050505050565b606083156121565782515f0361214f576001600160a01b0385163b61214f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108f5565b50816109aa565b6109aa838381511561216b5781518083602001fd5b8060405162461bcd60e51b81526004016108f591906121ce565b5f60208284031215612195575f5ffd5b81356001600160e01b031981168114610ec1575f5ffd5b5f5b838110156121c65781810151838201526020016121ae565b50505f910152565b602081525f82518060208401526121ec8160408501602087016121ac565b601f01601f19169190910160400192915050565b6001600160a01b038116811461097a575f5ffd5b5f5f60408385031215612225575f5ffd5b823561223081612200565b946020939093013593505050565b5f5f5f60608486031215612250575f5ffd5b833561225b81612200565b9250602084013561226b81612200565b929592945050506040919091013590565b5f6020828403121561228c575f5ffd5b8135610ec181612200565b803580151581146122a6575f5ffd5b919050565b5f5f5f606084860312156122bd575f5ffd5b83356001600160401b03811681146122d3575f5ffd5b9250602084013591506122e860408501612297565b90509250925092565b5f60208284031215612301575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561232d575f5ffd5b823561233881612200565b915060208301356001600160401b03811115612352575f5ffd5b8301601f81018513612362575f5ffd5b80356001600160401b0381111561237b5761237b612308565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123a9576123a9612308565b6040528181528282016020018710156123c0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f0575f5ffd5b8235915061240060208401612297565b90509250929050565b5f5f6040838503121561241a575f5ffd5b823561242581612200565b915061240060208401612297565b5f5f83601f840112612443575f5ffd5b5081356001600160401b03811115612459575f5ffd5b602083019150836020828501011115612470575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c03121561248f575f5ffd5b893561249a81612200565b985060208a01356124aa81612200565b975060408a01356124ba81612200565b965060608a0135955060808a013560ff811681146124d6575f5ffd5b945060a08a01356001600160401b038111156124f0575f5ffd5b6124fc8c828d01612433565b90955093505060c08a01356001600160401b0381111561251a575f5ffd5b6125268c828d01612433565b915080935050809150509295985092959850929598565b5f5f6040838503121561254e575f5ffd5b823561255981612200565b9150602083013561256981612200565b809150509250929050565b600181811c9082168061258857607f821691505b6020821081036125a657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107c557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215612673575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126d5575f5ffd5b8151610ec181612200565b601f82111561104d57805f5260205f20601f840160051c810160208510156127055750805b601f840160051c820191505b81811015612724575f8155600101612711565b5050505050565b81516001600160401b0381111561274457612744612308565b612758816127528454612574565b846126e0565b6020601f82116001811461278a575f83156127735750848201515b5f19600385901b1c1916600184901b178455612724565b5f84815260208120601f198516915b828110156127b95787850151825560209485019460019092019101612799565b50848210156127d657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127f68184602087016121ac565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220217a3819e82070457abbbadebb33fc33a95ce341341171f04951c38aca59c1ee64736f6c634300081b0033", + "code": "0x608060405260043610610233575f3560e01c806370a0823111610129578063a77f1516116100a8578063dd62ed3e1161006d578063dd62ed3e14610684578063e07baba6146106a3578063e30c3978146106e0578063f12506c1146106fd578063f2fde38b14610711575f5ffd5b8063a77f1516146105e7578063a86f9d9e14610608578063a9059cbb14610627578063b8f2e0c514610646578063bb86ef9314610665575f5ffd5b80638456cb59116100ee5780638456cb591461056f5780638abf6077146105835780638da5cb5b1461059757806395d89b41146105b4578063a457c2d7146105c8575f5ffd5b806370a08231146104d3578063715018a61461050757806379ba50971461051b5780637cf8ed0d1461052f5780637e4746341461054f575f5ffd5b806339509351116101b557806342966c681161017a57806342966c681461045757806349d12605146104765780634f1ef2861461048c57806352d1902d1461049f5780635c975abb146104b3575f5ffd5b806339509351146103af5780633ab76e9f146103ce5780633eb6b8cf146104055780633f4ba83a1461042457806340c10f1914610438575f5ffd5b806323b872dd116101fb57806323b872dd146102ea57806326afaadd146103095780633075db561461034d578063313ce567146103615780633659cfe61461038e575f5ffd5b806301ffc9a71461023757806306fdde031461026b578063095ea7b31461028c5780630ae74548146102ab57806318160ddd146102cc575b5f5ffd5b348015610242575f5ffd5b5061025661025136600461218c565b610730565b60405190151581526020015b60405180910390f35b348015610276575f5ffd5b5061027f6107d2565b60405161026291906121d5565b348015610297575f5ffd5b506102566102a636600461221b565b610862565b3480156102b6575f5ffd5b5061012f5461025690600160a01b900460ff1681565b3480156102d7575f5ffd5b5060fd545b604051908152602001610262565b3480156102f5575f5ffd5b50610256610304366004612245565b610879565b348015610314575f5ffd5b5061032e61012d5461012e546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610262565b348015610358575f5ffd5b5061025661089e565b34801561036c575f5ffd5b5061012d54600160a01b900460ff165b60405160ff9091168152602001610262565b348015610399575f5ffd5b506103ad6103a8366004612283565b6108b6565b005b3480156103ba575f5ffd5b506102566103c936600461221b565b610986565b3480156103d9575f5ffd5b506097546103ed906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b348015610410575f5ffd5b506103ed61041f3660046122b2565b6109a7565b34801561042f575f5ffd5b506103ad6109bb565b348015610443575f5ffd5b506103ad61045236600461221b565b6109cf565b348015610462575f5ffd5b506103ad6104713660046122f8565b610ae9565b348015610481575f5ffd5b506102dc61012e5481565b6103ad61049a366004612323565b610c26565b3480156104aa575f5ffd5b506102dc610cdb565b3480156104be575f5ffd5b5061025660c954610100900460ff1660021490565b3480156104de575f5ffd5b506102dc6104ed366004612283565b6001600160a01b03165f90815260fb602052604090205490565b348015610512575f5ffd5b506103ad610d8c565b348015610526575f5ffd5b506103ad610d9d565b34801561053a575f5ffd5b5061012d546103ed906001600160a01b031681565b34801561055a575f5ffd5b5061012f546103ed906001600160a01b031681565b34801561057a575f5ffd5b506103ad610e14565b34801561058e575f5ffd5b506103ed610e27565b3480156105a2575f5ffd5b506033546001600160a01b03166103ed565b3480156105bf575f5ffd5b5061027f610e35565b3480156105d3575f5ffd5b506102566105e236600461221b565b610e44565b3480156105f2575f5ffd5b5061012d5461037c90600160a01b900460ff1681565b348015610613575f5ffd5b506103ed6106223660046123e6565b610ec9565b348015610632575f5ffd5b5061025661064136600461221b565b610ed5565b348015610651575f5ffd5b506103ad610660366004612410565b610ee2565b348015610670575f5ffd5b506103ad61067f36600461247e565b61105f565b34801561068f575f5ffd5b506102dc61069e366004612544565b61121f565b3480156106ae575f5ffd5b5060c9546106c8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610262565b3480156106eb575f5ffd5b506065546001600160a01b03166103ed565b348015610708575f5ffd5b50610256611249565b34801561071c575f5ffd5b506103ad61072b366004612283565b611274565b5f6001600160e01b0319821663093e326b60e21b148061076057506001600160e01b0319821663bb86ef9360e01b145b8061077b57506001600160e01b0319821663b8f2e0c560e01b145b8061079657506001600160e01b031982166336372b0760e01b145b806107b157506001600160e01b0319821663a219a02560e01b145b806107cc57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe80546107e19061257b565b80601f016020809104026020016040519081016040528092919081815260200182805461080d9061257b565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f3361086f8185856112e5565b5060019392505050565b5f33610886858285611408565b610891858585611480565b60019150505b9392505050565b5f60026108ad60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100961630036109075760405162461bcd60e51b81526004016108fe906125b3565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000100966001600160a01b0316610939611634565b6001600160a01b03161461095f5760405162461bcd60e51b81526004016108fe906125ff565b6109688161164f565b604080515f8082526020820190925261098391839190611657565b50565b5f3361086f818585610998838361121f565b6109a2919061264b565b6112e5565b5f6109b38484846117c1565b949350505050565b6109c3611813565b6109cd335f6118a3565b565b6109e360c954610100900460ff1660021490565b15610a015760405163bae6e2a960e01b815260040160405180910390fd5b6002610a0f60c95460ff1690565b60ff1603610a305760405163dfc60d8560e01b815260040160405180910390fd5b610a3a60026118ab565b610a42611249565b15610a605760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610ac757826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610aba91815260200190565b60405180910390a3610ad0565b610ad0336118c1565b610ada838361193d565b50610ae560016118ab565b5050565b610afd60c954610100900460ff1660021490565b15610b1b5760405163bae6e2a960e01b815260040160405180910390fd5b6002610b2960c95460ff1690565b60ff1603610b4a5760405163dfc60d8560e01b815260040160405180910390fd5b610b5460026118ab565b610b5c611249565b15610c095761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610bed575f5ffd5b505af1158015610bff573d5f5f3e3d5ffd5b5050505050610c12565b610c12336118c1565b610c1c3382611a07565b61098360016118ab565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010096163003610c6e5760405162461bcd60e51b81526004016108fe906125b3565b7f00000000000000000000000001670100000000000000000000000000000100966001600160a01b0316610ca0611634565b6001600160a01b031614610cc65760405162461bcd60e51b81526004016108fe906125ff565b610ccf8261164f565b610ae582826001611657565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100961614610d7a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108fe565b505f5160206128085f395f51905f5290565b610d94611b44565b6109cd5f611b9e565b60655433906001600160a01b03168114610e0b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108fe565b61098381611b9e565b610e1c611bb7565b6109cd3360016118a3565b5f610e30611634565b905090565b606060ff80546107e19061257b565b5f3381610e51828661121f565b905083811015610eb15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108fe565b610ebe82868684036112e5565b506001949350505050565b5f6108974684846117c1565b5f3361086f818585611480565b610ef660c954610100900460ff1660021490565b15610f145760405163bae6e2a960e01b815260040160405180910390fd5b6a195c98cc8c17dd985d5b1d60aa1b610f2e816001610ec9565b6001600160a01b0316336001600160a01b031614610f5f57604051630d85cccf60e11b815260040160405180910390fd5b6002610f6d60c95460ff1690565b60ff1603610f8e5760405163dfc60d8560e01b815260040160405180910390fd5b610f9860026118ab565b61012f546001600160a01b038481169116148015610fc9575061012f60149054906101000a900460ff161515821515145b15610fe75760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a161105a60016118ab565b505050565b5f54610100900460ff161580801561107d57505f54600160ff909116105b806110965750303b15801561109657505f5460ff166001145b6110f95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108fe565b5f805460ff19166001179055801561111a575f805461ff0019166101001790555b6111248888611c28565b61112e8a8a611c64565b61119f83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611c9e92505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015611213575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610e3057505061012f54600160a01b900460ff161590565b61127c611b44565b606580546001600160a01b0383166001600160a01b031990911681179091556112ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b0383166113475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108fe565b6001600160a01b0382166113a85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108fe565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f611413848461121f565b90505f19811461147a578181101561146d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108fe565b61147a84848484036112e5565b50505050565b6001600160a01b0383166114e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108fe565b6001600160a01b0382166115465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108fe565b611551838383611cce565b6001600160a01b0383165f90815260fb6020526040902054818110156115c85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108fe565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116279086815260200190565b60405180910390a361147a565b5f5160206128085f395f51905f52546001600160a01b031690565b610983611b44565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561168a5761105a83611d09565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e4575060408051601f3d908101601f191682019092526116e19181019061266a565b60015b6117475760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108fe565b5f5160206128085f395f51905f5281146117b55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108fe565b5061105a838383611da4565b5f6117cc8484611dc8565b9050811580156117e357506001600160a01b038116155b1561089757604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016108fe565b61182760c954610100900460ff1660021490565b6118445760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610ae5611b44565b60c9805460ff191660ff92909216919091179055565b6a195c98cc8c17dd985d5b1d60aa1b6118e26033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415801561191f5750611909816001610ec9565b6001600160a01b0316336001600160a01b031614155b15610ae557604051630d85cccf60e11b815260040160405180910390fd5b6001600160a01b0382166119935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108fe565b61199e5f8383611cce565b8060fd5f8282546119af919061264b565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216611a675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108fe565b611a72825f83611cce565b6001600160a01b0382165f90815260fb602052604090205481811015611ae55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108fe565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6033546001600160a01b031633146109cd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108fe565b606580546001600160a01b031916905561098381611e6a565b611bcb60c954610100900460ff1660021490565b15611be95760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611899565b6001600160a01b0382161580611c3c575080155b80611c4657504681145b15610ae55760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611c8c5760405163538ba4f960e01b815260040160405180910390fd5b611c9583611ebb565b61105a82611f19565b5f54610100900460ff16611cc45760405162461bcd60e51b81526004016108fe90612681565b610ae58282611f89565b611ce260c954610100900460ff1660021490565b15611d005760405163bae6e2a960e01b815260040160405180910390fd5b61105a82611fc8565b6001600160a01b0381163b611d765760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108fe565b5f5160206128085f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611dad83611ff1565b5f82511180611db95750805b1561105a5761147a8383612030565b6097545f906001600160a01b031680611df457604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e46573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109b391906126cc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611ee15760405162461bcd60e51b81526004016108fe90612681565b611ee9612055565b611f076001600160a01b03821615611f015781611b9e565b33611b9e565b5060c9805461ff001916610100179055565b5f54610100900460ff16611f3f5760405162461bcd60e51b81526004016108fe90612681565b6001600160401b03461115611f675760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff16611faf5760405162461bcd60e51b81526004016108fe90612681565b60fe611fbb8382612732565b5060ff61105a8282612732565b306001600160a01b0382160361098357604051630c292c9d60e21b815260040160405180910390fd5b611ffa81611d09565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061089783836040518060600160405280602781526020016128286027913961207b565b5f54610100900460ff166109cd5760405162461bcd60e51b81526004016108fe90612681565b60605f5f856001600160a01b03168560405161209791906127ec565b5f60405180830381855af49150503d805f81146120cf576040519150601f19603f3d011682016040523d82523d5f602084013e6120d4565b606091505b50915091506120e5868383876120ef565b9695505050505050565b6060831561215d5782515f03612156576001600160a01b0385163b6121565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108fe565b50816109b3565b6109b383838151156121725781518083602001fd5b8060405162461bcd60e51b81526004016108fe91906121d5565b5f6020828403121561219c575f5ffd5b81356001600160e01b031981168114610897575f5ffd5b5f5b838110156121cd5781810151838201526020016121b5565b50505f910152565b602081525f82518060208401526121f38160408501602087016121b3565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610983575f5ffd5b5f5f6040838503121561222c575f5ffd5b823561223781612207565b946020939093013593505050565b5f5f5f60608486031215612257575f5ffd5b833561226281612207565b9250602084013561227281612207565b929592945050506040919091013590565b5f60208284031215612293575f5ffd5b813561089781612207565b803580151581146122ad575f5ffd5b919050565b5f5f5f606084860312156122c4575f5ffd5b83356001600160401b03811681146122da575f5ffd5b9250602084013591506122ef6040850161229e565b90509250925092565b5f60208284031215612308575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612334575f5ffd5b823561233f81612207565b915060208301356001600160401b03811115612359575f5ffd5b8301601f81018513612369575f5ffd5b80356001600160401b038111156123825761238261230f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156123b0576123b061230f565b6040528181528282016020018710156123c7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156123f7575f5ffd5b823591506124076020840161229e565b90509250929050565b5f5f60408385031215612421575f5ffd5b823561242c81612207565b91506124076020840161229e565b5f5f83601f84011261244a575f5ffd5b5081356001600160401b03811115612460575f5ffd5b602083019150836020828501011115612477575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f5f60e08a8c031215612496575f5ffd5b89356124a181612207565b985060208a01356124b181612207565b975060408a01356124c181612207565b965060608a0135955060808a013560ff811681146124dd575f5ffd5b945060a08a01356001600160401b038111156124f7575f5ffd5b6125038c828d0161243a565b90955093505060c08a01356001600160401b03811115612521575f5ffd5b61252d8c828d0161243a565b915080935050809150509295985092959850929598565b5f5f60408385031215612555575f5ffd5b823561256081612207565b9150602083013561257081612207565b809150509250929050565b600181811c9082168061258f57607f821691505b6020821081036125ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b808201808211156107cc57634e487b7160e01b5f52601160045260245ffd5b5f6020828403121561267a575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156126dc575f5ffd5b815161089781612207565b601f82111561105a57805f5260205f20601f840160051c8101602085101561270c5750805b601f840160051c820191505b8181101561272b575f8155600101612718565b5050505050565b81516001600160401b0381111561274b5761274b61230f565b61275f81612759845461257b565b846126e7565b6020601f821160018114612791575f831561277a5750848201515b5f19600385901b1c1916600184901b17845561272b565b5f84815260208120601f198516915b828110156127c057878501518255602094850194600190920191016127a0565b50848210156127dd57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516127fd8184602087016121b3565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206de11e098828560ed8b32ec4c49b5259fec7bac640db1effdfd9fcc5e0efa77b64736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010097": { + "0x0167010000000000000000000000000000010097": { "contractName": "BridgedERC721", "storage": {}, - "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c3978146105f9578063e985e9c514610616578063ef8c4ae61461065e578063f2fde38b1461067d575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612542565b61069c565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e1565b60405161023691906125aa565b34801561026b575f5ffd5b5061027f61027a3660046125bc565b610772565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e7565b610798565b005b3480156102c3575f5ffd5b506102b66102d2366004612611565b6108b1565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e2565b34801561033a575f5ffd5b506102b661034936600461264f565b6108fa565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f61038736600461267e565b6109c1565b348015610397575f5ffd5b506102b66109d5565b3480156103ab575f5ffd5b506102b66103ba3660046125e7565b6109e9565b3480156103ca575f5ffd5b506102b66103d9366004612611565b610ab4565b3480156103e9575f5ffd5b506102b66103f83660046125bc565b610ace565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f366004612761565b610bcd565b34801561043f575f5ffd5b50610413610c82565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125bc565b610d33565b348015610492575f5ffd5b506104136104a136600461264f565b610d93565b3480156104b1575f5ffd5b506102b6610e18565b3480156104c5575f5ffd5b506102b6610e29565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea0565b34801561050d575f5ffd5b5061027f610eb3565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610ec1565b348015610552575f5ffd5b506102b66105613660046127ad565b610ed1565b348015610571575f5ffd5b5061027f6105803660046127e0565b610edc565b348015610590575f5ffd5b506102b661059f366004612801565b610eef565b3480156105af575f5ffd5b506102536105be3660046125bc565b610f27565b3480156105ce575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610236565b348015610604575f5ffd5b506065546001600160a01b031661027f565b348015610621575f5ffd5b5061022a610630366004612868565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610669575f5ffd5b506102b66106783660046128e3565b610f50565b348015610688575f5ffd5b506102b661069736600461264f565b611102565b5f6001600160e01b0319821663093e326b60e21b14806106cc57506001600160e01b031982166377c6257360e11b145b806106db57506106db82611173565b92915050565b606061012d80546106f190612990565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90612990565b80156107685780601f1061073f57610100808354040283529160200191610768565b820191905f5260205f20905b81548152906001019060200180831161074b57829003601f168201915b5050505050905090565b5f61077c826111c2565b505f90815261013160205260409020546001600160a01b031690565b5f6107a282610d33565b9050806001600160a01b0316836001600160a01b0316036108145760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083057506108308133610630565b6108a25760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161080b565b6108ac8383611221565b505050565b6108bb338261128f565b6108d75760405162461bcd60e51b815260040161080b906129c8565b6108ac83838361130c565b5f60026108f160c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036109425760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b031661097461147e565b6001600160a01b03161461099a5760405162461bcd60e51b815260040161080b90612a61565b6109a381611499565b604080515f808252602082019092526109be918391906114a1565b50565b5f6109cd84848461160b565b949350505050565b6109dd611667565b6109e7335f6116f7565b565b6109fd60c954610100900460ff1660021490565b15610a1b5760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a36816001610edc565b6001600160a01b0316336001600160a01b031614610a6757604051630d85cccf60e11b815260040160405180910390fd5b6002610a7560c95460ff1690565b60ff1603610a965760405163dfc60d8560e01b815260040160405180910390fd5b610aa060026116ff565b610aaa8383611715565b6108ac60016116ff565b6108ac83838360405180602001604052805f815250610eef565b610ae260c954610100900460ff1660021490565b15610b005760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b1b816001610edc565b6001600160a01b0316336001600160a01b031614610b4c57604051630d85cccf60e11b815260040160405180910390fd5b6002610b5a60c95460ff1690565b60ff1603610b7b5760405163dfc60d8560e01b815260040160405180910390fd5b610b8560026116ff565b33610b8f83610d33565b6001600160a01b031614610bb65760405163358bf3d960e01b815260040160405180910390fd5b610bbf8261172e565b610bc960016116ff565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610c155760405162461bcd60e51b815260040161080b90612a15565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610c4761147e565b6001600160a01b031614610c6d5760405162461bcd60e51b815260040161080b90612a61565b610c7682611499565b610bc9828260016114a1565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610d215760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161080b565b505f516020612e1e5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106db5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f6001600160a01b038216610dfc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161080b565b506001600160a01b03165f908152610130602052604090205490565b610e206117d0565b6109e75f61182a565b60655433906001600160a01b03168114610e975760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161080b565b6109be8161182a565b610ea8611843565b6109e73360016116f7565b5f610ebc61147e565b905090565b606061012e80546106f190612990565b610bc93383836118b4565b5f610ee846848461160b565b9392505050565b610ef9338361128f565b610f155760405162461bcd60e51b815260040161080b906129c8565b610f2184848484611982565b50505050565b61015f54610160546060916106db916001600160a01b0390911690610f4b856119b5565b611a44565b5f54610100900460ff1615808015610f6e57505f54600160ff909116105b80610f875750303b158015610f8757505f5460ff166001145b610fea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161080b565b5f805460ff19166001179055801561100b575f805461ff0019166101001790555b6110158787611a8e565b61101f8989611aca565b61109083838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611b0492505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f7575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110a6117d0565b606580546001600160a01b0383166001600160a01b0319909116811790915561113b6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a357506001600160e01b03198216635b5e139f60e01b145b806106db57506301ffc9a760e01b6001600160e01b03198316146106db565b5f81815261012f60205260409020546001600160a01b03166109be5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161080b565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125682610d33565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129a83610d33565b9050806001600160a01b0316846001600160a01b031614806112e157506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806109cd5750836001600160a01b03166112fa84610772565b6001600160a01b031614949350505050565b826001600160a01b031661131f82610d33565b6001600160a01b0316146113455760405162461bcd60e51b815260040161080b90612aad565b6001600160a01b0382166113a75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161080b565b6113b48383836001611b34565b826001600160a01b03166113c782610d33565b6001600160a01b0316146113ed5760405162461bcd60e51b815260040161080b90612aad565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e1e5f395f51905f52546001600160a01b031690565b6109be6117d0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d4576108ac83611b74565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561152e575060408051601f3d908101601f1916820190925261152b91810190612af2565b60015b6115915760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161080b565b5f516020612e1e5f395f51905f5281146115ff5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161080b565b506108ac838383611c0f565b5f6116168484611c33565b9050818061162c57506001600160a01b03811615155b8484909161165e57604051632b0d65db60e01b81526001600160401b039092166004830152602482015260440161080b565b50509392505050565b61167b60c954610100900460ff1660021490565b6116985760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bc96117d0565b60c9805460ff191660ff92909216919091179055565b610bc9828260405180602001604052805f815250611cd5565b5f61173882610d33565b9050611747815f846001611b34565b61175082610d33565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109e75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161080b565b606580546001600160a01b03191690556109be81611d07565b61185760c954610100900460ff1660021490565b156118755760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116ed565b816001600160a01b0316836001600160a01b0316036119155760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161080b565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198d84848461130c565b61199984848484611d58565b610f215760405162461bcd60e51b815260040161080b90612b09565b60605f6119c183611e55565b60010190505f816001600160401b038111156119df576119df6126c4565b6040519080825280601f01601f191660200182016040528015611a09576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a1357509392505050565b6060611a5a846001600160a01b03166014611f2c565b611a63846119b5565b83604051602001611a7693929190612b5b565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611aa2575080155b80611aac57504681145b15610bc95760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611af25760405163538ba4f960e01b815260040160405180910390fd5b611afb836120c1565b6108ac8261211f565b5f54610100900460ff16611b2a5760405162461bcd60e51b815260040161080b90612be3565b610bc9828261218f565b611b4860c954610100900460ff1660021490565b15611b665760405163bae6e2a960e01b815260040160405180910390fd5b611b6f836121d0565b610f21565b6001600160a01b0381163b611be15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161080b565b5f516020612e1e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c18836121f9565b5f82511180611c245750805b156108ac57610f218383612238565b6097545f906001600160a01b031680611c5f57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611cb1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cd9190612c2e565b611cdf838361225d565b611ceb5f848484611d58565b6108ac5760405162461bcd60e51b815260040161080b90612b09565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d9b903390899088908890600401612c49565b6020604051808303815f875af1925050508015611dd5575060408051601f3d908101601f19168201909252611dd291810190612c7b565b60015b611e30573d808015611e02576040519150601f19603f3d011682016040523d82523d5f602084013e611e07565b606091505b5080515f03611e285760405162461bcd60e51b815260040161080b90612b09565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506109cd565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e935772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611ebf576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611edd57662386f26fc10000830492506010015b6305f5e1008310611ef5576305f5e100830492506008015b6127108310611f0957612710830492506004015b60648310611f1b576064830492506002015b600a83106106db5760010192915050565b60605f611f3a836002612caa565b611f45906002612cc1565b6001600160401b03811115611f5c57611f5c6126c4565b6040519080825280601f01601f191660200182016040528015611f86576020820181803683370190505b509050600360fc1b815f81518110611fa057611fa0612cd4565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fce57611fce612cd4565b60200101906001600160f81b03191690815f1a9053505f611ff0846002612caa565b611ffb906001612cc1565b90505b6001811115612072576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202f5761202f612cd4565b1a60f81b82828151811061204557612045612cd4565b60200101906001600160f81b03191690815f1a90535060049490941c9361206b81612ce8565b9050611ffe565b508315610ee85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161080b565b5f54610100900460ff166120e75760405162461bcd60e51b815260040161080b90612be3565b6120ef6123f6565b61210d6001600160a01b03821615612107578161182a565b3361182a565b5060c9805461ff001916610100179055565b5f54610100900460ff166121455760405162461bcd60e51b815260040161080b90612be3565b6001600160401b0346111561216d5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121b55760405162461bcd60e51b815260040161080b90612be3565b61012d6121c28382612d48565b5061012e6108ac8282612d48565b306001600160a01b038216036109be57604051630c292c9d60e21b815260040160405180910390fd5b61220281611b74565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610ee88383604051806060016040528060278152602001612e3e6027913961241c565b6001600160a01b0382166122b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161080b565b5f81815261012f60205260409020546001600160a01b0316156123185760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6123255f83836001611b34565b5f81815261012f60205260409020546001600160a01b03161561238a5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161080b565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109e75760405162461bcd60e51b815260040161080b90612be3565b60605f5f856001600160a01b0316856040516124389190612e02565b5f60405180830381855af49150503d805f8114612470576040519150601f19603f3d011682016040523d82523d5f602084013e612475565b606091505b509150915061248686838387612490565b9695505050505050565b606083156124fe5782515f036124f7576001600160a01b0385163b6124f75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161080b565b50816109cd565b6109cd83838151156125135781518083602001fd5b8060405162461bcd60e51b815260040161080b91906125aa565b6001600160e01b0319811681146109be575f5ffd5b5f60208284031215612552575f5ffd5b8135610ee88161252d565b5f5b8381101561257757818101518382015260200161255f565b50505f910152565b5f815180845261259681602086016020860161255d565b601f01601f19169290920160200192915050565b602081525f610ee8602083018461257f565b5f602082840312156125cc575f5ffd5b5035919050565b6001600160a01b03811681146109be575f5ffd5b5f5f604083850312156125f8575f5ffd5b8235612603816125d3565b946020939093013593505050565b5f5f5f60608486031215612623575f5ffd5b833561262e816125d3565b9250602084013561263e816125d3565b929592945050506040919091013590565b5f6020828403121561265f575f5ffd5b8135610ee8816125d3565b80358015158114612679575f5ffd5b919050565b5f5f5f60608486031215612690575f5ffd5b83356001600160401b03811681146126a6575f5ffd5b9250602084013591506126bb6040850161266a565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e7575f5ffd5b81356001600160401b03811115612700576127006126c4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561272e5761272e6126c4565b604052818152838201602001851015612745575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612772575f5ffd5b823561277d816125d3565b915060208301356001600160401b03811115612797575f5ffd5b6127a3858286016126d8565b9150509250929050565b5f5f604083850312156127be575f5ffd5b82356127c9816125d3565b91506127d76020840161266a565b90509250929050565b5f5f604083850312156127f1575f5ffd5b823591506127d76020840161266a565b5f5f5f5f60808587031215612814575f5ffd5b843561281f816125d3565b9350602085013561282f816125d3565b92506040850135915060608501356001600160401b03811115612850575f5ffd5b61285c878288016126d8565b91505092959194509250565b5f5f60408385031215612879575f5ffd5b8235612884816125d3565b91506020830135612894816125d3565b809150509250929050565b5f5f83601f8401126128af575f5ffd5b5081356001600160401b038111156128c5575f5ffd5b6020830191508360208285010111156128dc575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128fa575f5ffd5b8835612905816125d3565b97506020890135612915816125d3565b96506040890135612925816125d3565b95506060890135945060808901356001600160401b03811115612946575f5ffd5b6129528b828c0161289f565b90955093505060a08901356001600160401b03811115612970575f5ffd5b61297c8b828c0161289f565b999c989b5096995094979396929594505050565b600181811c908216806129a457607f821691505b6020821081036129c257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612b02575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b7e81600985016020890161255d565b600160fe1b6009918401918201528451612b9f81600a84016020890161255d565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bd681601384016020880161255d565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c3e575f5ffd5b8151610ee8816125d3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906124869083018461257f565b5f60208284031215612c8b575f5ffd5b8151610ee88161252d565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106db576106db612c96565b808201808211156106db576106db612c96565b634e487b7160e01b5f52603260045260245ffd5b5f81612cf657612cf6612c96565b505f190190565b601f8211156108ac57805f5260205f20601f840160051c81016020851015612d225750805b601f840160051c820191505b81811015612d41575f8155600101612d2e565b5050505050565b81516001600160401b03811115612d6157612d616126c4565b612d7581612d6f8454612990565b84612cfd565b6020601f821160018114612da7575f8315612d905750848201515b5f19600385901b1c1916600184901b178455612d41565b5f84815260208120601f198516915b82811015612dd65787850151825560209485019460019092019101612db6565b5084821015612df357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e1381846020870161255d565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212208e7f20477658f6c21c4be2af9744b613a47f16bf810f8e2ba3e96632cba2471a64736f6c634300081b0033", + "code": "0x608060405260043610610207575f3560e01c80636352211e11610113578063a22cb4651161009d578063e07baba61161006d578063e07baba6146105c3578063e30c397814610600578063e985e9c51461061d578063ef8c4ae614610665578063f2fde38b14610684575f5ffd5b8063a22cb46514610547578063a86f9d9e14610566578063b88d4fde14610585578063c87b56dd146105a4575f5ffd5b80637cf8ed0d116100e35780637cf8ed0d146104ce5780638456cb59146104ee5780638abf6077146105025780638da5cb5b1461051657806395d89b4114610533575f5ffd5b80636352211e1461046857806370a0823114610487578063715018a6146104a657806379ba5097146104ba575f5ffd5b80633eb6b8cf1161019457806342966c681161016457806342966c68146103de57806349d12605146103fd5780634f1ef2861461042157806352d1902d146104345780635c975abb14610448575f5ffd5b80633eb6b8cf1461036d5780633f4ba83a1461038c57806340c10f19146103a057806342842e0e146103bf575f5ffd5b806323b872dd116101da57806323b872dd146102b857806326afaadd146102d75780633075db561461031b5780633659cfe61461032f5780633ab76e9f1461034e575f5ffd5b806301ffc9a71461020b57806306fdde031461023f578063081812fc14610260578063095ea7b314610297575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461253b565b6106a3565b60405190151581526020015b60405180910390f35b34801561024a575f5ffd5b506102536106e8565b60405161023691906125a3565b34801561026b575f5ffd5b5061027f61027a3660046125b5565b610779565b6040516001600160a01b039091168152602001610236565b3480156102a2575f5ffd5b506102b66102b13660046125e0565b61079f565b005b3480156102c3575f5ffd5b506102b66102d236600461260a565b6108b8565b3480156102e2575f5ffd5b506102fc61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610236565b348015610326575f5ffd5b5061022a6108e9565b34801561033a575f5ffd5b506102b6610349366004612648565b610901565b348015610359575f5ffd5b5060975461027f906001600160a01b031681565b348015610378575f5ffd5b5061027f610387366004612677565b6109c8565b348015610397575f5ffd5b506102b66109de565b3480156103ab575f5ffd5b506102b66103ba3660046125e0565b6109f2565b3480156103ca575f5ffd5b506102b66103d936600461260a565b610abd565b3480156103e9575f5ffd5b506102b66103f83660046125b5565b610ad7565b348015610408575f5ffd5b506104136101605481565b604051908152602001610236565b6102b661042f36600461275a565b610bd6565b34801561043f575f5ffd5b50610413610c8b565b348015610453575f5ffd5b5061022a60c954610100900460ff1660021490565b348015610473575f5ffd5b5061027f6104823660046125b5565b610d3c565b348015610492575f5ffd5b506104136104a1366004612648565b610d9c565b3480156104b1575f5ffd5b506102b6610e21565b3480156104c5575f5ffd5b506102b6610e32565b3480156104d9575f5ffd5b5061015f5461027f906001600160a01b031681565b3480156104f9575f5ffd5b506102b6610ea9565b34801561050d575f5ffd5b5061027f610ebc565b348015610521575f5ffd5b506033546001600160a01b031661027f565b34801561053e575f5ffd5b50610253610eca565b348015610552575f5ffd5b506102b66105613660046127a6565b610eda565b348015610571575f5ffd5b5061027f6105803660046127d9565b610ee5565b348015610590575f5ffd5b506102b661059f3660046127fa565b610ef1565b3480156105af575f5ffd5b506102536105be3660046125b5565b610f29565b3480156105ce575f5ffd5b5060c9546105e8906201000090046001600160401b031681565b6040516001600160401b039091168152602001610236565b34801561060b575f5ffd5b506065546001600160a01b031661027f565b348015610628575f5ffd5b5061022a610637366004612861565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b348015610670575f5ffd5b506102b661067f3660046128dc565b610f52565b34801561068f575f5ffd5b506102b661069e366004612648565b611104565b5f6001600160e01b0319821663093e326b60e21b14806106d357506001600160e01b031982166377c6257360e11b145b806106e257506106e282611175565b92915050565b606061012d80546106f890612989565b80601f016020809104026020016040519081016040528092919081815260200182805461072490612989565b801561076f5780601f106107465761010080835404028352916020019161076f565b820191905f5260205f20905b81548152906001019060200180831161075257829003601f168201915b5050505050905090565b5f610783826111c4565b505f90815261013160205260409020546001600160a01b031690565b5f6107a982610d3c565b9050806001600160a01b0316836001600160a01b03160361081b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061083757506108378133610637565b6108a95760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610812565b6108b38383611223565b505050565b6108c23382611291565b6108de5760405162461bcd60e51b8152600401610812906129c1565b6108b383838361130f565b5f60026108f860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100971630036109495760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670100000000000000000000000000000100976001600160a01b031661097b611481565b6001600160a01b0316146109a15760405162461bcd60e51b815260040161081290612a5a565b6109aa8161149c565b604080515f808252602082019092526109c5918391906114a4565b50565b5f6109d484848461160e565b90505b9392505050565b6109e6611660565b6109f0335f6116f0565b565b610a0660c954610100900460ff1660021490565b15610a245760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610a3f816001610ee5565b6001600160a01b0316336001600160a01b031614610a7057604051630d85cccf60e11b815260040160405180910390fd5b6002610a7e60c95460ff1690565b60ff1603610a9f5760405163dfc60d8560e01b815260040160405180910390fd5b610aa960026116f8565b610ab3838361170e565b6108b360016116f8565b6108b383838360405180602001604052805f815250610ef1565b610aeb60c954610100900460ff1660021490565b15610b095760405163bae6e2a960e01b815260040160405180910390fd5b6b195c98cdcc8c57dd985d5b1d60a21b610b24816001610ee5565b6001600160a01b0316336001600160a01b031614610b5557604051630d85cccf60e11b815260040160405180910390fd5b6002610b6360c95460ff1690565b60ff1603610b845760405163dfc60d8560e01b815260040160405180910390fd5b610b8e60026116f8565b33610b9883610d3c565b6001600160a01b031614610bbf5760405163358bf3d960e01b815260040160405180910390fd5b610bc882611727565b610bd260016116f8565b5050565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010097163003610c1e5760405162461bcd60e51b815260040161081290612a0e565b7f00000000000000000000000001670100000000000000000000000000000100976001600160a01b0316610c50611481565b6001600160a01b031614610c765760405162461bcd60e51b815260040161081290612a5a565b610c7f8261149c565b610bd2828260016114a4565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100971614610d2a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610812565b505f516020612e175f395f51905f5290565b5f81815261012f60205260408120546001600160a01b0316806106e25760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f6001600160a01b038216610e055760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610812565b506001600160a01b03165f908152610130602052604090205490565b610e296117c9565b6109f05f611823565b60655433906001600160a01b03168114610ea05760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610812565b6109c581611823565b610eb161183c565b6109f03360016116f0565b5f610ec5611481565b905090565b606061012e80546106f890612989565b610bd23383836118ad565b5f6109d746848461160e565b610efb3383611291565b610f175760405162461bcd60e51b8152600401610812906129c1565b610f238484848461197b565b50505050565b61015f54610160546060916106e2916001600160a01b0390911690610f4d856119ae565b611a3d565b5f54610100900460ff1615808015610f7057505f54600160ff909116105b80610f895750303b158015610f8957505f5460ff166001145b610fec5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610812565b5f805460ff19166001179055801561100d575f805461ff0019166101001790555b6110178787611a87565b6110218989611ac3565b61109283838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611afd92505050565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905580156110f9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b61110c6117c9565b606580546001600160a01b0383166001600160a01b0319909116811790915561113d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806111a557506001600160e01b03198216635b5e139f60e01b145b806106e257506301ffc9a760e01b6001600160e01b03198316146106e2565b5f81815261012f60205260409020546001600160a01b03166109c55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610812565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061125882610d3c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f61129c83610d3c565b9050806001600160a01b0316846001600160a01b031614806112e357506001600160a01b038082165f908152610132602090815260408083209388168352929052205460ff165b806113075750836001600160a01b03166112fc84610779565b6001600160a01b0316145b949350505050565b826001600160a01b031661132282610d3c565b6001600160a01b0316146113485760405162461bcd60e51b815260040161081290612aa6565b6001600160a01b0382166113aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6113b78383836001611b2d565b826001600160a01b03166113ca82610d3c565b6001600160a01b0316146113f05760405162461bcd60e51b815260040161081290612aa6565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612e175f395f51905f52546001600160a01b031690565b6109c56117c9565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114d7576108b383611b6d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611531575060408051601f3d908101601f1916820190925261152e91810190612aeb565b60015b6115945760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610812565b5f516020612e175f395f51905f5281146116025760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610812565b506108b3838383611c08565b5f6116198484611c2c565b90508115801561163057506001600160a01b038116155b156109d757604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610812565b61167460c954610100900460ff1660021490565b6116915760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610bd26117c9565b60c9805460ff191660ff92909216919091179055565b610bd2828260405180602001604052805f815250611cce565b5f61173182610d3c565b9050611740815f846001611b2d565b61174982610d3c565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610812565b606580546001600160a01b03191690556109c581611d00565b61185060c954610100900460ff1660021490565b1561186e5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016116e6565b816001600160a01b0316836001600160a01b03160361190e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610812565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61198684848461130f565b61199284848484611d51565b610f235760405162461bcd60e51b815260040161081290612b02565b60605f6119ba83611e4e565b60010190505f816001600160401b038111156119d8576119d86126bd565b6040519080825280601f01601f191660200182016040528015611a02576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a0c57509392505050565b6060611a53846001600160a01b03166014611f25565b611a5c846119ae565b83604051602001611a6f93929190612b54565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611a9b575080155b80611aa557504681145b15610bd25760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611aeb5760405163538ba4f960e01b815260040160405180910390fd5b611af4836120ba565b6108b382612118565b5f54610100900460ff16611b235760405162461bcd60e51b815260040161081290612bdc565b610bd28282612188565b611b4160c954610100900460ff1660021490565b15611b5f5760405163bae6e2a960e01b815260040160405180910390fd5b611b68836121c9565b610f23565b6001600160a01b0381163b611bda5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610812565b5f516020612e175f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611c11836121f2565b5f82511180611c1d5750805b156108b357610f238383612231565b6097545f906001600160a01b031680611c5857604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611caa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113079190612c27565b611cd88383612256565b611ce45f848484611d51565b6108b35760405162461bcd60e51b815260040161081290612b02565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611e4357604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d94903390899088908890600401612c42565b6020604051808303815f875af1925050508015611dce575060408051601f3d908101601f19168201909252611dcb91810190612c74565b60015b611e29573d808015611dfb576040519150601f19603f3d011682016040523d82523d5f602084013e611e00565b606091505b5080515f03611e215760405162461bcd60e51b815260040161081290612b02565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611307565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611e8c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611eb8576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611ed657662386f26fc10000830492506010015b6305f5e1008310611eee576305f5e100830492506008015b6127108310611f0257612710830492506004015b60648310611f14576064830492506002015b600a83106106e25760010192915050565b60605f611f33836002612ca3565b611f3e906002612cba565b6001600160401b03811115611f5557611f556126bd565b6040519080825280601f01601f191660200182016040528015611f7f576020820181803683370190505b509050600360fc1b815f81518110611f9957611f99612ccd565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611fc757611fc7612ccd565b60200101906001600160f81b03191690815f1a9053505f611fe9846002612ca3565b611ff4906001612cba565b90505b600181111561206b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061202857612028612ccd565b1a60f81b82828151811061203e5761203e612ccd565b60200101906001600160f81b03191690815f1a90535060049490941c9361206481612ce1565b9050611ff7565b5083156109d75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610812565b5f54610100900460ff166120e05760405162461bcd60e51b815260040161081290612bdc565b6120e86123ef565b6121066001600160a01b038216156121005781611823565b33611823565b5060c9805461ff001916610100179055565b5f54610100900460ff1661213e5760405162461bcd60e51b815260040161081290612bdc565b6001600160401b034611156121665760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b5f54610100900460ff166121ae5760405162461bcd60e51b815260040161081290612bdc565b61012d6121bb8382612d41565b5061012e6108b38282612d41565b306001600160a01b038216036109c557604051630c292c9d60e21b815260040160405180910390fd5b6121fb81611b6d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606109d78383604051806060016040528060278152602001612e3760279139612415565b6001600160a01b0382166122ac5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610812565b5f81815261012f60205260409020546001600160a01b0316156123115760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b61231e5f83836001611b2d565b5f81815261012f60205260409020546001600160a01b0316156123835760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610812565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f54610100900460ff166109f05760405162461bcd60e51b815260040161081290612bdc565b60605f5f856001600160a01b0316856040516124319190612dfb565b5f60405180830381855af49150503d805f8114612469576040519150601f19603f3d011682016040523d82523d5f602084013e61246e565b606091505b509150915061247f86838387612489565b9695505050505050565b606083156124f75782515f036124f0576001600160a01b0385163b6124f05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610812565b5081611307565b611307838381511561250c5781518083602001fd5b8060405162461bcd60e51b815260040161081291906125a3565b6001600160e01b0319811681146109c5575f5ffd5b5f6020828403121561254b575f5ffd5b81356109d781612526565b5f5b83811015612570578181015183820152602001612558565b50505f910152565b5f815180845261258f816020860160208601612556565b601f01601f19169290920160200192915050565b602081525f6109d76020830184612578565b5f602082840312156125c5575f5ffd5b5035919050565b6001600160a01b03811681146109c5575f5ffd5b5f5f604083850312156125f1575f5ffd5b82356125fc816125cc565b946020939093013593505050565b5f5f5f6060848603121561261c575f5ffd5b8335612627816125cc565b92506020840135612637816125cc565b929592945050506040919091013590565b5f60208284031215612658575f5ffd5b81356109d7816125cc565b80358015158114612672575f5ffd5b919050565b5f5f5f60608486031215612689575f5ffd5b83356001600160401b038116811461269f575f5ffd5b9250602084013591506126b460408501612663565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126e0575f5ffd5b81356001600160401b038111156126f9576126f96126bd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612727576127276126bd565b60405281815283820160200185101561273e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561276b575f5ffd5b8235612776816125cc565b915060208301356001600160401b03811115612790575f5ffd5b61279c858286016126d1565b9150509250929050565b5f5f604083850312156127b7575f5ffd5b82356127c2816125cc565b91506127d060208401612663565b90509250929050565b5f5f604083850312156127ea575f5ffd5b823591506127d060208401612663565b5f5f5f5f6080858703121561280d575f5ffd5b8435612818816125cc565b93506020850135612828816125cc565b92506040850135915060608501356001600160401b03811115612849575f5ffd5b612855878288016126d1565b91505092959194509250565b5f5f60408385031215612872575f5ffd5b823561287d816125cc565b9150602083013561288d816125cc565b809150509250929050565b5f5f83601f8401126128a8575f5ffd5b5081356001600160401b038111156128be575f5ffd5b6020830191508360208285010111156128d5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156128f3575f5ffd5b88356128fe816125cc565b9750602089013561290e816125cc565b9650604089013561291e816125cc565b95506060890135945060808901356001600160401b0381111561293f575f5ffd5b61294b8b828c01612898565b90955093505060a08901356001600160401b03811115612969575f5ffd5b6129758b828c01612898565b999c989b5096995094979396929594505050565b600181811c9082168061299d57607f821691505b6020821081036129bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f60208284031215612afb575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612b77816009850160208901612556565b600160fe1b6009918401918201528451612b9881600a840160208901612556565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612bcf816013840160208801612556565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612c37575f5ffd5b81516109d7816125cc565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061247f90830184612578565b5f60208284031215612c84575f5ffd5b81516109d781612526565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106e2576106e2612c8f565b808201808211156106e2576106e2612c8f565b634e487b7160e01b5f52603260045260245ffd5b5f81612cef57612cef612c8f565b505f190190565b601f8211156108b357805f5260205f20601f840160051c81016020851015612d1b5750805b601f840160051c820191505b81811015612d3a575f8155600101612d27565b5050505050565b81516001600160401b03811115612d5a57612d5a6126bd565b612d6e81612d688454612989565b84612cf6565b6020601f821160018114612da0575f8315612d895750848201515b5f19600385901b1c1916600184901b178455612d3a565b5f84815260208120601f198516915b82811015612dcf5787850151825560209485019460019092019101612daf565b5084821015612dec57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612e0c818460208701612556565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205ca793a2312f9b2fc8fc6bda4c8492cc141ddbe707fcc60e6d2cb7bff225a87a64736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010098": { + "0x0167010000000000000000000000000000010098": { "contractName": "BridgedERC1155", "storage": {}, - "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c397814610568578063e985e9c514610585578063ef8c4ae6146105cd578063f242432a146105ec578063f2fde38b1461060b575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b61062a565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106c4565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e610703565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610790565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b610823565b005b3480156102fa575f5ffd5b5061023a61086f565b34801561030e575f5ffd5b506102ed61031d366004612970565b610887565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b61094e565b348015610383575f5ffd5b506102ed610962565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b610976565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a95565b3480156103ec575f5ffd5b50610208610b4e565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c00565b348015610434575f5ffd5b506102ed610c11565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c88565b34801561047c575f5ffd5b50610341610c9b565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610ca9565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cb7565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610cc2565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd5565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da7565b34801561053d575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b039091168152602001610212565b348015610573575f5ffd5b506065546001600160a01b0316610341565b348015610590575f5ffd5b5061023a61059f366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105d8575f5ffd5b506102ed6105e7366004612cf1565b610eeb565b3480156105f7575f5ffd5b506102ed610606366004612d9e565b61106b565b348015610616575f5ffd5b506102ed610625366004612970565b6110b0565b5f6001600160a01b0383166106995760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106f457506001600160e01b031982166377c6257360e11b145b806106be57506106be82611121565b610162805461071190612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461073d90612df5565b80156107885780601f1061075f57610100808354040283529160200191610788565b820191905f5260205f20905b81548152906001019060200180831161076b57829003601f168201915b505050505081565b606061012f80546107a090612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107cc90612df5565b80156108175780601f106107ee57610100808354040283529160200191610817565b820191905f5260205f20905b8154815290600101906020018083116107fa57829003601f168201915b50505050509050919050565b6001600160a01b03851633148061083f575061083f853361059f565b61085b5760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611170565b5050505050565b5f600261087e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108cf5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b031661090161130b565b6001600160a01b0316146109275760405162461bcd60e51b815260040161069090612ec7565b61093081611326565b604080515f8082526020820190925261094b9183919061132e565b50565b5f61095a848484611498565b949350505050565b61096a6114f4565b610974335f611584565b565b606081518351146109db5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610690565b5f83516001600160401b038111156109f5576109f561277e565b604051908082528060200260200182016040528015610a1e578160200160208202803683370190505b5090505f5b8451811015610a8d57610a68858281518110610a4157610a41612f13565b6020026020010151858381518110610a5b57610a5b612f13565b602002602001015161062a565b828281518110610a7a57610a7a612f13565b6020908102919091010152600101610a23565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610add5760405162461bcd60e51b815260040161069090612e7b565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610b0f61130b565b6001600160a01b031614610b355760405162461bcd60e51b815260040161069090612ec7565b610b3e82611326565b610b4a8282600161132e565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610690565b505f5160206134ec5f395f51905f525b90565b610c08611588565b6109745f6115e2565b60655433906001600160a01b03168114610c7f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610690565b61094b816115e2565b610c906115fb565b610974336001611584565b5f610ca461130b565b905090565b610161805461071190612df5565b610b4a33838361166c565b5f610cce468484611498565b9392505050565b610ce960c954610100900460ff1660021490565b15610d075760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d23816001610cc2565b6001600160a01b0316336001600160a01b031614610d5457604051630d85cccf60e11b815260040160405180910390fd5b6002610d6260c95460ff1690565b60ff1603610d835760405163dfc60d8560e01b815260040160405180910390fd5b610d8d600261174c565b610d98338484611762565b610da2600161174c565b505050565b610dbb60c954610100900460ff1660021490565b15610dd95760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df5816001610cc2565b6001600160a01b0316336001600160a01b031614610e2657604051630d85cccf60e11b815260040160405180910390fd5b6002610e3460c95460ff1690565b60ff1603610e555760405163dfc60d8560e01b815260040160405180910390fd5b610e5f600261174c565b610ed9868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118f6915050565b610ee3600161174c565b505050505050565b5f54610100900460ff1615808015610f0957505f54600160ff909116105b80610f225750303b158015610f2257505f5460ff166001145b610f855760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610690565b5f805460ff191660011790558015610fa6575f805461ff0019166101001790555b610fb08787611a78565b610fba8989611ab4565b610fdb610fd6888860405180602001604052805f815250611aee565b611b38565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100b858783612f6b565b5061016261101a838583612f6b565b508015611060575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b0385163314806110875750611087853361059f565b6110a35760405162461bcd60e51b815260040161069090612e2d565b6108688585858585611b67565b6110b8611588565b606580546001600160a01b0383166001600160a01b031990911681179091556110e96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115157506001600160e01b031982166303a24d0760e21b145b806106be57506301ffc9a760e01b6001600160e01b03198316146106be565b81518351146111915760405162461bcd60e51b815260040161069090613024565b6001600160a01b0384166111b75760405162461bcd60e51b81526004016106909061306c565b336111c6818787878787611c96565b5f5b84518110156112a5575f8582815181106111e4576111e4612f13565b602002602001015190505f85838151811061120157611201612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112525760405162461bcd60e51b8152600401610690906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129190849061310f565b9091555050600190930192506111c8915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f5929190613122565b60405180910390a4610ee3818787878787611cd6565b5f5160206134ec5f395f51905f52546001600160a01b031690565b61094b611588565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136157610da283611e30565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bb575060408051601f3d908101601f191682019092526113b89181019061314f565b60015b61141e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610690565b5f5160206134ec5f395f51905f52811461148c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610690565b50610da2838383611ecb565b5f6114a38484611ef5565b905081806114b957506001600160a01b03811615155b848490916114eb57604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610690565b50509392505050565b61150860c954610100900460ff1660021490565b6115255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b4a5b6033546001600160a01b031633146109745760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610690565b606580546001600160a01b031916905561094b81611f97565b61160f60c954610100900460ff1660021490565b1561162d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200161157a565b816001600160a01b0316836001600160a01b0316036116df5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610690565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117c45760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610690565b335f6117cf84611fe8565b90505f6117db84611fe8565b90506117f983875f858560405180602001604052805f815250611c96565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118785760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610690565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0384166119565760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610690565b81518351146119775760405162461bcd60e51b815260040161069090613024565b33611986815f87878787611c96565b5f5b8451811015611a12578381815181106119a3576119a3612f13565b602002602001015161012d5f8784815181106119c1576119c1612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f828254611a05919061310f565b9091555050600101611988565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a62929190613122565b60405180910390a4610868815f87878787611cd6565b6001600160a01b0382161580611a8c575080155b80611a9657504681145b15610b4a5760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611adc5760405163538ba4f960e01b815260040160405180910390fd5b611ae583612031565b610da28261208f565b6060611b04846001600160a01b031660146120ff565b611b0d84612294565b83604051602001611b2093929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b5e5760405162461bcd60e51b8152600401610690906131ee565b61094b81612323565b6001600160a01b038416611b8d5760405162461bcd60e51b81526004016106909061306c565b335f611b9885611fe8565b90505f611ba485611fe8565b9050611bb4838989858589611c96565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bf75760405162461bcd60e51b8152600401610690906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c3690849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611060848a8a8a8a8a612352565b611caa60c954610100900460ff1660021490565b15611cc85760405163bae6e2a960e01b815260040160405180910390fd5b611cd18461240c565b610ee3565b6001600160a01b0384163b15610ee35760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d1a9089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d54575060408051601f3d908101601f19168201909252611d5191810190613296565b60015b611e0057611d606132b1565b806308c379a003611d995750611d746132c9565b80611d7f5750611d9b565b8060405162461bcd60e51b81526004016106909190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610690565b6001600160e01b0319811663bc197c8160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b6001600160a01b0381163b611e9d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610690565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ed483612435565b5f82511180611ee05750805b15610da257611eef8383612474565b50505050565b6097545f906001600160a01b031680611f2157604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f73573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095a919061338b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610690906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115e2565b336115e2565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610690906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b508315610cce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610690565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610690906131ee565b61094b81612596565b6001600160a01b0384163b15610ee35760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d606132b1565b6001600160e01b0319811663f23a6e6160e01b146118ed5760405162461bcd60e51b815260040161069090613343565b306001600160a01b0382160361094b57604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e30565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610cce838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff166109745760405162461bcd60e51b8152600401610690906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106be5760010192915050565b61012f610b4a8282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610690565b508161095a565b61095a8383815115611d7f5781518083602001fd5b6001600160a01b038116811461094b575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b03198116811461094b575f5ffd5b5f602082840312156126fd575f5ffd5b8135610cce816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610cce602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b8135610cce8161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f610cce6020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da257805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b81811015610868575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b178355610868565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106be576106be6130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610cce816126d8565b5f60033d1115610bfd5760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a8d60208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b8151610cce8161269a565b80820281158282048414176106be576106be6130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b178455610868565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c61a0d82a4e192122d117e9aa6be00523577e93729686599c4b7a65f3e3ad5c264736f6c634300081b0033", + "code": "0x6080604052600436106101e5575f3560e01c8063715018a611610108578063a86f9d9e1161009d578063e30c39781161006d578063e30c39781461056f578063e985e9c51461058c578063ef8c4ae6146105d4578063f242432a146105f3578063f2fde38b14610612575f5ffd5b8063a86f9d9e146104d5578063b390c0ab146104f4578063d81d0a1514610513578063e07baba614610532575f5ffd5b80638abf6077116100d85780638abf6077146104715780638da5cb5b1461048557806395d89b41146104a2578063a22cb465146104b6575f5ffd5b8063715018a61461041557806379ba5097146104295780637cf8ed0d1461043d5780638456cb591461045d575f5ffd5b80633ab76e9f1161017e5780634e1273f41161014e5780634e1273f4146103a25780634f1ef286146103ce57806352d1902d146103e15780635c975abb146103f5575f5ffd5b80633ab76e9f146103225780633eb6b8cf146103595780633f4ba83a1461037857806349d126051461038c575f5ffd5b806326afaadd116101b957806326afaadd1461028a5780632eb2c2d6146102ce5780633075db56146102ef5780633659cfe614610303575f5ffd5b8062fdd58e146101e957806301ffc9a71461021b57806306fdde031461024a5780630e89341c1461026b575b5f5ffd5b3480156101f4575f5ffd5b506102086102033660046126ae565b610631565b6040519081526020015b60405180910390f35b348015610226575f5ffd5b5061023a6102353660046126ed565b6106cb565b6040519015158152602001610212565b348015610255575f5ffd5b5061025e61070a565b6040516102129190612755565b348015610276575f5ffd5b5061025e610285366004612767565b610797565b348015610295575f5ffd5b506102af61015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610212565b3480156102d9575f5ffd5b506102ed6102e83660046128c0565b61082a565b005b3480156102fa575f5ffd5b5061023a610876565b34801561030e575f5ffd5b506102ed61031d366004612970565b61088e565b34801561032d575f5ffd5b50609754610341906001600160a01b031681565b6040516001600160a01b039091168152602001610212565b348015610364575f5ffd5b5061034161037336600461299f565b610955565b348015610383575f5ffd5b506102ed61096b565b348015610397575f5ffd5b506102086101605481565b3480156103ad575f5ffd5b506103c16103bc3660046129e5565b61097f565b6040516102129190612aee565b6102ed6103dc366004612b00565b610a9e565b3480156103ec575f5ffd5b50610208610b57565b348015610400575f5ffd5b5061023a60c954610100900460ff1660021490565b348015610420575f5ffd5b506102ed610c09565b348015610434575f5ffd5b506102ed610c1a565b348015610448575f5ffd5b5061015f54610341906001600160a01b031681565b348015610468575f5ffd5b506102ed610c91565b34801561047c575f5ffd5b50610341610ca4565b348015610490575f5ffd5b506033546001600160a01b0316610341565b3480156104ad575f5ffd5b5061025e610cb2565b3480156104c1575f5ffd5b506102ed6104d0366004612b42565b610cc0565b3480156104e0575f5ffd5b506103416104ef366004612b75565b610ccb565b3480156104ff575f5ffd5b506102ed61050e366004612b96565b610cd7565b34801561051e575f5ffd5b506102ed61052d366004612bfd565b610da9565b34801561053d575f5ffd5b5060c954610557906201000090046001600160401b031681565b6040516001600160401b039091168152602001610212565b34801561057a575f5ffd5b506065546001600160a01b0316610341565b348015610597575f5ffd5b5061023a6105a6366004612c7d565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105df575f5ffd5b506102ed6105ee366004612cf1565b610eed565b3480156105fe575f5ffd5b506102ed61060d366004612d9e565b61106d565b34801561061d575f5ffd5b506102ed61062c366004612970565b6110b2565b5f6001600160a01b0383166106a05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106fb57506001600160e01b031982166377c6257360e11b145b806106c557506106c582611123565b610162805461071890612df5565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612df5565b801561078f5780601f106107665761010080835404028352916020019161078f565b820191905f5260205f20905b81548152906001019060200180831161077257829003601f168201915b505050505081565b606061012f80546107a790612df5565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390612df5565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b50505050509050919050565b6001600160a01b038516331480610846575061084685336105a6565b6108625760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611172565b5050505050565b5f600261088560c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100981630036108d65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670100000000000000000000000000000100986001600160a01b031661090861130d565b6001600160a01b03161461092e5760405162461bcd60e51b815260040161069790612ec7565b61093781611328565b604080515f8082526020820190925261095291839190611330565b50565b5f61096184848461149a565b90505b9392505050565b6109736114ec565b61097d335f61157c565b565b606081518351146109e45760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610697565b5f83516001600160401b038111156109fe576109fe61277e565b604051908082528060200260200182016040528015610a27578160200160208202803683370190505b5090505f5b8451811015610a9657610a71858281518110610a4a57610a4a612f13565b6020026020010151858381518110610a6457610a64612f13565b6020026020010151610631565b828281518110610a8357610a83612f13565b6020908102919091010152600101610a2c565b509392505050565b6001600160a01b037f0000000000000000000000000167010000000000000000000000000000010098163003610ae65760405162461bcd60e51b815260040161069790612e7b565b7f00000000000000000000000001670100000000000000000000000000000100986001600160a01b0316610b1861130d565b6001600160a01b031614610b3e5760405162461bcd60e51b815260040161069790612ec7565b610b4782611328565b610b5382826001611330565b5050565b5f306001600160a01b037f00000000000000000000000001670100000000000000000000000000000100981614610bf65760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610697565b505f5160206134ec5f395f51905f525b90565b610c11611580565b61097d5f6115da565b60655433906001600160a01b03168114610c885760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610697565b610952816115da565b610c996115f3565b61097d33600161157c565b5f610cad61130d565b905090565b610161805461071890612df5565b610b53338383611664565b5f61096446848461149a565b610ceb60c954610100900460ff1660021490565b15610d095760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610d25816001610ccb565b6001600160a01b0316336001600160a01b031614610d5657604051630d85cccf60e11b815260040160405180910390fd5b6002610d6460c95460ff1690565b60ff1603610d855760405163dfc60d8560e01b815260040160405180910390fd5b610d8f6002611744565b610d9a33848461175a565b610da46001611744565b505050565b610dbd60c954610100900460ff1660021490565b15610ddb5760405163bae6e2a960e01b815260040160405180910390fd5b6c195c98cc4c4d4d57dd985d5b1d609a1b610df7816001610ccb565b6001600160a01b0316336001600160a01b031614610e2857604051630d85cccf60e11b815260040160405180910390fd5b6002610e3660c95460ff1690565b60ff1603610e575760405163dfc60d8560e01b815260040160405180910390fd5b610e616002611744565b610edb868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f920182905250604080516020810190915290815292506118ee915050565b610ee56001611744565b505050505050565b5f54610100900460ff1615808015610f0b57505f54600160ff909116105b80610f245750303b158015610f2457505f5460ff166001145b610f875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610697565b5f805460ff191660011790558015610fa8575f805461ff0019166101001790555b610fb28787611a70565b610fbc8989611aac565b610fdd610fd8888860405180602001604052805f815250611ae6565b611b30565b61015f80546001600160a01b0319166001600160a01b03891617905561016086905561016161100d858783612f6b565b5061016261101c838583612f6b565b508015611062575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6001600160a01b038516331480611089575061108985336105a6565b6110a55760405162461bcd60e51b815260040161069790612e2d565b61086f8585858585611b5f565b6110ba611580565b606580546001600160a01b0383166001600160a01b031990911681179091556110eb6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061115357506001600160e01b031982166303a24d0760e21b145b806106c557506301ffc9a760e01b6001600160e01b03198316146106c5565b81518351146111935760405162461bcd60e51b815260040161069790613024565b6001600160a01b0384166111b95760405162461bcd60e51b81526004016106979061306c565b336111c8818787878787611c8e565b5f5b84518110156112a7575f8582815181106111e6576111e6612f13565b602002602001015190505f85838151811061120357611203612f13565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156112545760405162461bcd60e51b8152600401610697906130b1565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061129390849061310f565b9091555050600190930192506111ca915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516112f7929190613122565b60405180910390a4610ee5818787878787611cce565b5f5160206134ec5f395f51905f52546001600160a01b031690565b610952611580565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561136357610da483611e28565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113bd575060408051601f3d908101601f191682019092526113ba9181019061314f565b60015b6114205760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610697565b5f5160206134ec5f395f51905f52811461148e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610697565b50610da4838383611ec3565b5f6114a58484611eed565b9050811580156114bc57506001600160a01b038116155b1561096457604051632b0d65db60e01b81526001600160401b038516600482015260248101849052604401610697565b61150060c954610100900460ff1660021490565b61151d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b610b535b6033546001600160a01b0316331461097d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610697565b606580546001600160a01b031916905561095281611f97565b61160760c954610100900460ff1660021490565b156116255760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611572565b816001600160a01b0316836001600160a01b0316036116d75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610697565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166117bc5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610697565b335f6117c784611fe8565b90505f6117d384611fe8565b90506117f183875f858560405180602001604052805f815250611c8e565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156118705760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610697565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b03841661194e5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610697565b815183511461196f5760405162461bcd60e51b815260040161069790613024565b3361197e815f87878787611c8e565b5f5b8451811015611a0a5783818151811061199b5761199b612f13565b602002602001015161012d5f8784815181106119b9576119b9612f13565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119fd919061310f565b9091555050600101611980565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a5a929190613122565b60405180910390a461086f815f87878787611cce565b6001600160a01b0382161580611a84575080155b80611a8e57504681145b15610b535760405163c118d2f360e01b815260040160405180910390fd5b806001600160a01b038116611ad45760405163538ba4f960e01b815260040160405180910390fd5b611add83612031565b610da48261208f565b6060611afc846001600160a01b031660146120ff565b611b0584612294565b83604051602001611b1893929190613166565b60405160208183030381529060405290509392505050565b5f54610100900460ff16611b565760405162461bcd60e51b8152600401610697906131ee565b61095281612323565b6001600160a01b038416611b855760405162461bcd60e51b81526004016106979061306c565b335f611b9085611fe8565b90505f611b9c85611fe8565b9050611bac838989858589611c8e565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611bef5760405162461bcd60e51b8152600401610697906130b1565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611c2e90849061310f565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611062848a8a8a8a8a612352565b611ca260c954610100900460ff1660021490565b15611cc05760405163bae6e2a960e01b815260040160405180910390fd5b611cc98461240c565b610ee5565b6001600160a01b0384163b15610ee55760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611d129089908990889088908890600401613239565b6020604051808303815f875af1925050508015611d4c575060408051601f3d908101601f19168201909252611d4991810190613296565b60015b611df857611d586132b1565b806308c379a003611d915750611d6c6132c9565b80611d775750611d93565b8060405162461bcd60e51b81526004016106979190612755565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610697565b6001600160e01b0319811663bc197c8160e01b146118e55760405162461bcd60e51b815260040161069790613343565b6001600160a01b0381163b611e955760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610697565b5f5160206134ec5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611ecc83612435565b5f82511180611ed85750805b15610da457611ee78383612474565b50505050565b6097545f906001600160a01b031680611f1957604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f8f919061338b565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f8151811061202057612020612f13565b602090810291909101015292915050565b5f54610100900460ff166120575760405162461bcd60e51b8152600401610697906131ee565b61205f612499565b61207d6001600160a01b0382161561207757816115da565b336115da565b5060c9805461ff001916610100179055565b5f54610100900460ff166120b55760405162461bcd60e51b8152600401610697906131ee565b6001600160401b034611156120dd5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b60605f61210d8360026133a6565b61211890600261310f565b6001600160401b0381111561212f5761212f61277e565b6040519080825280601f01601f191660200182016040528015612159576020820181803683370190505b509050600360fc1b815f8151811061217357612173612f13565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106121a1576121a1612f13565b60200101906001600160f81b03191690815f1a9053505f6121c38460026133a6565b6121ce90600161310f565b90505b6001811115612245576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061220257612202612f13565b1a60f81b82828151811061221857612218612f13565b60200101906001600160f81b03191690815f1a90535060049490941c9361223e816133bd565b90506121d1565b5083156109645760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610697565b60605f6122a0836124bf565b60010190505f816001600160401b038111156122be576122be61277e565b6040519080825280601f01601f1916602001820160405280156122e8576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846122f257509392505050565b5f54610100900460ff166123495760405162461bcd60e51b8152600401610697906131ee565b61095281612596565b6001600160a01b0384163b15610ee55760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061239690899089908890889088906004016133d2565b6020604051808303815f875af19250505080156123d0575060408051601f3d908101601f191682019092526123cd91810190613296565b60015b6123dc57611d586132b1565b6001600160e01b0319811663f23a6e6160e01b146118e55760405162461bcd60e51b815260040161069790613343565b306001600160a01b0382160361095257604051630c292c9d60e21b815260040160405180910390fd5b61243e81611e28565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610964838360405180606001604052806027815260200161350c602791396125a3565b5f54610100900460ff1661097d5760405162461bcd60e51b8152600401610697906131ee565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106124fd5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612529576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061254757662386f26fc10000830492506010015b6305f5e100831061255f576305f5e100830492506008015b612710831061257357612710830492506004015b60648310612585576064830492506002015b600a83106106c55760010192915050565b61012f610b538282613416565b60605f5f856001600160a01b0316856040516125bf91906134d0565b5f60405180830381855af49150503d805f81146125f7576040519150601f19603f3d011682016040523d82523d5f602084013e6125fc565b606091505b509150915061260d86838387612617565b9695505050505050565b606083156126855782515f0361267e576001600160a01b0385163b61267e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610697565b5081611f8f565b611f8f8383815115611d775781518083602001fd5b6001600160a01b0381168114610952575f5ffd5b5f5f604083850312156126bf575f5ffd5b82356126ca8161269a565b946020939093013593505050565b6001600160e01b031981168114610952575f5ffd5b5f602082840312156126fd575f5ffd5b8135610964816126d8565b5f5b8381101561272257818101518382015260200161270a565b50505f910152565b5f8151808452612741816020860160208601612708565b601f01601f19169290920160200192915050565b602081525f610964602083018461272a565b5f60208284031215612777575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156127b7576127b761277e565b6040525050565b5f6001600160401b038211156127d6576127d661277e565b5060051b60200190565b5f82601f8301126127ef575f5ffd5b81356127fa816127be565b6040516128078282612792565b80915082815260208101915060208360051b86010192508583111561282a575f5ffd5b602085015b8381101561284757803583526020928301920161282f565b5095945050505050565b5f82601f830112612860575f5ffd5b81356001600160401b038111156128795761287961277e565b604051612890601f8301601f191660200182612792565b8181528460208386010111156128a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a086880312156128d4575f5ffd5b85356128df8161269a565b945060208601356128ef8161269a565b935060408601356001600160401b03811115612909575f5ffd5b612915888289016127e0565b93505060608601356001600160401b03811115612930575f5ffd5b61293c888289016127e0565b92505060808601356001600160401b03811115612957575f5ffd5b61296388828901612851565b9150509295509295909350565b5f60208284031215612980575f5ffd5b81356109648161269a565b8035801515811461299a575f5ffd5b919050565b5f5f5f606084860312156129b1575f5ffd5b83356001600160401b03811681146129c7575f5ffd5b9250602084013591506129dc6040850161298b565b90509250925092565b5f5f604083850312156129f6575f5ffd5b82356001600160401b03811115612a0b575f5ffd5b8301601f81018513612a1b575f5ffd5b8035612a26816127be565b604051612a338282612792565b80915082815260208101915060208360051b850101925087831115612a56575f5ffd5b6020840193505b82841015612a81578335612a708161269a565b825260209384019390910190612a5d565b945050505060208301356001600160401b03811115612a9e575f5ffd5b612aaa858286016127e0565b9150509250929050565b5f8151808452602084019350602083015f5b82811015612ae4578151865260209586019590910190600101612ac6565b5093949350505050565b602081525f6109646020830184612ab4565b5f5f60408385031215612b11575f5ffd5b8235612b1c8161269a565b915060208301356001600160401b03811115612b36575f5ffd5b612aaa85828601612851565b5f5f60408385031215612b53575f5ffd5b8235612b5e8161269a565b9150612b6c6020840161298b565b90509250929050565b5f5f60408385031215612b86575f5ffd5b82359150612b6c6020840161298b565b5f5f60408385031215612ba7575f5ffd5b50508035926020909101359150565b5f5f83601f840112612bc6575f5ffd5b5081356001600160401b03811115612bdc575f5ffd5b6020830191508360208260051b8501011115612bf6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215612c11575f5ffd5b8535612c1c8161269a565b945060208601356001600160401b03811115612c36575f5ffd5b612c4288828901612bb6565b90955093505060408601356001600160401b03811115612c60575f5ffd5b612c6c88828901612bb6565b969995985093965092949392505050565b5f5f60408385031215612c8e575f5ffd5b8235612c998161269a565b91506020830135612ca98161269a565b809150509250929050565b5f5f83601f840112612cc4575f5ffd5b5081356001600160401b03811115612cda575f5ffd5b602083019150836020828501011115612bf6575f5ffd5b5f5f5f5f5f5f5f5f60c0898b031215612d08575f5ffd5b8835612d138161269a565b97506020890135612d238161269a565b96506040890135612d338161269a565b95506060890135945060808901356001600160401b03811115612d54575f5ffd5b612d608b828c01612cb4565b90955093505060a08901356001600160401b03811115612d7e575f5ffd5b612d8a8b828c01612cb4565b999c989b5096995094979396929594505050565b5f5f5f5f5f60a08688031215612db2575f5ffd5b8535612dbd8161269a565b94506020860135612dcd8161269a565b9350604086013592506060860135915060808601356001600160401b03811115612957575f5ffd5b600181811c90821680612e0957607f821691505b602082108103612e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610da457805f5260205f20601f840160051c81016020851015612f4c5750805b601f840160051c820191505b8181101561086f575f8155600101612f58565b6001600160401b03831115612f8257612f8261277e565b612f9683612f908354612df5565b83612f27565b5f601f841160018114612fc7575f8515612fb05750838201355b5f19600387901b1c1916600186901b17835561086f565b5f83815260208120601f198716915b82811015612ff65786850135825560209485019460019092019101612fd6565b5086821015613012575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156106c5576106c56130fb565b604081525f6131346040830185612ab4565b82810360208401526131468185612ab4565b95945050505050565b5f6020828403121561315f575f5ffd5b5051919050565b6832ba3432b932bab69d60b91b81525f8451613189816009850160208901612708565b600160fe1b60099184019182015284516131aa81600a840160208901612708565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b600182015283516131e1816013840160208801612708565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190525f9061326490830186612ab4565b82810360608401526132768186612ab4565b9050828103608084015261328a818561272a565b98975050505050505050565b5f602082840312156132a6575f5ffd5b8151610964816126d8565b5f60033d1115610c065760045f5f3e505f5160e01c90565b5f60443d10156132d65790565b6040513d600319016004823e80513d60248201116001600160401b03821117156132ff57505090565b80820180516001600160401b0381111561331a575050505090565b3d8401600319018282016020011115613334575050505090565b610a9660208285010185612792565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b5f6020828403121561339b575f5ffd5b81516109648161269a565b80820281158282048414176106c5576106c56130fb565b5f816133cb576133cb6130fb565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061340b9083018461272a565b979650505050505050565b81516001600160401b0381111561342f5761342f61277e565b6134438161343d8454612df5565b84612f27565b6020601f821160018114613475575f831561345e5750848201515b5f19600385901b1c1916600184901b17845561086f565b5f84815260208120601f198516915b828110156134a45787850151825560209485019460019092019101613484565b50848210156134c157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82516134e1818460208701612708565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220056c58b99db557dce285f996f441ca995a4a77b2754e41fc6af5e46a7185c22664736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000000005": { + "0x0167010000000000000000000000000000000005": { "contractName": "SignalServiceImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052d578063f09a40161461054a578063f2fde38b14610569578063fe9fbb8014610588575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e3366004613523565b6105b6565b005b3480156101f5575f5ffd5b506101fe61065c565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d366004613556565b610674565b34801561023d575f5ffd5b5061027161024c366004613596565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135b0565b61068a565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135cb565b61075a565b348015610309575f5ffd5b506102c761031836600461360c565b6107a1565b348015610328575f5ffd5b506101e86107b7565b6101e861033f36600461371c565b6107cb565b34801561034f575f5ffd5b5061036361035e3660046135cb565b610884565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108ca565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613768565b61097b565b3480156103cf575f5ffd5b506101e8610987565b3480156103e3575f5ffd5b506101e8610998565b3480156103f7575f5ffd5b506101e8610a0f565b34801561040b575f5ffd5b506102c7610a22565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b36600461377f565b610a30565b34801561045b575f5ffd5b5061036361046a366004613814565b610b0b565b34801561047a575f5ffd5b50610363610489366004613850565b610b76565b348015610499575f5ffd5b506102c76104a8366004613880565b610ba2565b3480156104b8575f5ffd5b506101e86104c736600461377f565b610bae565b3480156104d7575f5ffd5b506104eb6104e6366004613850565b610bc4565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c9546201000090046001600160401b0316610271565b348015610538575f5ffd5b506065546001600160a01b03166102c7565b348015610555575f5ffd5b506101e86105643660046138a1565b610c58565b348015610574575f5ffd5b506101e86105833660046135b0565b610d67565b348015610593575f5ffd5b506101fe6105a23660046135b0565b60fc6020525f908152604090205460ff1681565b6105be610dd8565b6001600160a01b0382165f90815260fc602052604090205481151560ff9091161515036105fe576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066b60c95460ff1690565b60ff1614905090565b5f61067f8383610e32565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106db5760405162461bcd60e51b81526004016106d2906138d8565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b031661070d610e94565b6001600160a01b0316146107335760405162461bcd60e51b81526004016106d290613924565b61073c81610eaf565b604080515f8082526020820190925261075791839190610eb7565b50565b5f8180820361077c5760405163ec73295960e01b815260040160405180910390fd5b5f610788878787610b76565b9050836107953083610e32565b14979650505050505050565b5f6107ad848484611021565b90505b9392505050565b6107bf61107d565b6107c9335f61110d565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036108135760405162461bcd60e51b81526004016106d2906138d8565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610845610e94565b6001600160a01b03161461086b5760405162461bcd60e51b81526004016106d290613924565b61087482610eaf565b61088082826001610eb7565b5050565b335f90815260fc602052604081205460ff166108b357604051631f67751f60e01b815260040160405180910390fd5b6108bf85858585611126565b90505b949350505050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000516146109695760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d2565b505f516020613eb85f395f51905f5290565b5f610684338384611208565b61098f610dd8565b6107c95f6112e1565b60655433906001600160a01b03168114610a065760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d2565b610757816112e1565b610a176112fa565b6107c933600161110d565b5f610a2b610e94565b905090565b5f610a4560c954610100900460ff1660021490565b15610a635760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7160c95460ff1690565b60ff1603610a925760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610aaf8787878787600161136b565b90505f5b8151811015610af257610ade828281518110610ad157610ad1613970565b6020026020010151611827565b610ae89084613998565b9250600101610ab3565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b57565b5f6107b0468484611021565b610bbc85858585855f61136b565b505050505050565b5f5f826001600160401b03165f03610c00576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c02565b825b91506001600160401b03821615610c50575f610c1f868685610b76565b9050610c2b3082610e32565b91505f829003610c4e5760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7657505f54600160ff909116105b80610c8f5750303b158015610c8f57505f5460ff166001145b610cf25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d2565b5f805460ff191660011790558015610d13575f805461ff0019166101001790555b610d1d838361196b565b8015610d62575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d6f610dd8565b606580546001600160a01b0383166001600160a01b03199091168117909155610da06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d2565b5f826001600160a01b038116610e5b5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7d5760405163ec73295960e01b815260040160405180910390fd5b5f610e89468787610b0b565b549695505050505050565b5f516020613eb85f395f51905f52546001600160a01b031690565b610757610dd8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eea57610d62836119a5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f44575060408051601f3d908101601f19168201909252610f41918101906139ab565b60015b610fa75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d2565b5f516020613eb85f395f51905f5281146110155760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d2565b50610d62838383611a40565b5f61102c8484611a6a565b9050818061104257506001600160a01b03811615155b8484909161107457604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106d2565b50509392505050565b61109160c954610100900460ff1660021490565b6110ae5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f611132858585610b76565b905061113f308284611208565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a9576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f8929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112315760405163538ba4f960e01b815260040160405180910390fd5b835f8190036112535760405163ec73295960e01b815260040160405180910390fd5b835f8190036112755760405163ec73295960e01b815260040160405180910390fd5b611280468888610b0b565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075781611b0c565b61130e60c954610100900460ff1660021490565b1561132c5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001611103565b6060856001600160a01b0381166113955760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113b75760405163ec73295960e01b815260040160405180910390fd5b5f6113c486880188613a7f565b905080515f036113e757604051630b92daef60e21b815260040160405180910390fd5b5f600182516113f69190613bc5565b6001600160401b0381111561140d5761140d613645565b604051908082528060200260200182016040528015611436578160200160208202803683370190505b50905085156114c95781516001600160401b0381111561145857611458613645565b6040519080825280602002602001820160405280156114c557816020015b6114b26040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b8152602001906001900390816114765790505b5094505b8a8a8a805f6114ea856d7369676e616c5f7365727669636560901b836107a1565b9050306001600160a01b0382160361151557604051637556223560e11b815260040160405180910390fd5b61154d6040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117db578b818151811061156d5761156d613970565b602002602001015194505f5b818110156115d757855f01516001600160401b03168c82815181106115a0576115a0613970565b60200260200101516001600160401b0316036115cf576040516348362c2760e11b815260040160405180910390fd5b600101611579565b506115e68a8a8a8a898b611b5d565b93508a518114915081156116265784516001600160401b0316461461161e576040516338bf822760e21b815260040160405180910390fd5b3095506116d1565b845f01518b828151811061163c5761163c613970565b6001600160401b039283166020918202929092010152855116158061166a575084516001600160401b031646145b1561168857604051637556223560e11b815260040160405180910390fd5b84516116a6906d7369676e616c5f7365727669636560901b5f6107a1565b9550306001600160a01b038716036116d157604051637556223560e11b815260040160405180910390fd5b608085015151151592508f15611765576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561174457611744613bd8565b8152508f828151811061175957611759613970565b60200260200101819052505b6117c08a84611794577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117b6565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b76565b604086015186519b5096995097509495508794600101611552565b508515806117f257506117ee3088610e32565b8614155b156118105760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561184157611841613bd8565b1480611862575060028360c00151600381111561186057611860613bd8565b145b9050808015611872575082608001515b801561188057508260a00151155b156118c257600191506118c083604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f0151611126565b505b5f60038460c0015160038111156118db576118db613bd8565b14806118fc575060018460c0015160038111156118fa576118fa613bd8565b145b9050808015611918575083608001518061191857508360a00151155b1561196457611928600184613998565b925061196284604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf586606001518760200151611126565b505b5050919050565b806001600160a01b0381166119935760405163538ba4f960e01b815260040160405180910390fd5b61199c83611bfc565b610d6282611c5a565b6001600160a01b0381163b611a125760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d2565b5f516020613eb85f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4983611cca565b5f82511180611a555750805b15610d6257611a648383611d09565b50505050565b6097545f906001600160a01b031680611a9657604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c29190613bec565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b865760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba85760405163ec73295960e01b815260040160405180910390fd5b855f819003611bca5760405163ec73295960e01b815260040160405180910390fd5b611bee866040015186611bde8d8d8d610b0b565b8a8a608001518b60a00151611d2e565b9a9950505050505050505050565b5f54610100900460ff16611c225760405162461bcd60e51b81526004016106d290613c07565b611c2a611e3b565b611c486001600160a01b03821615611c4257816112e1565b336112e1565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c805760405162461bcd60e51b81526004016106d290613c07565b6001600160401b03461115611ca85760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611cd3816119a5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b08383604051806060016040528060278152602001613ed860279139611e61565b5f82515f14611dd6576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d7290603401604051602081830303815290604052858a611ed5565b905080515f03611d9557604051630414cd5b60e31b815260040160405180910390fd5b5f611d9f82611eee565b9050611dc481600281518110611db757611db7613970565b6020026020010151611f01565b611dcd90613c52565b92505050611dd9565b50855b5f611e1086604051602001611df091815260200190565b60408051601f19818403018152919052611e0987611f80565b8585611f93565b905080611e3057604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107c95760405162461bcd60e51b81526004016106d290613c07565b60605f5f856001600160a01b031685604051611e7d9190613c9a565b5f60405180830381855af49150503d805f8114611eb5576040519150601f19603f3d011682016040523d82523d5f602084013e611eba565b606091505b5091509150611ecb86838387611fac565b9695505050505050565b60605f611ee185612024565b9050610b02818585612056565b6060610684611efc836128c4565b612916565b60605f5f5f611f0f85612a94565b919450925090505f816001811115611f2957611f29613bd8565b14611f47576040516307fe6cb960e21b815260040160405180910390fd5b611f518284613998565b855114611f7157604051630b8aa6f760e31b815260040160405180910390fd5b610b0285602001518484612d77565b6060610684611f8e83612e07565b612f1b565b5f5f611f9e86612024565b9050611ecb81868686612f73565b6060831561201a5782515f03612013576001600160a01b0385163b6120135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d2565b50816108c2565b6108c28383612f99565b6060818051906020012060405160200161204091815260200190565b6040516020818303038152906040529050919050565b60605f8451116120a05760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d2565b5f6120aa84612fc3565b90505f6120b6866130a6565b90505f846040516020016120cc91815260200190565b60408051601f1981840301815291905290505f805b845181101561286d575f8582815181106120fd576120fd613970565b60200260200101519050845183111561216f5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d2565b825f0361220d57805180516020918201206040516121bc9261219692910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122085760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d2565b612303565b80515160201161229357805180516020918201206040516122379261219692910190815260200190565b6122085760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d2565b8051845160208087019190912082519190920120146123035760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d2565b61230f60106001613998565b816020015151036124a757845183036124415761233c8160200151601081518110611db757611db7613970565b96505f8751116123b45760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d2565b600186516123c29190613bc5565b82146124365760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d2565b5050505050506107b0565b5f85848151811061245457612454613970565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247e5761247e613970565b6020026020010151905061249181613107565b955061249e600186613998565b94505050612864565b60028160200151510361280b575f6124be8261312b565b90505f815f815181106124d3576124d3613970565b016020015160f81c90505f6124e9600283613cc9565b6124f4906002613cea565b90505f612504848360ff1661314e565b90505f6125118a8961314e565b90505f61251e8383613183565b9050808351146125965760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d2565b60ff8516600214806125ab575060ff85166003145b1561274b57808251146126265760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d2565b6126408760200151600181518110611db757611db7613970565b9c505f8d51116126b85760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d2565b60018c516126c69190613bc5565b881461273a5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d2565b5050505050505050505050506107b0565b60ff8516158061275e575060ff85166001145b1561279d5761278a876020015160018151811061277d5761277d613970565b6020026020010151613107565b9950612796818a613998565b9850612800565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d2565b505050505050612864565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d2565b506001016120e1565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d2565b604080518082019091525f808252602082015281515f036128f857604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61292485612a94565b91945092509050600181600181111561293f5761293f613bd8565b1461295d576040516325ce355f60e11b815260040160405180910390fd5b84516129698385613998565b1461298757604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f808252602082015281526020019060019003908161299e5790505093505f835b8651811015612a88575f5f612a0d6040518060400160405280858c5f01516129f19190613bc5565b8152602001858c60200151612a069190613998565b9052612a94565b509150915060405180604001604052808383612a299190613998565b8152602001848b60200151612a3e9190613998565b815250888581518110612a5357612a53613970565b6020908102919091010152612a69600185613998565b9350612a758183613998565b612a7f9084613998565b925050506129c9565b50845250919392505050565b5f5f5f835f01515f03612aba57604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612adc575f60015f9450945094505050612d70565b60b78111612b71575f612af0608083613bc5565b905080875f015111612b15576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b415750600160ff1b6001600160f81b03198216105b15612b5f5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d70915050565b60bf8111612c4f575f612b8560b783613bc5565b905080875f015111612baa576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bda5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c095760405163babb01dd60e01b815260040160405180910390fd5b612c138184613998565b895111612c33576040516366c9448560e01b815260040160405180910390fd5b612c3e836001613998565b975095505f9450612d709350505050565b60f78111612c99575f612c6360c083613bc5565b905080875f015111612c88576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d70915050565b5f612ca560f783613bc5565b905080875f015111612cca576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cfa5760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d295760405163babb01dd60e01b815260040160405180910390fd5b612d338184613998565b895111612d53576040516366c9448560e01b815260040160405180910390fd5b612d5e836001613998565b9750955060019450612d709350505050565b9193909250565b6060816001600160401b03811115612d9157612d91613645565b6040519080825280601f01601f191660200182016040528015612dbb576020820181803683370190505b50905081156107b0575f612dcf8486613998565b9050602082015f5b84811015612def578281015182820152602001612dd7565b84811115612dfd575f858301525b5050509392505050565b60605f82604051602001612e1d91815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6957818181518110612e4c57612e4c613970565b01602001516001600160f81b0319165f03612e6957600101612e31565b612e74816020613bc5565b6001600160401b03811115612e8b57612e8b613645565b6040519080825280601f01601f191660200182016040528015612eb5576020820181803683370190505b5092505f5b8351811015611962578282612ece81613d03565b935081518110612ee057612ee0613970565b602001015160f81c60f81b848281518110612efd57612efd613970565b60200101906001600160f81b03191690815f1a905350600101612eba565b606081516001148015612f4757506080825f81518110612f3d57612f3d613970565b016020015160f81c105b15612f50575090565b612f5c82516080613206565b82604051602001612040929190613d1b565b919050565b5f6108bf84612f83878686612056565b8051602091820120825192909101919091201490565b815115612fa95781518083602001fd5b8060405162461bcd60e51b81526004016106d29190613d49565b8051606090806001600160401b03811115612fe057612fe0613645565b60405190808252806020026020018201604052801561302557816020015b6040805180820190915260608082526020820152815260200190600190039081612ffe5790505b5091505f5b8181101561196457604051806040016040528085838151811061304f5761304f613970565b6020026020010151815260200161307e86848151811061307157613071613970565b6020026020010151611eee565b81525083828151811061309357613093613970565b602090810291909101015260010161302a565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130fc578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130cf565b509295945050505050565b60606020825f0151106131225761311d82611f01565b610684565b610684826133ab565b606061068461314983602001515f81518110611db757611db7613970565b6130a6565b60608251821061316c575060408051602081019091525f8152610684565b6107b0838384865161317e9190613bc5565b6133bf565b5f5f8251845110613195578251613198565b83515b90505b80821080156131ef57508282815181106131b7576131b7613970565b602001015160f81c60f81b6001600160f81b0319168483815181106131de576131de613970565b01602001516001600160f81b031916145b156131ff5781600101915061319b565b5092915050565b6060603883101561326a576040805160018082528183019092529060208201818036833701905050905061323a8284613d7b565b60f81b815f8151811061324f5761324f613970565b60200101906001600160f81b03191690815f1a905350610684565b5f60015b6132788186613d94565b1561329e578161328781613d03565b9250613297905061010082613da7565b905061326e565b6132a9826001613998565b6001600160401b038111156132c0576132c0613645565b6040519080825280601f01601f1916602001820160405280156132ea576020820181803683370190505b5092506132f78483613d7b565b613302906037613d7b565b60f81b835f8151811061331757613317613970565b60200101906001600160f81b03191690815f1a905350600190505b8181116133a3576101006133468284613bc5565b61335290610100613e99565b61335c9087613d94565b6133669190613ea4565b60f81b83828151811061337b5761337b613970565b60200101906001600160f81b03191690815f1a9053508061339b81613d03565b915050613332565b505092915050565b606061068482602001515f845f0151612d77565b60608182601f0110156134055760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8282840110156134485760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d2565b8183018451101561348f5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d2565b6060821580156134ad5760405191505f8252602082016040526134f7565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134e65780518352602092830192016134ce565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610757575f5ffd5b80358015158114612f6e575f5ffd5b5f5f60408385031215613534575f5ffd5b823561353f81613500565b915061354d60208401613514565b90509250929050565b5f5f60408385031215613567575f5ffd5b823561357281613500565b946020939093013593505050565b80356001600160401b0381168114612f6e575f5ffd5b5f5f604083850312156135a7575f5ffd5b61357283613580565b5f602082840312156135c0575f5ffd5b81356107b081613500565b5f5f5f5f608085870312156135de575f5ffd5b6135e785613580565b9350602085013592506135fc60408601613580565b9396929550929360600135925050565b5f5f5f6060848603121561361e575f5ffd5b61362784613580565b92506020840135915061363c60408501613514565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561367b5761367b613645565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a9576136a9613645565b604052919050565b5f82601f8301126136c0575f5ffd5b81356001600160401b038111156136d9576136d9613645565b6136ec601f8201601f1916602001613681565b818152846020838601011115613700575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561372d575f5ffd5b823561373881613500565b915060208301356001600160401b03811115613752575f5ffd5b61375e858286016136b1565b9150509250929050565b5f60208284031215613778575f5ffd5b5035919050565b5f5f5f5f5f60808688031215613793575f5ffd5b61379c86613580565b945060208601356137ac81613500565b93506040860135925060608601356001600160401b038111156137cd575f5ffd5b8601601f810188136137dd575f5ffd5b80356001600160401b038111156137f2575f5ffd5b886020828401011115613803575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215613826575f5ffd5b61382f84613580565b9250602084013561383f81613500565b929592945050506040919091013590565b5f5f5f60608486031215613862575f5ffd5b61386b84613580565b92506020840135915061363c60408501613580565b5f5f60408385031215613891575f5ffd5b8235915061354d60208401613514565b5f5f604083850312156138b2575f5ffd5b82356138bd81613500565b915060208301356138cd81613500565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561068457610684613984565b5f602082840312156139bb575f5ffd5b5051919050565b5f6001600160401b038211156139da576139da613645565b5060051b60200190565b803560048110612f6e575f5ffd5b5f82601f830112613a01575f5ffd5b8135613a14613a0f826139c2565b613681565b8082825260208201915060208360051b860101925085831115613a35575f5ffd5b602085015b83811015613a755780356001600160401b03811115613a57575f5ffd5b613a66886020838a01016136b1565b84525060209283019201613a3a565b5095945050505050565b5f60208284031215613a8f575f5ffd5b81356001600160401b03811115613aa4575f5ffd5b8201601f81018413613ab4575f5ffd5b8035613ac2613a0f826139c2565b8082825260208201915060208360051b850101925086831115613ae3575f5ffd5b602084015b83811015611e305780356001600160401b03811115613b05575f5ffd5b850160c0818a03601f19011215613b1a575f5ffd5b613b22613659565b613b2e60208301613580565b8152613b3c60408301613580565b602082015260608201356040820152613b57608083016139e4565b606082015260a08201356001600160401b03811115613b74575f5ffd5b613b838b6020838601016139f2565b60808301525060c08201356001600160401b03811115613ba1575f5ffd5b613bb08b6020838601016139f2565b60a08301525084525060209283019201613ae8565b8181038181111561068457610684613984565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bfc575f5ffd5b81516107b081613500565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c72575f198160200360031b1b821691505b50919050565b5f5b83811015613c92578181015183820152602001613c7a565b50505f910152565b5f8251613cab818460208701613c78565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cdb57613cdb613cb5565b8060ff84160691505092915050565b60ff828116828216039081111561068457610684613984565b5f60018201613d1457613d14613984565b5060010190565b5f8351613d2c818460208801613c78565b835190830190613d40818360208801613c78565b01949350505050565b602081525f8251806020840152613d67816040850160208701613c78565b601f01601f19169190910160400192915050565b60ff818116838216019081111561068457610684613984565b5f82613da257613da2613cb5565b500490565b808202811582820484141761068457610684613984565b6001815b6001841115610c5057808504811115613ddd57613ddd613984565b6001841615613deb57908102905b60019390931c928002613dc2565b5f82613e0757506001610684565b81613e1357505f610684565b8160018114613e295760028114613e3357613e4f565b6001915050610684565b60ff841115613e4457613e44613984565b50506001821b610684565b5060208310610133831016604e8410600b8410161715613e72575081810a610684565b613e7e5f198484613dbe565b805f1904821115613e9157613e91613984565b029392505050565b5f6107b08383613df9565b5f82613eb257613eb2613cb5565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204468b8adee6c324d6a7192cb1aada2b474837cf3f594d8153d9826cdf00171ee64736f6c634300081b0033", + "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063a86f9d9e11610092578063e30c397811610062578063e30c39781461052f578063f09a40161461054c578063f2fde38b1461056b578063fe9fbb801461058a575f5ffd5b8063a86f9d9e1461048e578063ce9d0820146104ad578063dfc8ff1d146104cc578063e07baba61461050a575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610414578063910af6ed1461043157806391f3f74b146104505780639b527cfa1461046f575f5ffd5b806379ba5097146103d85780638456cb59146103ec5780638abf607714610400575f5ffd5b80633eb6b8cf1161016857806352d1902d1161013857806352d1902d146103715780635c975abb1461038557806366ca2bc0146103a5578063715018a6146103c4575f5ffd5b80633eb6b8cf146102fe5780633f4ba83a1461031d5780634f1ef286146103315780634f90a67414610344575f5ffd5b8063355bcc3d116101a3578063355bcc3d146102325780633659cfe6146102895780633ab76e9f146102a85780633ced0e08146102df575f5ffd5b80632d1fb389146101c95780633075db56146101ea57806332676bc614610213575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e336600461351b565b6105b8565b005b3480156101f5575f5ffd5b506101fe61065e565b60405190151581526020015b60405180910390f35b34801561021e575f5ffd5b506101fe61022d36600461354e565b610676565b34801561023d575f5ffd5b5061027161024c36600461358e565b60fb60209081525f92835260408084209091529082529020546001600160401b031681565b6040516001600160401b03909116815260200161020a565b348015610294575f5ffd5b506101e86102a33660046135a8565b61068c565b3480156102b3575f5ffd5b506097546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b3480156102ea575f5ffd5b506101fe6102f93660046135c3565b61075c565b348015610309575f5ffd5b506102c7610318366004613604565b6107a3565b348015610328575f5ffd5b506101e86107b9565b6101e861033f366004613714565b6107cd565b34801561034f575f5ffd5b5061036361035e3660046135c3565b610886565b60405190815260200161020a565b34801561037c575f5ffd5b506103636108cc565b348015610390575f5ffd5b506101fe60c954610100900460ff1660021490565b3480156103b0575f5ffd5b506103636103bf366004613760565b61097d565b3480156103cf575f5ffd5b506101e8610989565b3480156103e3575f5ffd5b506101e861099a565b3480156103f7575f5ffd5b506101e8610a11565b34801561040b575f5ffd5b506102c7610a24565b34801561041f575f5ffd5b506033546001600160a01b03166102c7565b34801561043c575f5ffd5b5061036361044b366004613777565b610a32565b34801561045b575f5ffd5b5061036361046a36600461380c565b610b0d565b34801561047a575f5ffd5b50610363610489366004613848565b610b78565b348015610499575f5ffd5b506102c76104a8366004613878565b610ba4565b3480156104b8575f5ffd5b506101e86104c7366004613777565b610bb0565b3480156104d7575f5ffd5b506104eb6104e6366004613848565b610bc6565b604080516001600160401b03909316835260208301919091520161020a565b348015610515575f5ffd5b5060c954610271906201000090046001600160401b031681565b34801561053a575f5ffd5b506065546001600160a01b03166102c7565b348015610557575f5ffd5b506101e8610566366004613899565b610c5a565b348015610576575f5ffd5b506101e86105853660046135a8565b610d69565b348015610595575f5ffd5b506101fe6105a43660046135a8565b60fc6020525f908152604090205460ff1681565b6105c0610dda565b6001600160a01b0382165f90815260fc602052604090205481151560ff909116151503610600576040516398f26f4560e01b815260040160405180910390fd5b6001600160a01b0382165f81815260fc6020908152604091829020805460ff191685151590811790915591519182527f4c0079b9bcd37cd5d29a13938effd97c881798cbc6bd52a3026a29d94b27d1bf910160405180910390a25050565b5f600261066d60c95460ff1690565b60ff1614905090565b5f6106818383610e34565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000051630036106dd5760405162461bcd60e51b81526004016106d4906138d0565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000000056001600160a01b031661070f610e96565b6001600160a01b0316146107355760405162461bcd60e51b81526004016106d49061391c565b61073e81610eb1565b604080515f8082526020820190925261075991839190610eb9565b50565b5f8180820361077e5760405163ec73295960e01b815260040160405180910390fd5b5f61078a878787610b78565b9050836107973083610e34565b14979650505050505050565b5f6107af848484611023565b90505b9392505050565b6107c1611075565b6107cb335f611105565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000000051630036108155760405162461bcd60e51b81526004016106d4906138d0565b7f00000000000000000000000001670100000000000000000000000000000000056001600160a01b0316610847610e96565b6001600160a01b03161461086d5760405162461bcd60e51b81526004016106d49061391c565b61087682610eb1565b61088282826001610eb9565b5050565b335f90815260fc602052604081205460ff166108b557604051631f67751f60e01b815260040160405180910390fd5b6108c18585858561111e565b90505b949350505050565b5f306001600160a01b037f0000000000000000000000000167010000000000000000000000000000000005161461096b5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106d4565b505f516020613eb05f395f51905f5290565b5f610686338384611200565b610991610dda565b6107cb5f6112d9565b60655433906001600160a01b03168114610a085760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106d4565b610759816112d9565b610a196112f2565b6107cb336001611105565b5f610a2d610e96565b905090565b5f610a4760c954610100900460ff1660021490565b15610a655760405163bae6e2a960e01b815260040160405180910390fd5b6002610a7360c95460ff1690565b60ff1603610a945760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660021790555f610ab187878787876001611363565b90505f5b8151811015610af457610ae0828281518110610ad357610ad3613968565b602002602001015161181f565b610aea9084613990565b9250600101610ab5565b505060c9805460ff191660011790555b95945050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062015b6040516020818303038152906040528051906020012090509392505050565b604080516001600160401b03808616602083015291810184905290821660608201525f90608001610b59565b5f6107b2468484611023565b610bbe85858585855f611363565b505050505050565b5f5f826001600160401b03165f03610c02576001600160401b038086165f90815260fb6020908152604080832088845290915290205416610c04565b825b91506001600160401b03821615610c52575f610c21868685610b78565b9050610c2d3082610e34565b91505f829003610c505760405163738afa0560e01b815260040160405180910390fd5b505b935093915050565b5f54610100900460ff1615808015610c7857505f54600160ff909116105b80610c915750303b158015610c9157505f5460ff166001145b610cf45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106d4565b5f805460ff191660011790558015610d15575f805461ff0019166101001790555b610d1f8383611963565b8015610d64575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610d71610dda565b606580546001600160a01b0383166001600160a01b03199091168117909155610da26033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146107cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d4565b5f826001600160a01b038116610e5d5760405163538ba4f960e01b815260040160405180910390fd5b825f819003610e7f5760405163ec73295960e01b815260040160405180910390fd5b5f610e8b468787610b0d565b549695505050505050565b5f516020613eb05f395f51905f52546001600160a01b031690565b610759610dda565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610eec57610d648361199d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f46575060408051601f3d908101601f19168201909252610f43918101906139a3565b60015b610fa95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106d4565b5f516020613eb05f395f51905f5281146110175760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106d4565b50610d64838383611a38565b5f61102e8484611a62565b90508115801561104557506001600160a01b038116155b156107b257604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106d4565b61108960c954610100900460ff1660021490565b6110a65760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b5f61112a858585610b78565b9050611137308284611200565b506001600160401b038581165f90815260fb60209081526040808320888452909152902054818516911610156111a1576001600160401b038581165f90815260fb602090815260408083208884529091529020805467ffffffffffffffff19169185169190911790555b83836001600160401b0316866001600160401b03167fde247c825b1fb2d7ff9e0e771cba6f9e757ad04479fcdc135d88ae91fd50b37d85856040516111f0929190918252602082015260400190565b60405180910390a4949350505050565b5f836001600160a01b0381166112295760405163538ba4f960e01b815260040160405180910390fd5b835f81900361124b5760405163ec73295960e01b815260040160405180910390fd5b835f81900361126d5760405163ec73295960e01b815260040160405180910390fd5b611278468888610b0d565b858155604080516001600160a01b038a16815260208101899052908101829052606081018790529094507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a15050509392505050565b606580546001600160a01b031916905561075981611b04565b61130660c954610100900460ff1660021490565b156113245760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016110fb565b6060856001600160a01b03811661138d5760405163538ba4f960e01b815260040160405180910390fd5b855f8190036113af5760405163ec73295960e01b815260040160405180910390fd5b5f6113bc86880188613a77565b905080515f036113df57604051630b92daef60e21b815260040160405180910390fd5b5f600182516113ee9190613bbd565b6001600160401b038111156114055761140561363d565b60405190808252806020026020018201604052801561142e578160200160208202803683370190505b50905085156114c15781516001600160401b038111156114505761145061363d565b6040519080825280602002602001820160405280156114bd57816020015b6114aa6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a081018290529060c082015290565b81526020019060019003908161146e5790505b5094505b8a8a8a805f6114e2856d7369676e616c5f7365727669636560901b836107a3565b9050306001600160a01b0382160361150d57604051637556223560e11b815260040160405180910390fd5b6115456040805160c0810182525f80825260208201819052918101829052906060820190815260200160608152602001606081525090565b5f5f5f5f5b8b518110156117d3578b818151811061156557611565613968565b602002602001015194505f5b818110156115cf57855f01516001600160401b03168c828151811061159857611598613968565b60200260200101516001600160401b0316036115c7576040516348362c2760e11b815260040160405180910390fd5b600101611571565b506115de8a8a8a8a898b611b55565b93508a5181149150811561161e5784516001600160401b03164614611616576040516338bf822760e21b815260040160405180910390fd5b3095506116c9565b845f01518b828151811061163457611634613968565b6001600160401b0392831660209182029290920101528551161580611662575084516001600160401b031646145b1561168057604051637556223560e11b815260040160405180910390fd5b845161169e906d7369676e616c5f7365727669636560901b5f6107a3565b9550306001600160a01b038716036116c957604051637556223560e11b815260040160405180910390fd5b608085015151151592508f1561175d576040518060e00160405280866040015181526020018581526020018b6001600160401b0316815260200186602001516001600160401b03168152602001841515815260200183151581526020018660600151600381111561173c5761173c613bd0565b8152508f828151811061175157611751613968565b60200260200101819052505b6117b88a8461178c577fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf56117ae565b7f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1695b8760200151610b78565b604086015186519b509699509750949550879460010161154a565b508515806117ea57506117e63088610e34565b8614155b156118085760405163738afa0560e01b815260040160405180910390fd5b505050505050505050505050509695505050505050565b5f8060038360c00151600381111561183957611839613bd0565b148061185a575060028360c00151600381111561185857611858613bd0565b145b905080801561186a575082608001515b801561187857508260a00151155b156118ba57600191506118b883604001517f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1698560600151865f015161111e565b505b5f60038460c0015160038111156118d3576118d3613bd0565b14806118f4575060018460c0015160038111156118f2576118f2613bd0565b145b9050808015611910575083608001518061191057508360a00151155b1561195c57611920600184613990565b925061195a84604001517fc6cdc4f2acf13acb10f410085b821f7b7113b303e9a4799023f928317396aaf58660600151876020015161111e565b505b5050919050565b806001600160a01b03811661198b5760405163538ba4f960e01b815260040160405180910390fd5b61199483611bf4565b610d6482611c52565b6001600160a01b0381163b611a0a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106d4565b5f516020613eb05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a4183611cc2565b5f82511180611a4d5750805b15610d6457611a5c8383611d01565b50505050565b6097545f906001600160a01b031680611a8e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611ae0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c49190613be4565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f856001600160a01b038116611b7e5760405163538ba4f960e01b815260040160405180910390fd5b855f819003611ba05760405163ec73295960e01b815260040160405180910390fd5b855f819003611bc25760405163ec73295960e01b815260040160405180910390fd5b611be6866040015186611bd68d8d8d610b0d565b8a8a608001518b60a00151611d26565b9a9950505050505050505050565b5f54610100900460ff16611c1a5760405162461bcd60e51b81526004016106d490613bff565b611c22611e33565b611c406001600160a01b03821615611c3a57816112d9565b336112d9565b5060c9805461ff001916610100179055565b5f54610100900460ff16611c785760405162461bcd60e51b81526004016106d490613bff565b6001600160401b03461115611ca05760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b611ccb8161199d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606107b28383604051806060016040528060278152602001613ed060279139611e59565b5f82515f14611dce576040516bffffffffffffffffffffffff19606088901b1660208201525f90611d6a90603401604051602081830303815290604052858a611ecd565b905080515f03611d8d57604051630414cd5b60e31b815260040160405180910390fd5b5f611d9782611ee6565b9050611dbc81600281518110611daf57611daf613968565b6020026020010151611ef9565b611dc590613c4a565b92505050611dd1565b50855b5f611e0886604051602001611de891815260200190565b60408051601f19818403018152919052611e0187611f78565b8585611f8b565b905080611e2857604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b5f54610100900460ff166107cb5760405162461bcd60e51b81526004016106d490613bff565b60605f5f856001600160a01b031685604051611e759190613c92565b5f60405180830381855af49150503d805f8114611ead576040519150601f19603f3d011682016040523d82523d5f602084013e611eb2565b606091505b5091509150611ec386838387611fa4565b9695505050505050565b60605f611ed98561201c565b9050610b0481858561204e565b6060610686611ef4836128bc565b61290e565b60605f5f5f611f0785612a8c565b919450925090505f816001811115611f2157611f21613bd0565b14611f3f576040516307fe6cb960e21b815260040160405180910390fd5b611f498284613990565b855114611f6957604051630b8aa6f760e31b815260040160405180910390fd5b610b0485602001518484612d6f565b6060610686611f8683612dff565b612f13565b5f5f611f968661201c565b9050611ec381868686612f6b565b606083156120125782515f0361200b576001600160a01b0385163b61200b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d4565b50816108c4565b6108c48383612f91565b6060818051906020012060405160200161203891815260200190565b6040516020818303038152906040529050919050565b60605f8451116120985760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016106d4565b5f6120a284612fbb565b90505f6120ae8661309e565b90505f846040516020016120c491815260200190565b60408051601f1981840301815291905290505f805b8451811015612865575f8582815181106120f5576120f5613968565b6020026020010151905084518311156121675760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016106d4565b825f0361220557805180516020918201206040516121b49261218e92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6122005760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016106d4565b6122fb565b80515160201161228b578051805160209182012060405161222f9261218e92910190815260200190565b6122005760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016106d4565b8051845160208087019190912082519190920120146122fb5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016106d4565b61230760106001613990565b8160200151510361249f5784518303612439576123348160200151601081518110611daf57611daf613968565b96505f8751116123ac5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016106d4565b600186516123ba9190613bbd565b821461242e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016106d4565b5050505050506107b2565b5f85848151811061244c5761244c613968565b602001015160f81c60f81b60f81c90505f82602001518260ff168151811061247657612476613968565b60200260200101519050612489816130ff565b9550612496600186613990565b9450505061285c565b600281602001515103612803575f6124b682613123565b90505f815f815181106124cb576124cb613968565b016020015160f81c90505f6124e1600283613cc1565b6124ec906002613ce2565b90505f6124fc848360ff16613146565b90505f6125098a89613146565b90505f612516838361317b565b90508083511461258e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016106d4565b60ff8516600214806125a3575060ff85166003145b15612743578082511461261e5760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016106d4565b6126388760200151600181518110611daf57611daf613968565b9c505f8d51116126b05760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016106d4565b60018c516126be9190613bbd565b88146127325760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016106d4565b5050505050505050505050506107b2565b60ff85161580612756575060ff85166001145b1561279557612782876020015160018151811061277557612775613968565b60200260200101516130ff565b995061278e818a613990565b98506127f8565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016106d4565b50505050505061285c565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016106d4565b506001016120d9565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016106d4565b604080518082019091525f808252602082015281515f036128f057604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f61291c85612a8c565b91945092509050600181600181111561293757612937613bd0565b14612955576040516325ce355f60e11b815260040160405180910390fd5b84516129618385613990565b1461297f57604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f80825260208201528152602001906001900390816129965790505093505f835b8651811015612a80575f5f612a056040518060400160405280858c5f01516129e99190613bbd565b8152602001858c602001516129fe9190613990565b9052612a8c565b509150915060405180604001604052808383612a219190613990565b8152602001848b60200151612a369190613990565b815250888581518110612a4b57612a4b613968565b6020908102919091010152612a61600185613990565b9350612a6d8183613990565b612a779084613990565b925050506129c1565b50845250919392505050565b5f5f5f835f01515f03612ab257604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f8111612ad4575f60015f9450945094505050612d68565b60b78111612b69575f612ae8608083613bbd565b905080875f015111612b0d576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b0319169082148015612b395750600160ff1b6001600160f81b03198216105b15612b575760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f9250612d68915050565b60bf8111612c47575f612b7d60b783613bbd565b905080875f015111612ba2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612bd25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612c015760405163babb01dd60e01b815260040160405180910390fd5b612c0b8184613990565b895111612c2b576040516366c9448560e01b815260040160405180910390fd5b612c36836001613990565b975095505f9450612d689350505050565b60f78111612c91575f612c5b60c083613bbd565b905080875f015111612c80576040516366c9448560e01b815260040160405180910390fd5b600195509350849250612d68915050565b5f612c9d60f783613bbd565b905080875f015111612cc2576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f819003612cf25760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c60378111612d215760405163babb01dd60e01b815260040160405180910390fd5b612d2b8184613990565b895111612d4b576040516366c9448560e01b815260040160405180910390fd5b612d56836001613990565b9750955060019450612d689350505050565b9193909250565b6060816001600160401b03811115612d8957612d8961363d565b6040519080825280601f01601f191660200182016040528015612db3576020820181803683370190505b50905081156107b2575f612dc78486613990565b9050602082015f5b84811015612de7578281015182820152602001612dcf565b84811115612df5575f858301525b5050509392505050565b60605f82604051602001612e1591815260200190565b60408051601f1981840301815291905290505f5b6020811015612e6157818181518110612e4457612e44613968565b01602001516001600160f81b0319165f03612e6157600101612e29565b612e6c816020613bbd565b6001600160401b03811115612e8357612e8361363d565b6040519080825280601f01601f191660200182016040528015612ead576020820181803683370190505b5092505f5b835181101561195a578282612ec681613cfb565b935081518110612ed857612ed8613968565b602001015160f81c60f81b848281518110612ef557612ef5613968565b60200101906001600160f81b03191690815f1a905350600101612eb2565b606081516001148015612f3f57506080825f81518110612f3557612f35613968565b016020015160f81c105b15612f48575090565b612f54825160806131fe565b82604051602001612038929190613d13565b919050565b5f6108c184612f7b87868661204e565b8051602091820120825192909101919091201490565b815115612fa15781518083602001fd5b8060405162461bcd60e51b81526004016106d49190613d41565b8051606090806001600160401b03811115612fd857612fd861363d565b60405190808252806020026020018201604052801561301d57816020015b6040805180820190915260608082526020820152815260200190600190039081612ff65790505b5091505f5b8181101561195c57604051806040016040528085838151811061304757613047613968565b6020026020010151815260200161307686848151811061306957613069613968565b6020026020010151611ee6565b81525083828151811061308b5761308b613968565b6020908102919091010152600101613022565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b838110156130f4578060011b8201818401515f1a8060041c8253600f8116600183015350506001016130c7565b509295945050505050565b60606020825f01511061311a5761311582611ef9565b610686565b610686826133a3565b606061068661314183602001515f81518110611daf57611daf613968565b61309e565b606082518210613164575060408051602081019091525f8152610686565b6107b283838486516131769190613bbd565b6133b7565b5f5f825184511061318d578251613190565b83515b90505b80821080156131e757508282815181106131af576131af613968565b602001015160f81c60f81b6001600160f81b0319168483815181106131d6576131d6613968565b01602001516001600160f81b031916145b156131f757816001019150613193565b5092915050565b6060603883101561326257604080516001808252818301909252906020820181803683370190505090506132328284613d73565b60f81b815f8151811061324757613247613968565b60200101906001600160f81b03191690815f1a905350610686565b5f60015b6132708186613d8c565b15613296578161327f81613cfb565b925061328f905061010082613d9f565b9050613266565b6132a1826001613990565b6001600160401b038111156132b8576132b861363d565b6040519080825280601f01601f1916602001820160405280156132e2576020820181803683370190505b5092506132ef8483613d73565b6132fa906037613d73565b60f81b835f8151811061330f5761330f613968565b60200101906001600160f81b03191690815f1a905350600190505b81811161339b5761010061333e8284613bbd565b61334a90610100613e91565b6133549087613d8c565b61335e9190613e9c565b60f81b83828151811061337357613373613968565b60200101906001600160f81b03191690815f1a9053508061339381613cfb565b91505061332a565b505092915050565b606061068682602001515f845f0151612d6f565b60608182601f0110156133fd5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b8282840110156134405760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016106d4565b818301845110156134875760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016106d4565b6060821580156134a55760405191505f8252602082016040526134ef565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134de5780518352602092830192016134c6565b5050858452601f01601f1916604052505b50949350505050565b6001600160a01b0381168114610759575f5ffd5b80358015158114612f66575f5ffd5b5f5f6040838503121561352c575f5ffd5b8235613537816134f8565b91506135456020840161350c565b90509250929050565b5f5f6040838503121561355f575f5ffd5b823561356a816134f8565b946020939093013593505050565b80356001600160401b0381168114612f66575f5ffd5b5f5f6040838503121561359f575f5ffd5b61356a83613578565b5f602082840312156135b8575f5ffd5b81356107b2816134f8565b5f5f5f5f608085870312156135d6575f5ffd5b6135df85613578565b9350602085013592506135f460408601613578565b9396929550929360600135925050565b5f5f5f60608486031215613616575f5ffd5b61361f84613578565b9250602084013591506136346040850161350c565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b03811182821017156136735761367361363d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136a1576136a161363d565b604052919050565b5f82601f8301126136b8575f5ffd5b81356001600160401b038111156136d1576136d161363d565b6136e4601f8201601f1916602001613679565b8181528460208386010111156136f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613725575f5ffd5b8235613730816134f8565b915060208301356001600160401b0381111561374a575f5ffd5b613756858286016136a9565b9150509250929050565b5f60208284031215613770575f5ffd5b5035919050565b5f5f5f5f5f6080868803121561378b575f5ffd5b61379486613578565b945060208601356137a4816134f8565b93506040860135925060608601356001600160401b038111156137c5575f5ffd5b8601601f810188136137d5575f5ffd5b80356001600160401b038111156137ea575f5ffd5b8860208284010111156137fb575f5ffd5b959894975092955050506020019190565b5f5f5f6060848603121561381e575f5ffd5b61382784613578565b92506020840135613837816134f8565b929592945050506040919091013590565b5f5f5f6060848603121561385a575f5ffd5b61386384613578565b92506020840135915061363460408501613578565b5f5f60408385031215613889575f5ffd5b823591506135456020840161350c565b5f5f604083850312156138aa575f5ffd5b82356138b5816134f8565b915060208301356138c5816134f8565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156106865761068661397c565b5f602082840312156139b3575f5ffd5b5051919050565b5f6001600160401b038211156139d2576139d261363d565b5060051b60200190565b803560048110612f66575f5ffd5b5f82601f8301126139f9575f5ffd5b8135613a0c613a07826139ba565b613679565b8082825260208201915060208360051b860101925085831115613a2d575f5ffd5b602085015b83811015613a6d5780356001600160401b03811115613a4f575f5ffd5b613a5e886020838a01016136a9565b84525060209283019201613a32565b5095945050505050565b5f60208284031215613a87575f5ffd5b81356001600160401b03811115613a9c575f5ffd5b8201601f81018413613aac575f5ffd5b8035613aba613a07826139ba565b8082825260208201915060208360051b850101925086831115613adb575f5ffd5b602084015b83811015611e285780356001600160401b03811115613afd575f5ffd5b850160c0818a03601f19011215613b12575f5ffd5b613b1a613651565b613b2660208301613578565b8152613b3460408301613578565b602082015260608201356040820152613b4f608083016139dc565b606082015260a08201356001600160401b03811115613b6c575f5ffd5b613b7b8b6020838601016139ea565b60808301525060c08201356001600160401b03811115613b99575f5ffd5b613ba88b6020838601016139ea565b60a08301525084525060209283019201613ae0565b818103818111156106865761068661397c565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215613bf4575f5ffd5b81516107b2816134f8565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80516020808301519190811015613c6a575f198160200360031b1b821691505b50919050565b5f5b83811015613c8a578181015183820152602001613c72565b50505f910152565b5f8251613ca3818460208701613c70565b9190910192915050565b634e487b7160e01b5f52601260045260245ffd5b5f60ff831680613cd357613cd3613cad565b8060ff84160691505092915050565b60ff82811682821603908111156106865761068661397c565b5f60018201613d0c57613d0c61397c565b5060010190565b5f8351613d24818460208801613c70565b835190830190613d38818360208801613c70565b01949350505050565b602081525f8251806020840152613d5f816040850160208701613c70565b601f01601f19169190910160400192915050565b60ff81811683821601908111156106865761068661397c565b5f82613d9a57613d9a613cad565b500490565b80820281158282048414176106865761068661397c565b6001815b6001841115610c5257808504811115613dd557613dd561397c565b6001841615613de357908102905b60019390931c928002613dba565b5f82613dff57506001610686565b81613e0b57505f610686565b8160018114613e215760028114613e2b57613e47565b6001915050610686565b60ff841115613e3c57613e3c61397c565b50506001821b610686565b5060208310610133831016604e8410600b8410161715613e6a575081810a610686565b613e765f198484613db6565b805f1904821115613e8957613e8961397c565b029392505050565b5f6107b28383613df1565b5f82613eaa57613eaa613cad565b50069056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122088e374295b28e7ad8361a3b961be9595b9248bb8792c867a5bea9cc2824409f764736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000000005": { + "0x1670100000000000000000000000000000000005": { "contractName": "SignalService", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000000006", - "0xe3ad9bc7a782493ccba4f8a469cc3f9e8fb5647c2076401c8a7c4945a999c777": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000005" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000000006", + "0x301006667fd8aa626b63e5445e5183081bd1b69d132f18fac530bd2d66888167": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000000005" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010001": { + "0x0167010000000000000000000000000000010001": { "contractName": "TaikoL2Impl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105b4578063ee82ac5e146105d3578063f2fde38b146105f2578063f940e38514610611578063fd85eb2d14610630575f5ffd5b8063da69d3db14610540578063dac5df781461055f578063e07baba614610574578063e30c397814610597575f5ffd5b8063a578781e116100e3578063a578781e1461047c578063a7137c0f146104a0578063a7e022d1146104c6578063a86f9d9e14610502578063b8c7b30c14610521575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f61025636600461259f565b61064f565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b50610269610665565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df3660046125f3565b61067d565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461261b565b61074d565b348015610347575f5ffd5b506102e4610759565b6102e461035e36600461266c565b61076d565b34801561036e575f5ffd5b50610377610826565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c536600461272f565b6108d7565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610ae0565b348015610409575f5ffd5b506102e4610af1565b34801561041d575f5ffd5b506102e4610b68565b348015610431575f5ffd5b50610305610b7b565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd54600160801b90046001600160401b031661021f565b3480156104ab575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104d1575f5ffd5b506104e56104e0366004612797565b610b89565b604080519283526001600160401b03909116602083015201610233565b34801561050d575f5ffd5b5061030561051c3660046127c8565b610c15565b34801561052c575f5ffd5b5060fd5461021f906001600160401b031681565b34801561054b575f5ffd5b506102e461055a3660046127f6565b610c2a565b34801561056a575f5ffd5b5061037760fc5481565b34801561057f575f5ffd5b5060c9546201000090046001600160401b031661021f565b3480156105a2575f5ffd5b506065546001600160a01b0316610305565b3480156105bf575f5ffd5b506104e56105ce36600461283e565b610cfa565b3480156105de575f5ffd5b506103776105ed366004612886565b610ddc565b3480156105fd575f5ffd5b506102e461060c3660046125f3565b610e14565b34801561061c575f5ffd5b506102e461062b36600461289d565b610e85565b34801561063b575f5ffd5b506102e461064a3660046128c9565b611042565b5f61065b8484846114ac565b90505b9392505050565b5f600261067460c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036106ce5760405162461bcd60e51b81526004016106c59061290a565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b0316610700611570565b6001600160a01b0316146107265760405162461bcd60e51b81526004016106c590612956565b61072f8161158b565b604080515f8082526020820190925261074a91839190611593565b50565b5f61065b848484611702565b61076161175e565b61076b335f6117ee565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100011630036107b55760405162461bcd60e51b81526004016106c59061290a565b7f00000000000000000000000001670010000000000000000000000000000100016001600160a01b03166107e7611570565b6001600160a01b03161461080d5760405162461bcd60e51b81526004016106c590612956565b6108168261158b565b61082282826001611593565b5050565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000001000116146108c55760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106c5565b505f516020612be35f395f51905f5290565b5f54610100900460ff16158080156108f557505f54600160ff909116105b8061090e5750303b15801561090e57505f5460ff166001145b6109715760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106c5565b5f805460ff191660011790558015610992575f805461ff0019166101001790555b61099c85856117f6565b6001600160401b03831615806109ba575046836001600160401b0316145b156109d8576040516308279a2560e31b815260040160405180910390fd5b6001461115806109ee57506001600160401b0346115b15610a0c57604051638f972ecb60e01b815260040160405180910390fd5b4315610a565743600103610a3d575f610a266001436129b6565b5f81815260fb602052604090209040905550610a56565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610a9043611830565b5060fc558015610ad9575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610ae86118c0565b61076b5f61191a565b60655433906001600160a01b03168114610b5f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106c5565b61074a8161191a565b610b70611933565b61076b3360016117ee565b5f610b84611570565b905090565b5f5f5f610baa60408051808201909152630393870081526008602082015290565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129c9565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a6129e0565b610c0291906129ff565b875f6119a4565b90969095509350505050565b5f610c21468484611702565b90505b92915050565b825f819003610c4c5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610c765760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610ca857604051636494e9f760e01b815260040160405180910390fd5b6002610cb660c95460ff1690565b60ff1603610cd75760405163dfc60d8560e01b815260040160405180910390fd5b610ce16002611a2d565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d0d6060880160408901612a3f565b610d1d9063ffffffff16876129ff565b9050610d2f60a0880160808901612a3f565b63ffffffff1615801590610d605750610d4e60a0880160808901612a3f565b63ffffffff16816001600160401b0316115b15610d7e57610d7560a0880160808901612a3f565b63ffffffff1690505b5f610d8c6020890189612a58565b60ff16610d9f60608a0160408b01612a3f565b63ffffffff16610daf91906129c9565b9050610dcd81878488610dc860808e0160608f01612a78565b6119a4565b93509350505094509492505050565b5f438210610deb57505f919050565b43610df883610100612a91565b10610e0257504090565b505f90815260fb602052604090205490565b610e1c6118c0565b606580546001600160a01b0383166001600160a01b03199091168117909155610e4d6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b038116610ead5760405163538ba4f960e01b815260040160405180910390fd5b610ec160c954610100900460ff1660021490565b15610edf5760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610eff6033546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610f395750610f24816001610c15565b6001600160a01b0316336001600160a01b0316145b610f5657604051630d85cccf60e11b815260040160405180910390fd5b6002610f6460c95460ff1690565b60ff1603610f855760405163dfc60d8560e01b815260040160405180910390fd5b610f8f6002611a2d565b6001600160a01b038416610fb557610fb06001600160a01b03841647611a43565b611032565b6040516370a0823160e01b81523060048201526110329084906001600160a01b038716906370a0823190602401602060405180830381865afa158015610ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110219190612a28565b6001600160a01b0387169190611a4e565b61103c6001611a2d565b50505050565b825f8190036110645760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f0361108e5760405163ec73295960e01b815260040160405180910390fd5b61109e6060840160408501612a3f565b63ffffffff16805f036110c45760405163ec73295960e01b815260040160405180910390fd5b6110d16020850185612a58565b60ff16805f036110f45760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461112657604051636494e9f760e01b815260040160405180910390fd5b600261113460c95460ff1690565b60ff16036111555760405163dfc60d8560e01b815260040160405180910390fd5b61115f6002611a2d565b5f61116b6001436129b6565b90505f5f61117883611830565b915091508160fc541461119e5760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111b06020880188612a58565b60ff166111c36060890160408a01612a3f565b63ffffffff166111d391906129ff565b60fd549091506001600160401b03808316600160c01b909204161461126e5760fd54600160c01b90046001600160401b03161561124d5760fd5461122b906001600160401b0380821691600160c01b9004168361064f565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112a890899061129690600160801b90046001600160401b0316426129b6565b60fd546001600160401b03168c610cfa565b915091506112b35f90565b1580156112c05750814814155b156112de576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114035761132c6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113b3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d79190612a28565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe49361148e938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114a26001611a2d565b5050505050505050565b5f826001600160401b03165f036114c457508061065e565b670de0b6b3a76400005f6001600160401b03808616906114e6908616846129c9565b6114f09190612ab8565b905080158061150557506001600160ff1b0381115b1561152357604051636296f1b960e11b815260040160405180910390fd5b5f61152d82611aa0565b90505f828802828702015f81126001811461154c578582049250611550565b5f92505b506115649050816001600160401b03611cbd565b98975050505050505050565b5f516020612be35f395f51905f52546001600160a01b031690565b61074a6118c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115cb576115c683611cd1565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611625575060408051601f3d908101601f1916820190925261162291810190612a28565b60015b6116885760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106c5565b5f516020612be35f395f51905f5281146116f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106c5565b506115c6838383611d6c565b5f61170d8484611d90565b9050818061172357506001600160a01b03811615155b8484909161175557604051632b0d65db60e01b81526001600160401b03909216600483015260248201526044016106c5565b50509392505050565b61177260c954610100900460ff1660021490565b61178f5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108226118c0565b806001600160a01b03811661181e5760405163538ba4f960e01b815260040160405180910390fd5b61182783611e3a565b6115c682611e98565b5f5f61183a612564565b5f5b60ff8110801561184f5750806001018510155b15611880575f198186030180408360ff8306610100811061187257611872612acb565b60200201525060010161183c565b5046611fe08201526120008120925083408161189d60ff87612adf565b61010081106118ae576118ae612acb565b60200201526120009020919391925050565b6033546001600160a01b0316331461076b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c5565b606580546001600160a01b031916905561074a81611f08565b61194760c954610100900460ff1660021490565b156119655760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117e4565b5f80806119c063ffffffff86166001600160401b038916612a91565b9050856001600160401b031681116119d95760016119ec565b6119ec6001600160401b038716826129b6565b9050611a0b6001600160401b03611a0583878316611f59565b90611cbd565b9150611a20826001600160401b031689611f6e565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61082282825a611f9d565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526115c6908490611fe0565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611afc57631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ccb5782610c21565b50919050565b6001600160a01b0381163b611d3e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106c5565b5f516020612be35f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d75836120b3565b5f82511180611d815750805b156115c65761103c83836120f2565b6097545f906001600160a01b031680611dbc57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e329190612af2565b949350505050565b5f54610100900460ff16611e605760405162461bcd60e51b81526004016106c590612b0d565b611e68612117565b611e866001600160a01b03821615611e80578161191a565b3361191a565b5060c9805461ff001916610100179055565b5f54610100900460ff16611ebe5760405162461bcd60e51b81526004016106c590612b0d565b6001600160401b03461115611ee65760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f675781610c21565b5090919050565b5f5f82611f7b858561213d565b611f859190612ab8565b90508015611f935780611e32565b5060019392505050565b815f03611fa957505050565b611fc383838360405180602001604052805f8152506121b7565b6115c657604051634c67134d60e11b815260040160405180910390fd5b5f612034826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166121f49092919063ffffffff16565b905080515f14806120545750808060200190518101906120549190612b58565b6115c65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106c5565b6120bc81611cd1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c0360279139612202565b5f54610100900460ff1661076b5760405162461bcd60e51b81526004016106c590612b0d565b5f815f0361215e57604051636296f1b960e11b815260040160405180910390fd5b5f8261217285670de0b6b3a76400006129c9565b61217c9190612ab8565b9050680755bf798b4a1bf1e481111561219b5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ad82612276565b611e329190612ab8565b5f6001600160a01b0385166121df57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061065b84845f856123f0565b60605f5f856001600160a01b03168560405161221e9190612b95565b5f60405180830381855af49150503d805f8114612256576040519150601f19603f3d011682016040523d82523d5f602084013e61225b565b606091505b509150915061226c868383876124c7565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361228d57919050565b680755bf798b4a1bf1e582126122aa5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124515760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106c5565b5f5f866001600160a01b0316858760405161246c9190612b95565b5f6040518083038185875af1925050503d805f81146124a6576040519150601f19603f3d011682016040523d82523d5f602084013e6124ab565b606091505b50915091506124bc878383876124c7565b979650505050505050565b606083156125355782515f0361252e576001600160a01b0385163b61252e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106c5565b5081611e32565b611e32838381511561254a5781518083602001fd5b8060405162461bcd60e51b81526004016106c59190612bb0565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b038116811461259a575f5ffd5b919050565b5f5f5f606084860312156125b1575f5ffd5b6125ba84612584565b92506125c860208501612584565b91506125d660408501612584565b90509250925092565b6001600160a01b038116811461074a575f5ffd5b5f60208284031215612603575f5ffd5b813561065e816125df565b801515811461074a575f5ffd5b5f5f5f6060848603121561262d575f5ffd5b61263684612584565b925060208401359150604084013561264d8161260e565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561267d575f5ffd5b8235612688816125df565b915060208301356001600160401b038111156126a2575f5ffd5b8301601f810185136126b2575f5ffd5b80356001600160401b038111156126cb576126cb612658565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126f9576126f9612658565b604052818152828201602001871015612710575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612742575f5ffd5b843561274d816125df565b9350602085013561275d816125df565b925061276b60408601612584565b915061277960608601612584565b905092959194509250565b803563ffffffff8116811461259a575f5ffd5b5f5f604083850312156127a8575f5ffd5b6127b183612584565b91506127bf60208401612784565b90509250929050565b5f5f604083850312156127d9575f5ffd5b8235915060208301356127eb8161260e565b809150509250929050565b5f5f5f5f60808587031215612809575f5ffd5b843593506020850135925061282060408601612584565b915061277960608601612784565b5f60a08284031215611ccb575f5ffd5b5f5f5f5f6101008587031215612852575f5ffd5b61285c868661282e565b935061286a60a08601612584565b925061287860c08601612584565b915061277960e08601612784565b5f60208284031215612896575f5ffd5b5035919050565b5f5f604083850312156128ae575f5ffd5b82356128b9816125df565b915060208301356127eb816125df565b5f5f5f5f61010085870312156128dd575f5ffd5b6128e685612584565b9350602085013592506128fb60408601612784565b9150612779866060870161282e565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129a2565b8082028115828204841417610c2457610c246129a2565b6001600160401b038281168282160390811115610c2457610c246129a2565b6001600160401b038181168382160290811690818114612a2157612a216129a2565b5092915050565b5f60208284031215612a38575f5ffd5b5051919050565b5f60208284031215612a4f575f5ffd5b610c2182612784565b5f60208284031215612a68575f5ffd5b813560ff8116811461065e575f5ffd5b5f60208284031215612a88575f5ffd5b610c2182612584565b80820180821115610c2457610c246129a2565b634e487b7160e01b5f52601260045260245ffd5b5f82612ac657612ac6612aa4565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612aed57612aed612aa4565b500690565b5f60208284031215612b02575f5ffd5b815161065e816125df565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b68575f5ffd5b815161065e8161260e565b5f5b83811015612b8d578181015183820152602001612b75565b50505f910152565b5f8251612ba6818460208701612b73565b9190910192915050565b602081525f8251806020840152612bce816040850160208701612b73565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209b86dccef61cd132ca45980c090fbd2b245465c5210ce7b53ab59fa4b3d9b3fc64736f6c634300081b0033", + "code": "0x6080604052600436106101fc575f3560e01c80638456cb5911610113578063da69d3db1161009d578063e902461a1161006d578063e902461a146105ca578063ee82ac5e146105e9578063f2fde38b14610608578063f940e38514610627578063fd85eb2d14610646575f5ffd5b8063da69d3db14610554578063dac5df7814610573578063e07baba614610588578063e30c3978146105ad575f5ffd5b8063a7137c0f116100e3578063a7137c0f1461047c578063a7e022d1146104a2578063a86f9d9e146104de578063b8c7b30c146104fd578063c3f909d41461051c575f5ffd5b80638456cb59146104125780638abf6077146104265780638da5cb5b1461043a5780639ee512f214610457575f5ffd5b80633eb6b8cf11610194578063539b8ade11610164578063539b8ade146103855780635950f9f1146103ab5780635c975abb146103ca578063715018a6146103ea57806379ba5097146103fe575f5ffd5b80633eb6b8cf1461031d5780633f4ba83a1461033c5780634f1ef2861461035057806352d1902d14610363575f5ffd5b806333d5ac9b116101cf57806333d5ac9b1461028d578063356aec04146102b35780633659cfe6146102c55780633ab76e9f146102e6575f5ffd5b806312622e5b14610200578063136dc4a81461023c5780632f9804731461025b5780633075db5614610279575b5f5ffd5b34801561020b575f5ffd5b5060fe5461021f906001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b348015610247575f5ffd5b5061021f6102563660046125c0565b610665565b348015610266575f5ffd5b505f5b6040519015158152602001610233565b348015610284575f5ffd5b5061026961067b565b348015610298575f5ffd5b5060fd5461021f90600160401b90046001600160401b031681565b3480156102be575f5ffd5b505f61021f565b3480156102d0575f5ffd5b506102e46102df366004612614565b610693565b005b3480156102f1575f5ffd5b50609754610305906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610328575f5ffd5b5061030561033736600461263c565b610763565b348015610347575f5ffd5b506102e461076f565b6102e461035e36600461268d565b610783565b34801561036e575f5ffd5b5061037761083c565b604051908152602001610233565b348015610390575f5ffd5b5060fd5461021f90600160801b90046001600160401b031681565b3480156103b6575f5ffd5b506102e46103c5366004612750565b6108ed565b3480156103d5575f5ffd5b5061026960c954610100900460ff1660021490565b3480156103f5575f5ffd5b506102e4610af6565b348015610409575f5ffd5b506102e4610b07565b34801561041d575f5ffd5b506102e4610b7e565b348015610431575f5ffd5b50610305610b91565b348015610445575f5ffd5b506033546001600160a01b0316610305565b348015610462575f5ffd5b5061030571777735367b36bc9b61c50022d9d0700db4ec81565b348015610487575f5ffd5b5060fd5461021f90600160c01b90046001600160401b031681565b3480156104ad575f5ffd5b506104c16104bc3660046127b8565b610b9f565b604080519283526001600160401b03909116602083015201610233565b3480156104e9575f5ffd5b506103056104f83660046127e9565b610c15565b348015610508575f5ffd5b5060fd5461021f906001600160401b031681565b348015610527575f5ffd5b50610530610c2a565b60408051825163ffffffff16815260209283015160ff169281019290925201610233565b34801561055f575f5ffd5b506102e461056e366004612817565b610c5b565b34801561057e575f5ffd5b5061037760fc5481565b348015610593575f5ffd5b5060c95461021f906201000090046001600160401b031681565b3480156105b8575f5ffd5b506065546001600160a01b0316610305565b3480156105d5575f5ffd5b506104c16105e436600461285f565b610d2b565b3480156105f4575f5ffd5b506103776106033660046128a7565b610e0d565b348015610613575f5ffd5b506102e4610622366004612614565b610e45565b348015610632575f5ffd5b506102e46106413660046128be565b610eb6565b348015610651575f5ffd5b506102e46106603660046128ea565b611075565b5f6106718484846114df565b90505b9392505050565b5f600261068a60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100011630036106e45760405162461bcd60e51b81526004016106db9061292b565b60405180910390fd5b7f00000000000000000000000001670100000000000000000000000000000100016001600160a01b031661071661159a565b6001600160a01b03161461073c5760405162461bcd60e51b81526004016106db90612977565b610745816115b5565b604080515f80825260208201909252610760918391906115bd565b50565b5f610671848484611727565b610777611779565b610781335f611809565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100011630036107cb5760405162461bcd60e51b81526004016106db9061292b565b7f00000000000000000000000001670100000000000000000000000000000100016001600160a01b03166107fd61159a565b6001600160a01b0316146108235760405162461bcd60e51b81526004016106db90612977565b61082c826115b5565b610838828260016115bd565b5050565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000001000116146108db5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016106db565b505f516020612c045f395f51905f5290565b5f54610100900460ff161580801561090b57505f54600160ff909116105b806109245750303b15801561092457505f5460ff166001145b6109875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106db565b5f805460ff1916600117905580156109a8575f805461ff0019166101001790555b6109b28585611811565b6001600160401b03831615806109d0575046836001600160401b0316145b156109ee576040516308279a2560e31b815260040160405180910390fd5b600146111580610a0457506001600160401b0346115b15610a2257604051638f972ecb60e01b815260040160405180910390fd5b4315610a6c5743600103610a53575f610a3c6001436129d7565b5f81815260fb602052604090209040905550610a6c565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610aa64361184b565b5060fc558015610aef575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610afe6118db565b6107815f611935565b60655433906001600160a01b03168114610b755760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016106db565b61076081611935565b610b8661194e565b610781336001611809565b5f610b9a61159a565b905090565b5f5f5f610baa610c2a565b9050610c09816020015160ff16825f015163ffffffff16610bcb91906129ea565b60fd5483516001600160401b038083169263ffffffff90921691610bf891600160401b909104168a612a01565b610c029190612a20565b875f6119bf565b90969095509350505050565b5f610c21468484611727565b90505b92915050565b604080518082019091525f8082526020820152610b9a60408051808201909152630393870081526008602082015290565b825f819003610c7d5760405163ec73295960e01b815260040160405180910390fd5b826001600160401b0316805f03610ca75760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec14610cd957604051636494e9f760e01b815260040160405180910390fd5b6002610ce760c95460ff1690565b60ff1603610d085760405163dfc60d8560e01b815260040160405180910390fd5b610d126002611a48565b604051631799c89b60e01b815260040160405180910390fd5b5f8080610d3e6060880160408901612a60565b610d4e9063ffffffff1687612a20565b9050610d6060a0880160808901612a60565b63ffffffff1615801590610d915750610d7f60a0880160808901612a60565b63ffffffff16816001600160401b0316115b15610daf57610da660a0880160808901612a60565b63ffffffff1690505b5f610dbd6020890189612a79565b60ff16610dd060608a0160408b01612a60565b63ffffffff16610de091906129ea565b9050610dfe81878488610df960808e0160608f01612a99565b6119bf565b93509350505094509492505050565b5f438210610e1c57505f919050565b43610e2983610100612ab2565b10610e3357504090565b505f90815260fb602052604090205490565b610e4d6118db565b606580546001600160a01b0383166001600160a01b03199091168117909155610e7e6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610eca60c954610100900460ff1660021490565b15610ee85760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b610f086033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614158015610f455750610f2f816001610c15565b6001600160a01b0316336001600160a01b031614155b15610f6357604051630d85cccf60e11b815260040160405180910390fd5b6002610f7160c95460ff1690565b60ff1603610f925760405163dfc60d8560e01b815260040160405180910390fd5b610f9c6002611a48565b6001600160a01b038216610fc35760405163053fd54760e01b815260040160405180910390fd5b6001600160a01b038316610fe957610fe46001600160a01b03831647611a5e565b611066565b6040516370a0823160e01b81523060048201526110669083906001600160a01b038616906370a0823190602401602060405180830381865afa158015611031573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110559190612a49565b6001600160a01b0386169190611a69565b6110706001611a48565b505050565b825f8190036110975760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036110c15760405163ec73295960e01b815260040160405180910390fd5b6110d16060840160408501612a60565b63ffffffff16805f036110f75760405163ec73295960e01b815260040160405180910390fd5b6111046020850185612a79565b60ff16805f036111275760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461115957604051636494e9f760e01b815260040160405180910390fd5b600261116760c95460ff1690565b60ff16036111885760405163dfc60d8560e01b815260040160405180910390fd5b6111926002611a48565b5f61119e6001436129d7565b90505f5f6111ab8361184b565b915091508160fc54146111d15760405163d719258d60e01b815260040160405180910390fd5b60fc55505f6111e36020880188612a79565b60ff166111f66060890160408a01612a60565b63ffffffff166112069190612a20565b60fd549091506001600160401b03808316600160c01b90920416146112a15760fd54600160c01b90046001600160401b0316156112805760fd5461125e906001600160401b0380821691600160c01b90041683610665565b60fd805467ffffffffffffffff19166001600160401b03929092169190911790555b60fd80546001600160c01b0316600160c01b6001600160401b038416021790555b5060fd545f9081906112db9089906112c990600160801b90046001600160401b0316426129d7565b60fd546001600160401b03168c610d2b565b915091506112e65f90565b1580156112f35750814814155b15611311576040516336d54d4f60e11b815260040160405180910390fd5b60fd805467ffffffffffffffff19166001600160401b039283161790819055600160401b90048116908b16111590506114365761135f6d7369676e616c5f7365727669636560901b5f610c15565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da1696024820152908b166044820152606481018a90526001600160a01b039190911690634f90a674906084016020604051808303815f875af11580156113e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140a9190612a49565b5060fd80546fffffffffffffffff00000000000000001916600160401b6001600160401b038c16021790555b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4936114c1938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a150506114d56001611a48565b5050505050505050565b5f826001600160401b03165f036114f7575080610674565b670de0b6b3a76400005f6001600160401b0380861690611519908616846129ea565b6115239190612ad9565b90506001600160ff1b0381111561154d57604051636296f1b960e11b815260040160405180910390fd5b5f61155782611abb565b90505f828802828702015f81126001811461157657858204925061157a565b5f92505b5061158e9050816001600160401b03611cd8565b98975050505050505050565b5f516020612c045f395f51905f52546001600160a01b031690565b6107606118db565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115f05761107083611cec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561164a575060408051601f3d908101601f1916820190925261164791810190612a49565b60015b6116ad5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106db565b5f516020612c045f395f51905f52811461171b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106db565b50611070838383611d87565b5f6117328484611db1565b90508115801561174957506001600160a01b038116155b1561067457604051632b0d65db60e01b81526001600160401b0385166004820152602481018490526044016106db565b61178d60c954610100900460ff1660021490565b6117aa5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b6108386118db565b806001600160a01b0381166118395760405163538ba4f960e01b815260040160405180910390fd5b61184283611e5b565b61107082611eb9565b5f5f611855612585565b5f5b60ff8110801561186a5750806001018510155b1561189b575f198186030180408360ff8306610100811061188d5761188d612aec565b602002015250600101611857565b5046611fe0820152612000812092508340816118b860ff87612b00565b61010081106118c9576118c9612aec565b60200201526120009020919391925050565b6033546001600160a01b031633146107815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b606580546001600160a01b031916905561076081611f29565b61196260c954610100900460ff1660021490565b156119805760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016117ff565b5f80806119db63ffffffff86166001600160401b038916612ab2565b9050856001600160401b031681116119f4576001611a07565b611a076001600160401b038716826129d7565b9050611a266001600160401b03611a2083878316611f7a565b90611cd8565b9150611a3b826001600160401b031689611f8f565b9250509550959350505050565b60c9805460ff191660ff92909216919091179055565b61083882825a611fbe565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611070908490612001565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611b1757631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f818311611ce65782610c21565b50919050565b6001600160a01b0381163b611d595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106db565b5f516020612c045f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d90836120d4565b5f82511180611d9c5750805b1561107057611dab8383612113565b50505050565b6097545f906001600160a01b031680611ddd57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015611e2f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e539190612b13565b949350505050565b5f54610100900460ff16611e815760405162461bcd60e51b81526004016106db90612b2e565b611e89612138565b611ea76001600160a01b03821615611ea15781611935565b33611935565b5060c9805461ff001916610100179055565b5f54610100900460ff16611edf5760405162461bcd60e51b81526004016106db90612b2e565b6001600160401b03461115611f075760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f818311611f885781610c21565b5090919050565b5f5f82611f9c858561215e565b611fa69190612ad9565b90508015611fb45780611e53565b5060019392505050565b815f03611fca57505050565b611fe483838360405180602001604052805f8152506121d8565b61107057604051634c67134d60e11b815260040160405180910390fd5b5f612055826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122159092919063ffffffff16565b905080515f14806120755750808060200190518101906120759190612b79565b6110705760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106db565b6120dd81611cec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610c218383604051806060016040528060278152602001612c2460279139612223565b5f54610100900460ff166107815760405162461bcd60e51b81526004016106db90612b2e565b5f815f0361217f57604051636296f1b960e11b815260040160405180910390fd5b5f8261219385670de0b6b3a76400006129ea565b61219d9190612ad9565b9050680755bf798b4a1bf1e48111156121bc5750680755bf798b4a1bf1e45b670de0b6b3a76400006121ce82612297565b611e539190612ad9565b5f6001600160a01b03851661220057604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606061067184845f85612411565b60605f5f856001600160a01b03168560405161223f9190612bb6565b5f60405180830381855af49150503d805f8114612277576040519150601f19603f3d011682016040523d82523d5f602084013e61227c565b606091505b509150915061228d868383876124e8565b9695505050505050565b5f68023f2fa8f6da5b9d281982136122ae57919050565b680755bf798b4a1bf1e582126122cb5763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b6060824710156124725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106db565b5f5f866001600160a01b0316858760405161248d9190612bb6565b5f6040518083038185875af1925050503d805f81146124c7576040519150601f19603f3d011682016040523d82523d5f602084013e6124cc565b606091505b50915091506124dd878383876124e8565b979650505050505050565b606083156125565782515f0361254f576001600160a01b0385163b61254f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106db565b5081611e53565b611e53838381511561256b5781518083602001fd5b8060405162461bcd60e51b81526004016106db9190612bd1565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b03811681146125bb575f5ffd5b919050565b5f5f5f606084860312156125d2575f5ffd5b6125db846125a5565b92506125e9602085016125a5565b91506125f7604085016125a5565b90509250925092565b6001600160a01b0381168114610760575f5ffd5b5f60208284031215612624575f5ffd5b813561067481612600565b8015158114610760575f5ffd5b5f5f5f6060848603121561264e575f5ffd5b612657846125a5565b925060208401359150604084013561266e8161262f565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561269e575f5ffd5b82356126a981612600565b915060208301356001600160401b038111156126c3575f5ffd5b8301601f810185136126d3575f5ffd5b80356001600160401b038111156126ec576126ec612679565b604051601f8201601f19908116603f011681016001600160401b038111828210171561271a5761271a612679565b604052818152828201602001871015612731575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215612763575f5ffd5b843561276e81612600565b9350602085013561277e81612600565b925061278c604086016125a5565b915061279a606086016125a5565b905092959194509250565b803563ffffffff811681146125bb575f5ffd5b5f5f604083850312156127c9575f5ffd5b6127d2836125a5565b91506127e0602084016127a5565b90509250929050565b5f5f604083850312156127fa575f5ffd5b82359150602083013561280c8161262f565b809150509250929050565b5f5f5f5f6080858703121561282a575f5ffd5b8435935060208501359250612841604086016125a5565b915061279a606086016127a5565b5f60a08284031215611ce6575f5ffd5b5f5f5f5f6101008587031215612873575f5ffd5b61287d868661284f565b935061288b60a086016125a5565b925061289960c086016125a5565b915061279a60e086016127a5565b5f602082840312156128b7575f5ffd5b5035919050565b5f5f604083850312156128cf575f5ffd5b82356128da81612600565b9150602083013561280c81612600565b5f5f5f5f61010085870312156128fe575f5ffd5b612907856125a5565b93506020850135925061291c604086016127a5565b915061279a866060870161284f565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c2457610c246129c3565b8082028115828204841417610c2457610c246129c3565b6001600160401b038281168282160390811115610c2457610c246129c3565b6001600160401b038181168382160290811690818114612a4257612a426129c3565b5092915050565b5f60208284031215612a59575f5ffd5b5051919050565b5f60208284031215612a70575f5ffd5b610c21826127a5565b5f60208284031215612a89575f5ffd5b813560ff81168114610674575f5ffd5b5f60208284031215612aa9575f5ffd5b610c21826125a5565b80820180821115610c2457610c246129c3565b634e487b7160e01b5f52601260045260245ffd5b5f82612ae757612ae7612ac5565b500490565b634e487b7160e01b5f52603260045260245ffd5b5f82612b0e57612b0e612ac5565b500690565b5f60208284031215612b23575f5ffd5b815161067481612600565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612b89575f5ffd5b81516106748161262f565b5f5b83811015612bae578181015183820152602001612b96565b50505f910152565b5f8251612bc7818460208701612b94565b9190910192915050565b602081525f8251806020840152612bef816040850160208701612b94565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220effaa84efcacfc056fb02202f151620faec2208bfd9251bf5034a0d35854a32e64736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000010001": { + "0x1670100000000000000000000000000000010001": { "contractName": "TaikoL2", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670010000000000000000000000000000010002", - "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007e7e", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x0000000000000000000000000000000000000000000000000000000000000097": "0x0000000000000000000000001670100000000000000000000000000000010002", + "0x00000000000000000000000000000000000000000000000000000000000000fe": "0x0000000000000000000000000000000000000000000000000000000000007a69", "0x00000000000000000000000000000000000000000000000000000000000000fd": "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xf167b245aa70c0a5e2f44cd65a94f2b1c5c9e8c8ab059940e4bf1c47d7a39557", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010001" + "0x00000000000000000000000000000000000000000000000000000000000000fc": "0xc1dacae4531cef33c3d19601822ade91f548e191b030fa88c5964199df8c2a8f", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000010001" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010002": { + "0x0167010000000000000000000000000000010002": { "contractName": "RollupAddressManagerImpl", "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f" }, - "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610300578063a86f9d9e1461031d578063d8f4648f1461033c578063e07baba61461035b578063e30c397814610391578063f2fde38b146103ae575f5ffd5b80635c975abb14610290578063715018a6146102b057806379ba5097146102c45780638456cb59146102d85780638abf6077146102ec575f5ffd5b80633ab76e9f116100ee5780633ab76e9f146102095780633eb6b8cf146102285780633f4ba83a146102475780634f1ef2861461025b57806352d1902d1461026e575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c65780633659cfe6146101ea575b5f5ffd5b348015610135575f5ffd5b5061013e6103cd565b005b34801561014b575f5ffd5b5061013e61015a36600461119f565b61047d565b34801561016a575f5ffd5b506101a96101793660046111d5565b6001600160401b03919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d1575f5ffd5b506101da610544565b60405190151581526020016101bd565b3480156101f5575f5ffd5b5061013e61020436600461119f565b61055c565b348015610214575f5ffd5b506097546101a9906001600160a01b031681565b348015610233575f5ffd5b506101a961024236600461120c565b610623565b348015610252575f5ffd5b5061013e610637565b61013e610269366004611259565b61064b565b348015610279575f5ffd5b50610282610700565b6040519081526020016101bd565b34801561029b575f5ffd5b506101da60c954610100900460ff1660021490565b3480156102bb575f5ffd5b5061013e6107b1565b3480156102cf575f5ffd5b5061013e6107c2565b3480156102e3575f5ffd5b5061013e610839565b3480156102f7575f5ffd5b506101a961084c565b34801561030b575f5ffd5b506033546001600160a01b03166101a9565b348015610328575f5ffd5b506101a961033736600461131c565b61085a565b348015610347575f5ffd5b5061013e610356366004611346565b61086d565b348015610366575f5ffd5b5060c9546201000090046001600160401b03166040516001600160401b0390911681526020016101bd565b34801561039c575f5ffd5b506065546001600160a01b03166101a9565b3480156103b9575f5ffd5b5061013e6103c836600461119f565b610949565b6103d56109ba565b5f54600290610100900460ff161580156103f557505f5460ff8083169116105b61041a5760405162461bcd60e51b815260040161041190611383565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff161580801561049b57505f54600160ff909116105b806104b45750303b1580156104b457505f5460ff166001145b6104d05760405162461bcd60e51b815260040161041190611383565b5f805460ff1916600117905580156104f1575f805461ff0019166101001790555b6104fb8230610a14565b8015610540575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261055360c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105a45760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105d6610a53565b6001600160a01b0316146105fc5760405162461bcd60e51b81526004016104119061141d565b61060581610a6e565b604080515f8082526020820190925261062091839190610a76565b50565b5f61062f848484610be0565b949350505050565b61063f610c3c565b610649335f610ccc565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036106935760405162461bcd60e51b8152600401610411906113d1565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166106c5610a53565b6001600160a01b0316146106eb5760405162461bcd60e51b81526004016104119061141d565b6106f482610a6e565b61054082826001610a76565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461079f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610411565b505f5160206115565f395f51905f5290565b6107b96109ba565b6106495f610ce5565b60655433906001600160a01b031681146108305760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610411565b61062081610ce5565b610841610cfe565b610649336001610ccc565b5f610855610a53565b905090565b5f610866468484610be0565b9392505050565b6108756109ba565b6001600160401b0383165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108c65760405163a883089360e01b815260040160405180910390fd5b6001600160401b0384165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109516109ba565b606580546001600160a01b0383166001600160a01b031990911681179091556109826033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106495760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610411565b806001600160a01b038116610a3c5760405163538ba4f960e01b815260040160405180910390fd5b610a4583610d6f565b610a4e82610dcd565b505050565b5f5160206115565f395f51905f52546001600160a01b031690565b6106206109ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610aa957610a4e83610e3d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b03575060408051601f3d908101601f19168201909252610b0091810190611469565b60015b610b665760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610411565b5f5160206115565f395f51905f528114610bd45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610411565b50610a4e838383610ed8565b5f610beb8484610f02565b90508180610c0157506001600160a01b03811615155b84849091610c3357604051632b0d65db60e01b81526001600160401b0390921660048301526024820152604401610411565b50509392505050565b610c5060c954610100900460ff1660021490565b610c6d5760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff001990911662010000426001600160401b031602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561062081610fa4565b610d1260c954610100900460ff1660021490565b15610d305760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cc2565b5f54610100900460ff16610d955760405162461bcd60e51b815260040161041190611480565b610d9d610ff5565b610dbb6001600160a01b03821615610db55781610ce5565b33610ce5565b5060c9805461ff001916610100179055565b5f54610100900460ff16610df35760405162461bcd60e51b815260040161041190611480565b6001600160401b03461115610e1b5760405163a12e8fa960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381163b610eaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610411565b5f5160206115565f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610ee18361101b565b5f82511180610eed5750805b15610a4e57610efc838361105a565b50505050565b6097545f906001600160a01b031680610f2e57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b81526001600160401b0385166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f80573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f91906114cb565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166106495760405162461bcd60e51b815260040161041190611480565b61102481610e3d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061086683836040518060600160405280602781526020016115766027913960605f5f856001600160a01b0316856040516110969190611508565b5f60405180830381855af49150503d805f81146110ce576040519150601f19603f3d011682016040523d82523d5f602084013e6110d3565b606091505b50915091506110e4868383876110ee565b9695505050505050565b6060831561115c5782515f03611155576001600160a01b0385163b6111555760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610411565b508161062f565b61062f83838151156111715781518083602001fd5b8060405162461bcd60e51b81526004016104119190611523565b6001600160a01b0381168114610620575f5ffd5b5f602082840312156111af575f5ffd5b81356108668161118b565b80356001600160401b03811681146111d0575f5ffd5b919050565b5f5f604083850312156111e6575f5ffd5b6111ef836111ba565b946020939093013593505050565b803580151581146111d0575f5ffd5b5f5f5f6060848603121561121e575f5ffd5b611227846111ba565b92506020840135915061123c604085016111fd565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561126a575f5ffd5b82356112758161118b565b915060208301356001600160401b0381111561128f575f5ffd5b8301601f8101851361129f575f5ffd5b80356001600160401b038111156112b8576112b8611245565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112e6576112e6611245565b6040528181528282016020018710156112fd575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f6040838503121561132d575f5ffd5b8235915061133d602084016111fd565b90509250929050565b5f5f5f60608486031215611358575f5ffd5b611361846111ba565b92506020840135915060408401356113788161118b565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611479575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156114db575f5ffd5b81516108668161118b565b5f5b838110156115005781810151838201526020016114e8565b50505f910152565b5f82516115198184602087016114e6565b9190910192915050565b602081525f82518060208401526115418160408501602087016114e6565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201f510524c1800f97cbf3fac7303cbf789bb0b2861287601b3f10c325c89799f364736f6c634300081b0033", + "code": "0x608060405260043610610126575f3560e01c80635c975abb116100a85780638da5cb5b1161006d5780638da5cb5b14610301578063a86f9d9e1461031e578063d8f4648f1461033d578063e07baba61461035c578063e30c39781461039b578063f2fde38b146103b8575f5ffd5b80635c975abb14610291578063715018a6146102b157806379ba5097146102c55780638456cb59146102d95780638abf6077146102ed575f5ffd5b80633ab76e9f116100ee5780633ab76e9f1461020a5780633eb6b8cf146102295780633f4ba83a146102485780634f1ef2861461025c57806352d1902d1461026f575f5ffd5b8063069489a21461012a57806319ab453c1461014057806328f713cc1461015f5780633075db56146101c75780633659cfe6146101eb575b5f5ffd5b348015610135575f5ffd5b5061013e6103d7565b005b34801561014b575f5ffd5b5061013e61015a36600461110e565b610487565b34801561016a575f5ffd5b506101aa610179366004611145565b67ffffffffffffffff919091165f90815260fb6020908152604080832093835292905220546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101d2575f5ffd5b506101db61055f565b60405190151581526020016101be565b3480156101f6575f5ffd5b5061013e61020536600461110e565b610577565b348015610215575f5ffd5b506097546101aa906001600160a01b031681565b348015610234575f5ffd5b506101aa61024336600461117c565b61063e565b348015610253575f5ffd5b5061013e610654565b61013e61026a3660046111c9565b610668565b34801561027a575f5ffd5b5061028361071d565b6040519081526020016101be565b34801561029c575f5ffd5b506101db60c954610100900460ff1660021490565b3480156102bc575f5ffd5b5061013e6107ce565b3480156102d0575f5ffd5b5061013e6107df565b3480156102e4575f5ffd5b5061013e610856565b3480156102f8575f5ffd5b506101aa610869565b34801561030c575f5ffd5b506033546001600160a01b03166101aa565b348015610329575f5ffd5b506101aa61033836600461128f565b610877565b348015610348575f5ffd5b5061013e6103573660046112b9565b610883565b348015610367575f5ffd5b5060c9546103829062010000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101be565b3480156103a6575f5ffd5b506065546001600160a01b03166101aa565b3480156103c3575f5ffd5b5061013e6103d236600461110e565b610961565b6103df6109d2565b5f54600290610100900460ff161580156103ff57505f5460ff8083169116105b6104245760405162461bcd60e51b815260040161041b906112f6565b60405180910390fd5b5f8054609780546001600160a01b0319163017905561ffff191660ff83169081176101001761ff0019169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156104a557505f54600160ff909116105b806104be5750303b1580156104be57505f5460ff166001145b6104da5760405162461bcd60e51b815260040161041b906112f6565b5f805460ff1916600117905580156104fb575f805461ff0019166101001790555b61050482610a2c565b609780546001600160a01b03191630179055801561055b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056e60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100021630036105bf5760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670100000000000000000000000000000100026001600160a01b03166105f1610a8a565b6001600160a01b0316146106175760405162461bcd60e51b815260040161041b90611390565b61062081610aa5565b604080515f8082526020820190925261063b91839190610aad565b50565b5f61064a848484610c1c565b90505b9392505050565b61065c610c6f565b610666335f610d00565b565b6001600160a01b037f00000000000000000000000001670100000000000000000000000000000100021630036106b05760405162461bcd60e51b815260040161041b90611344565b7f00000000000000000000000001670100000000000000000000000000000100026001600160a01b03166106e2610a8a565b6001600160a01b0316146107085760405162461bcd60e51b815260040161041b90611390565b61071182610aa5565b61055b82826001610aad565b5f306001600160a01b037f000000000000000000000000016701000000000000000000000000000001000216146107bc5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161041b565b505f5160206114c95f395f51905f5290565b6107d66109d2565b6106665f610d19565b60655433906001600160a01b0316811461084d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161041b565b61063b81610d19565b61085e610d32565b610666336001610d00565b5f610872610a8a565b905090565b5f61064d468484610c1c565b61088b6109d2565b67ffffffffffffffff83165f90815260fb602090815260408083208584529091529020546001600160a01b039081169082168190036108dd5760405163a883089360e01b815260040160405180910390fd5b67ffffffffffffffff84165f81815260fb6020908152604080832087845282529182902080546001600160a01b0319166001600160a01b038781169182179092558351908152908516918101919091528592917f500dcd607a98daece9bccc2511bf6032471252929de73caf507aae0e082f8453910160405180910390a350505050565b6109696109d2565b606580546001600160a01b0383166001600160a01b0319909116811790915561099a6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b031633146106665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161041b565b5f54610100900460ff16610a525760405162461bcd60e51b815260040161041b906113dc565b610a5a610da3565b610a786001600160a01b03821615610a725781610d19565b33610d19565b5060c9805461ff001916610100179055565b5f5160206114c95f395f51905f52546001600160a01b031690565b61063b6109d2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610ae557610ae083610dc9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b3f575060408051601f3d908101601f19168201909252610b3c91810190611427565b60015b610ba25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161041b565b5f5160206114c95f395f51905f528114610c105760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161041b565b50610ae0838383610e64565b5f610c278484610e8e565b905081158015610c3e57506001600160a01b038116155b1561064d57604051632b0d65db60e01b815267ffffffffffffffff851660048201526024810184905260440161041b565b610c8360c954610100900460ff1660021490565b610ca05760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461010069ffffffffffffffffff0019909116620100004267ffffffffffffffff1602171790556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b604051630c2b8f8f60e11b815260040160405180910390fd5b606580546001600160a01b031916905561063b81610f39565b610d4660c954610100900460ff1660021490565b15610d645760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610cf6565b5f54610100900460ff166106665760405162461bcd60e51b815260040161041b906113dc565b6001600160a01b0381163b610e365760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161041b565b5f5160206114c95f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610e6d83610f8a565b5f82511180610e795750805b15610ae057610e888383610fc9565b50505050565b6097545f906001600160a01b031680610eba57604051638ed88b2560e01b815260040160405180910390fd5b604051630a3dc4f360e21b815267ffffffffffffffff85166004820152602481018490526001600160a01b038216906328f713cc90604401602060405180830381865afa158015610f0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f31919061143e565b949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610f9381610dc9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061064d83836040518060600160405280602781526020016114e96027913960605f5f856001600160a01b031685604051611005919061147b565b5f60405180830381855af49150503d805f811461103d576040519150601f19603f3d011682016040523d82523d5f602084013e611042565b606091505b50915091506110538683838761105d565b9695505050505050565b606083156110cb5782515f036110c4576001600160a01b0385163b6110c45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161041b565b5081610f31565b610f3183838151156110e05781518083602001fd5b8060405162461bcd60e51b815260040161041b9190611496565b6001600160a01b038116811461063b575f5ffd5b5f6020828403121561111e575f5ffd5b813561064d816110fa565b803567ffffffffffffffff81168114611140575f5ffd5b919050565b5f5f60408385031215611156575f5ffd5b61115f83611129565b946020939093013593505050565b80358015158114611140575f5ffd5b5f5f5f6060848603121561118e575f5ffd5b61119784611129565b9250602084013591506111ac6040850161116d565b90509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156111da575f5ffd5b82356111e5816110fa565b9150602083013567ffffffffffffffff811115611200575f5ffd5b8301601f81018513611210575f5ffd5b803567ffffffffffffffff81111561122a5761122a6111b5565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611259576112596111b5565b604052818152828201602001871015611270575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156112a0575f5ffd5b823591506112b06020840161116d565b90509250929050565b5f5f5f606084860312156112cb575f5ffd5b6112d484611129565b92506020840135915060408401356112eb816110fa565b809150509250925092565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611437575f5ffd5b5051919050565b5f6020828403121561144e575f5ffd5b815161064d816110fa565b5f5b8381101561147357818101518382015260200161145b565b50505f910152565b5f825161148c818460208701611459565b9190910192915050565b602081525f82518060208401526114b4816040850160208701611459565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220086d22e71c4d170ad7ce74f948ce47f2f39076babb18c7b950d99c756006877464736f6c634300081b0033", "balance": "0x0" }, - "0x1670010000000000000000000000000000010002": { + "0x1670100000000000000000000000000000010002": { "contractName": "RollupAddressManager", "storage": { "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", - "0xd8268ac552cc4e7bd87f3f4b36d055f134549289cc2d68715bd581a06ffb2631": "0x0000000000000000000000001670010000000000000000000000000000010001", - "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", - "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010002" + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x00000000000000000000000091c34396e640e3bb4ee80f2e523c23dda2b3f78f", + "0x1bd2b99f99179300cf02ec1d7601bc5aa76d7eff5110d5c1e971d6dad552d55c": "0x0000000000000000000000001670100000000000000000000000000000010001", + "0xe5868eccbe729200743507b6a76ef4952ff4776d6f6e681ea64d7940675418c0": "0x0000000000000000000000001670100000000000000000000000000000000001", + "0x84e8aac80b10d1364654096d750848d40210c937caf853cdc47e8784ad6cf9d5": "0x0000000000000000000000001670100000000000000000000000000000000005", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167010000000000000000000000000000010002" }, - "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea264697066735822122063ca278dcc774bf6b03f066b470ab5bd61081120baaf8096d8309758d80de2c864736f6c634300081b0033", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea26469706673582212207b080a80081bb3b6bfe354da7a048c8c76f2c38196dbdab17569c4eb15b5f26764736f6c634300081b0033", "balance": "0x0" }, - "0x5dADBb58A8ACfCaec475a08bBB4054F8874A3A8b": { + "0x7A4ea15A1713C80C7f6aE5Cd0036415B9dd4af36": { "contractName": "LibNetwork", "storage": {}, - "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220fa28e419f92948effce2eaec534c53f13c8015c95a6be7019674d64d2aac3ae164736f6c634300081b0033", + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212204213774d0b1a3b266888223284a425ae694a8c5e97b18403ec7f442200eae55a64736f6c634300081b0033", "balance": "0x0" }, - "0x0167001000000000000000000000000000010099": { + "0x0167010000000000000000000000000000010099": { "contractName": "RegularERC20", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000002710000", - "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x454340b1295f9ff1c0fb9192166d0215d33f84dc5f2dc3f3e5732a4b557186bf": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x6a3bb1dada7c82a99b4a02d16da3fda07cb31d8887b9b99ec829ab67fd7a817e": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x2fe2844d12634f5dce1e2be5be96b2ea1c573f8f25171997e2f4bd943dd32f92": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x3836a017087644fbf6925ae1aca14201ce898a35434d9dea9ebd03cea44e049a": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x1c7a29f5a750951acb14fdf82a876085914eb17f15a162b054a3d2f8c92e2451": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x271927a243b678b7a071f19b4051ef93b16e397066e3fdef5bba26527e34a1a1": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x4663d660b5d810c9ab2f6dc64af7ff84ebae28a72342391622649a7fe87c93d4": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x352c3281a58937f04ef7cc7b88f3456b6ffd47f52a321c253dc083fb53a3a114": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x6d5faa5f4e671e6fe47b0eab51c62f8cebf354e21e8fdccf8cdfc0293dd341a3": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x673de83553dc3a2c0f59aa7193de392a4530feb73b9d6cd4fcef68802b8195c1": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x8b6a7148182c39c1ca0b052292befa83d09344947c23e47b300314fa8c2b8f7d": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xed4a23b4a030ee0d64ef69b276dee81d493e5efca01c0fa514e0c38f882af152": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x45124dfaa1716b8d229f646ff926377e17b887c2b2eab6a87ab0348ee1689eac": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x40f9c2870c16301e8614e56453fc5b838c4a153eb0b18c4c050efbf4f786518a": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xbd55c9294669a294e0c8fd07e2c07738e95be0123b62b752d782fe317f25ca97": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x52c0eeeba21034a69ad7cfa70f75c6fd127acd4084a4da80f30cc7540bdf990b": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x843a9befd317bdcee99c42a3adf6d00b789224beda1485c7f6e7bf327755328e": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xea09b20615ffad342fb450741e59ea6ba180fa93b8701b31fa639ef9ff50d2b0": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x39cd5e5ec54ce41a5f5b2c13ce7133998dfef654caacfb44d5c517700c217d36": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xd46a4409ebc9fc47afedecdadc89dbc0d6f46be6bdb49fd822d5143daedc83f0": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x5735d6fad3ea4f2328a1557ff1be7570df3d4c2630b448c1b7fe2781d018beb0": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x509c640066f1872118ec768fcb985c7bf4476690788ac7e112ab072ca82ab219": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xf9982658df503b792c55f860aefa42588712c9069523324d4b9ce4d9a10e2e9c": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x87d11160035f8424b7163a397fc780b278af3de5a6caa2cb71bb2b46825ce159": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x1dde801acf032acf4b3151b5edb82e0e4d872a54d9efbf3809d75efcbfa2bf8f": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x01aad34cdf9f8f5fca811e2fab1411b08778be71f547894fa0d9fafa5c1f60b2": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x65cee0cf3d643c3f3402a40ddebed72cec3dd6bac66974bff967dc0ef9e2faed": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0xaf6cadccd3f046eeb282ec0b08e44adbe45784a23f41d76b096ccb8e7f238e2b": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x2589e1958c4e4f4a5f777b0b92a3170cc21771a8d3580331a71232f8624f7628": "0x00000000000000000000000000000000000000000000000000000000000fa000", - "0x1f27de92fedf410197c8a09d0f2f03372d92b75c9889a6a61cf491395877fbcf": "0x00000000000000000000000000000000000000000000000000000000000fa000" + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x00000000000000000000000000000000000000000000000000000000001f4000", + "0x8577e88969d2fa50020a5de3ec00ef722a6ad13741e7d7b5288609c0c312c113": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xaaa7f9b700b86a1f8ec5dacd0ca81e3b1ea8214dae2b1856095f9d44c1f5b380": "0x00000000000000000000000000000000000000000000000000000000000fa000" }, - "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220afb53222eb165673ba5dfc3c8883c6d8b4942e876e8c5b0c567a03996e20a58864736f6c634300081b0033", + "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220a1403924b9774521e0b2e4d325575d166c7612abf0d4b532ee23317cd4225a6b64736f6c634300081b0033", "balance": "0x0" } } \ No newline at end of file From b06f6ba03a295837efdfabc7373bfecafe30f65d Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Wed, 6 Nov 2024 11:19:29 -0800 Subject: [PATCH 20/30] temp fix for old l1origin --- core/rawdb/taiko_l1_origin.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index c5a3ff5f5246..a6f9f372f23a 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -69,16 +69,38 @@ func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin } } -// ReadL1Origin retrieves the given L2 block's L1Origin from database. func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) { data, _ := db.Get(l1OriginKey(blockID)) if len(data) == 0 { return nil, nil } + // First try to decode the new version (with new fields) l1Origin := new(L1Origin) + // TEMP FIX so dont have to redeploy network! if err := rlp.Decode(bytes.NewReader(data), l1Origin); err != nil { - return nil, fmt.Errorf("invalid L1Origin RLP bytes: %w", err) + // If decoding the new version fails, try to decode the old version (without new fields) + oldL1Origin := struct { + BlockID *big.Int `json:"blockID" gencodec:"required"` + L2BlockHash common.Hash `json:"l2BlockHash"` + L1BlockHeight *big.Int `json:"l1BlockHeight"` + L1BlockHash common.Hash `json:"l1BlockHash"` + }{} + if err := rlp.Decode(bytes.NewReader(data), &oldL1Origin); err != nil { + return nil, fmt.Errorf("invalid L1Origin RLP bytes: %w", err) + } + + // If decoding old version succeeds, manually construct the new L1Origin with default values for the new fields + l1Origin = &L1Origin{ + BlockID: oldL1Origin.BlockID, + L2BlockHash: oldL1Origin.L2BlockHash, + L1BlockHeight: oldL1Origin.L1BlockHeight, + L1BlockHash: oldL1Origin.L1BlockHash, + BatchID: new(big.Int), // default value + EndOfBlock: false, // default value + EndOfPreconf: false, // default value + Preconfer: common.Address{}, // default value + } } return l1Origin, nil From fd9b48a97be4744ff7a375212151221413c9d4a1 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Wed, 6 Nov 2024 11:21:06 -0800 Subject: [PATCH 21/30] nil value --- core/rawdb/taiko_l1_origin.go | 1 - 1 file changed, 1 deletion(-) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index a6f9f372f23a..9182289088f2 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -96,7 +96,6 @@ func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) L2BlockHash: oldL1Origin.L2BlockHash, L1BlockHeight: oldL1Origin.L1BlockHeight, L1BlockHash: oldL1Origin.L1BlockHash, - BatchID: new(big.Int), // default value EndOfBlock: false, // default value EndOfPreconf: false, // default value Preconfer: common.Address{}, // default value From c18e4db42e88816328b10b1f55e4cb462a63f502 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Nov 2024 14:37:32 +0800 Subject: [PATCH 22/30] feat: rename to `L1OriginLegacy` --- core/rawdb/taiko_l1_origin.go | 44 ++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 9182289088f2..549d6db933ae 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -39,6 +39,14 @@ type L1Origin struct { Preconfer common.Address `json:"preconfer"` } +// L1OriginLegacy represents the legacy L1Origin structure of a L2 block. +type L1OriginLegacy struct { + BlockID *big.Int `json:"blockID" gencodec:"required"` + L2BlockHash common.Hash `json:"l2BlockHash"` + L1BlockHeight *big.Int `json:"l1BlockHeight"` + L1BlockHash common.Hash `json:"l1BlockHash"` +} + type l1OriginMarshaling struct { BlockID *math.HexOrDecimal256 L1BlockHeight *math.HexOrDecimal256 @@ -69,36 +77,34 @@ func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin } } +// ReadL1Origin retrieves the L1Origin of the given blockID from the database. func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) { data, _ := db.Get(l1OriginKey(blockID)) if len(data) == 0 { return nil, nil } - // First try to decode the new version (with new fields) + // First try to decode the new version (with new fields). l1Origin := new(L1Origin) - // TEMP FIX so dont have to redeploy network! if err := rlp.Decode(bytes.NewReader(data), l1Origin); err != nil { - // If decoding the new version fails, try to decode the old version (without new fields) - oldL1Origin := struct { - BlockID *big.Int `json:"blockID" gencodec:"required"` - L2BlockHash common.Hash `json:"l2BlockHash"` - L1BlockHeight *big.Int `json:"l1BlockHeight"` - L1BlockHash common.Hash `json:"l1BlockHash"` - }{} - if err := rlp.Decode(bytes.NewReader(data), &oldL1Origin); err != nil { - return nil, fmt.Errorf("invalid L1Origin RLP bytes: %w", err) + // If decoding the new version fails, try to decode the legacy version (without new fields). + l1OriginLegacy := new(L1OriginLegacy) + if err := rlp.Decode(bytes.NewReader(data), &l1OriginLegacy); err != nil { + return nil, fmt.Errorf("invalid legacy L1Origin RLP bytes: %w", err) } - // If decoding old version succeeds, manually construct the new L1Origin with default values for the new fields + // If decoding legacy version succeeds, manually + // construct the new L1Origin with default values for the new fields. l1Origin = &L1Origin{ - BlockID: oldL1Origin.BlockID, - L2BlockHash: oldL1Origin.L2BlockHash, - L1BlockHeight: oldL1Origin.L1BlockHeight, - L1BlockHash: oldL1Origin.L1BlockHash, - EndOfBlock: false, // default value - EndOfPreconf: false, // default value - Preconfer: common.Address{}, // default value + BlockID: l1OriginLegacy.BlockID, + L2BlockHash: l1OriginLegacy.L2BlockHash, + L1BlockHeight: l1OriginLegacy.L1BlockHeight, + L1BlockHash: l1OriginLegacy.L1BlockHash, + // default value, as the new fields are not present in the legacy version. + BatchID: nil, + EndOfBlock: false, + EndOfPreconf: false, + Preconfer: common.Address{}, } } From 3cd4472251dcb365c0280887133ffb7f8e68fe34 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Nov 2024 14:48:40 +0800 Subject: [PATCH 23/30] feat: change `common.Big0` as the default value for legacy l1Origin, to make `IsSoftblock` return `false` --- core/rawdb/taiko_l1_origin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 549d6db933ae..34b0a1bc3f24 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -101,7 +101,7 @@ func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) L1BlockHeight: l1OriginLegacy.L1BlockHeight, L1BlockHash: l1OriginLegacy.L1BlockHash, // default value, as the new fields are not present in the legacy version. - BatchID: nil, + BatchID: common.Big0, EndOfBlock: false, EndOfPreconf: false, Preconfer: common.Address{}, From ca660bd513646ee9944aaaef915825d649e781b0 Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 17 Nov 2024 11:39:30 +0800 Subject: [PATCH 24/30] feat(beacon): change the reorg log level (#350) * use debug log level to avoid logging too many logs when frequently soft block reorg. * use debug log level to avoid logging too many logs when frequently soft block reorg. * feat: check --taiko flag --------- Co-authored-by: David --- core/blockchain.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/blockchain.go b/core/blockchain.go index f7c921fe64fe..6f6d4964e54b 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -2269,7 +2269,12 @@ func (bc *BlockChain) reorg(oldHead *types.Header, newHead *types.Block) error { } else { // len(newChain) == 0 && len(oldChain) > 0 // rewind the canonical chain to a lower point. - log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "oldblocks", len(oldChain), "newnum", newBlock.Number(), "newhash", newBlock.Hash(), "newblocks", len(newChain)) + // CHANGE(taiko): use debug log level to avoid logging too many logs when frequently soft block rollback. + if bc.chainConfig.Taiko { + log.Debug("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "oldblocks", len(oldChain), "newnum", newBlock.Number(), "newhash", newBlock.Hash(), "newblocks", len(newChain)) + } else { + log.Error("Impossible reorg, please file an issue", "oldnum", oldBlock.Number(), "oldhash", oldBlock.Hash(), "oldblocks", len(oldChain), "newnum", newBlock.Number(), "newhash", newBlock.Hash(), "newblocks", len(newChain)) + } } // Acquire the tx-lookup lock before mutation. This step is essential // as the txlookups should be changed atomically, and all subsequent From 51d42ec9f39f1168510f18924585894bfafd8d75 Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 17 Nov 2024 14:59:21 +0800 Subject: [PATCH 25/30] add rlp optional flag (#353) --- consensus/taiko/consensus.go | 2 +- core/rawdb/taiko_l1_origin.go | 21 ++++++++------------- core/rawdb/taiko_l1_origin_test.go | 1 + ethclient/taiko_api_test.go | 4 ++-- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/consensus/taiko/consensus.go b/consensus/taiko/consensus.go index b2a38faef85e..96f18b9ba892 100644 --- a/consensus/taiko/consensus.go +++ b/consensus/taiko/consensus.go @@ -177,7 +177,7 @@ func (t *Taiko) verifyHeader(header, parent *types.Header, unixNow int64) error } // If the current block is not a soft block, then check the timestamp. - if l1Origin != nil && !l1Origin.IsSoftblock() && header.Time > uint64(unixNow) { + if l1Origin != nil && !l1Origin.IsSoftBlock() && header.Time > uint64(unixNow) { return consensus.ErrFutureBlock } diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 34b0a1bc3f24..d755d6ce44ad 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -33,10 +33,10 @@ type L1Origin struct { L2BlockHash common.Hash `json:"l2BlockHash"` L1BlockHeight *big.Int `json:"l1BlockHeight"` L1BlockHash common.Hash `json:"l1BlockHash"` - BatchID *big.Int `json:"batchID"` - EndOfBlock bool `json:"endOfBlock"` - EndOfPreconf bool `json:"endOfPreconf"` - Preconfer common.Address `json:"preconfer"` + BatchID *big.Int `json:"batchID" rlp:"optional"` + EndOfBlock bool `json:"endOfBlock" rlp:"optional"` + EndOfPreconf bool `json:"endOfPreconf" rlp:"optional"` + Preconfer common.Address `json:"preconfer" rlp:"optional"` } // L1OriginLegacy represents the legacy L1Origin structure of a L2 block. @@ -52,17 +52,12 @@ type l1OriginMarshaling struct { L1BlockHeight *math.HexOrDecimal256 } -// IsSoftblock returns true if the L1Origin is a softblock. -func (l *L1Origin) IsSoftblock() bool { - if l.BatchID == nil { +// IsSoftBlock returns true if the L1Origin is a softblock. +func (l *L1Origin) IsSoftBlock() bool { + if l.BatchID != nil { return true } - - if l.BatchID.Cmp(common.Big0) == 0 && l.Preconfer == (common.Address{}) { - return false - } - - return true + return false } // WriteL1Origin stores a L1Origin into the database. diff --git a/core/rawdb/taiko_l1_origin_test.go b/core/rawdb/taiko_l1_origin_test.go index dae37a354fa5..e101d3708a85 100644 --- a/core/rawdb/taiko_l1_origin_test.go +++ b/core/rawdb/taiko_l1_origin_test.go @@ -42,6 +42,7 @@ func TestL1Origin(t *testing.T) { l1Origin, err := ReadL1Origin(db, testL1Origin.BlockID) require.Nil(t, err) require.NotNil(t, l1Origin) + assert.Equal(t, testL1Origin.BatchID, l1Origin.BatchID) assert.Equal(t, testL1Origin.BlockID, l1Origin.BlockID) assert.Equal(t, testL1Origin.L2BlockHash, l1Origin.L2BlockHash) assert.Equal(t, testL1Origin.L1BlockHeight, l1Origin.L1BlockHeight) diff --git a/ethclient/taiko_api_test.go b/ethclient/taiko_api_test.go index 839918046036..e44d6ae4e043 100644 --- a/ethclient/taiko_api_test.go +++ b/ethclient/taiko_api_test.go @@ -82,7 +82,7 @@ func TestHeadL1Origin(t *testing.T) { require.Nil(t, err) require.Equal(t, testL1Origin, l1OriginFound) - require.False(t, l1OriginFound.IsSoftblock()) + require.False(t, l1OriginFound.IsSoftBlock()) } func TestL1OriginByID(t *testing.T) { @@ -111,7 +111,7 @@ func TestL1OriginByID(t *testing.T) { require.Nil(t, err) require.Equal(t, testL1Origin, l1OriginFound) - require.True(t, l1OriginFound.IsSoftblock()) + require.True(t, l1OriginFound.IsSoftBlock()) } // randomHash generates a random blob of data and returns it as a hash. From dd04f6cbe2456096d1f745b209737b05bc034ee6 Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 17 Nov 2024 15:07:43 +0800 Subject: [PATCH 26/30] fix lint --- core/rawdb/taiko_l1_origin.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index d755d6ce44ad..5d3cfcf456dc 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -54,10 +54,7 @@ type l1OriginMarshaling struct { // IsSoftBlock returns true if the L1Origin is a softblock. func (l *L1Origin) IsSoftBlock() bool { - if l.BatchID != nil { - return true - } - return false + return l.BatchID != nil } // WriteL1Origin stores a L1Origin into the database. From 5c649bae8cde3a140a1ea241cd615e34463bc6ae Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 17 Nov 2024 15:53:23 +0800 Subject: [PATCH 27/30] fix test case --- ethclient/taiko_api_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ethclient/taiko_api_test.go b/ethclient/taiko_api_test.go index e44d6ae4e043..e6ff3a48e1cb 100644 --- a/ethclient/taiko_api_test.go +++ b/ethclient/taiko_api_test.go @@ -69,7 +69,7 @@ func TestHeadL1Origin(t *testing.T) { L2BlockHash: headerHash, L1BlockHeight: randomBigInt(), L1BlockHash: randomHash(), - BatchID: common.Big0, + BatchID: nil, EndOfBlock: false, EndOfPreconf: false, Preconfer: common.Address{}, From e3eb72fd26cf9f002763dd0c67eb8a87009be81d Mon Sep 17 00:00:00 2001 From: maskpp Date: Wed, 27 Nov 2024 11:57:45 +0800 Subject: [PATCH 28/30] feat(l1Origin): remove the reverted l1Origins (#355) * remove the reverted l1Origins * feat: add more comments --------- Co-authored-by: David --- core/rawdb/taiko_l1_origin.go | 5 +++++ eth/catalyst/api.go | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/core/rawdb/taiko_l1_origin.go b/core/rawdb/taiko_l1_origin.go index 5d3cfcf456dc..ef9bf195b838 100644 --- a/core/rawdb/taiko_l1_origin.go +++ b/core/rawdb/taiko_l1_origin.go @@ -69,6 +69,11 @@ func WriteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int, l1Origin *L1Origin } } +// DeleteL1Origin removes the L1Origin. +func DeleteL1Origin(db ethdb.KeyValueWriter, blockID *big.Int) { + _ = db.Delete(l1OriginKey(blockID)) +} + // ReadL1Origin retrieves the L1Origin of the given blockID from the database. func ReadL1Origin(db ethdb.KeyValueReader, blockID *big.Int) (*L1Origin, error) { data, _ := db.Get(l1OriginKey(blockID)) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 07ba69217437..b6b689c9ad82 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -400,6 +400,11 @@ func (api *ConsensusAPI) forkchoiceUpdated(update engine.ForkchoiceStateV1, payl // generating the payload. It's a special corner case that a few slots are // missing and we are requested to generate the payload in slot. } else if isTaiko { // CHANGE(taiko): reorg is allowed in L2. + // After inserting a new canonical head, we delete all L1Origin data of the pending soft blocks. + head := api.eth.BlockChain().CurrentBlock() + for number := head.Number.Uint64(); number > block.NumberU64(); number-- { + rawdb.DeleteL1Origin(api.eth.ChainDb(), new(big.Int).SetUint64(number)) + } if latestValid, err := api.eth.BlockChain().SetCanonical(block); err != nil { return engine.ForkChoiceResponse{PayloadStatus: engine.PayloadStatusV1{Status: engine.INVALID, LatestValidHash: &latestValid}}, err } From d39b41069b8768de20439e5cae6eab452ccbcd83 Mon Sep 17 00:00:00 2001 From: Jeffery Walsh Date: Tue, 3 Dec 2024 12:37:19 -0800 Subject: [PATCH 29/30] only forward txs --- internal/ethapi/api.go | 107 ++--------------------------------------- 1 file changed, 3 insertions(+), 104 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 4406a64d58eb..782a74044f58 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -23,7 +23,6 @@ import ( "fmt" "maps" "math/big" - "strconv" "strings" "time" @@ -659,21 +658,6 @@ func (api *BlockChainAPI) ChainId() *hexutil.Big { // BlockNumber returns the block number of the chain head. func (api *BlockChainAPI) BlockNumber() hexutil.Uint64 { // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - log.Info("Forwarding BlockNumber request", "forwardURL", forwardURL) - - // Forward the raw transaction to the specified URL - res, err := forward[string](forwardURL, "eth_blockNumber", nil) - - if err == nil && res != nil { - log.Info("Forwarded block number request", "forwardURL", forwardURL, "res", res) - i, _ := strconv.ParseUint(*res, 0, 64) - - log.Info("Parsed block number", "forwardURL", forwardURL, "number", hexutil.Uint64(i)) - return hexutil.Uint64(i) - } - } - header, _ := api.b.HeaderByNumber(context.Background(), rpc.LatestBlockNumber) // latest header should always be available return hexutil.Uint64(header.Number.Uint64()) } @@ -682,37 +666,6 @@ func (api *BlockChainAPI) BlockNumber() hexutil.Uint64 { // given block number. The rpc.LatestBlockNumber and rpc.PendingBlockNumber meta // block numbers are also allowed. func (api *BlockChainAPI) GetBalance(ctx context.Context, address common.Address, blockNrOrHash rpc.BlockNumberOrHash) (*hexutil.Big, error) { - // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - if blockNr, ok := blockNrOrHash.Number(); ok { - log.Info( - "Forwarding GetBalance request", - "forwardURL", forwardURL, - "address", address.Hex(), - "blockNr", blockNr.String(), - ) - - bal, err := forward[string](forwardURL, "eth_getBalance", []interface{}{address.Hex(), blockNr.String()}) - if err == nil && bal != nil { - return (*hexutil.Big)(hexutil.MustDecodeBig(*bal)), nil - } - } - - if blockHash, ok := blockNrOrHash.Hash(); ok { - log.Info( - "Forwarding GetBalance request", - "forwardURL", forwardURL, - "address", address.Hex(), - "blockHash", blockHash.Hex(), - ) - - bal, err := forward[string](forwardURL, "eth_getBalance", []interface{}{address.Hex(), blockHash.Hex()}) - if err == nil && bal != nil { - return (*hexutil.Big)(hexutil.MustDecodeBig(*bal)), nil - } - } - } - state, _, err := api.b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash) if state == nil || err != nil { return nil, err @@ -894,17 +847,8 @@ func (api *BlockChainAPI) GetBlockByNumber(ctx context.Context, number rpc.Block } } return response, err - } else { - // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - log.Info("Forwarding GetBlockByNumber", "forwardURL", forwardURL, "number", number.Int64(), "numberStr", number.String()) - // Forward the raw transaction to the specified URL. - b, err := forward[map[string]interface{}](forwardURL, "eth_getBlockByNumber", []interface{}{number.String(), fullTx}) - if err == nil && b != nil { - return *b, nil - } - } } + return nil, err } @@ -914,15 +858,6 @@ func (api *BlockChainAPI) GetBlockByHash(ctx context.Context, hash common.Hash, block, err := api.b.BlockByHash(ctx, hash) if block != nil { return RPCMarshalBlock(block, true, fullTx, api.b.ChainConfig()), nil - } else { - // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - log.Info("Forwarding GetBlockByHash", "forwardURL", forwardURL, "hash", hash.Hex()) - m, err := forward[map[string]interface{}](forwardURL, "eth_getBlockByHash", []interface{}{hash.Hex(), fullTx}) - if err == nil && m != nil { - return *m, nil - } - } } return nil, err } @@ -1817,24 +1752,6 @@ func (api *TransactionAPI) GetRawTransactionByBlockHashAndIndex(ctx context.Cont // GetTransactionCount returns the number of transactions the given address has sent for the given block number func (api *TransactionAPI) GetTransactionCount(ctx context.Context, address common.Address, blockNrOrHash rpc.BlockNumberOrHash) (*hexutil.Uint64, error) { - // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - log.Info("Forwarding GetTransactionCount request", "forwardURL", forwardURL, "address", address.Hex()) - - if blockNr, ok := blockNrOrHash.Number(); ok { - txCount, err := forward[hexutil.Uint64](forwardURL, "eth_getTransactionCount", []interface{}{address.Hex(), blockNr.String()}) - if err == nil && txCount != nil { - return txCount, nil - } - } - - if blockHash, ok := blockNrOrHash.Hash(); ok { - txCount, err := forward[hexutil.Uint64](forwardURL, "eth_getTransactionCount", []interface{}{address.Hex(), blockHash.Hex()}) - if err == nil && txCount != nil { - return txCount, nil - } - } - } // Ask transaction pool for the nonce which includes pending transactions if blockNr, ok := blockNrOrHash.Number(); ok && blockNr == rpc.PendingBlockNumber { nonce, err := api.b.GetPoolNonce(ctx, address) @@ -1892,26 +1809,8 @@ func (api *TransactionAPI) GetRawTransactionByHash(ctx context.Context, hash com // GetTransactionReceipt returns the transaction receipt for the given transaction hash. func (api *TransactionAPI) GetTransactionReceipt(ctx context.Context, hash common.Hash) (map[string]interface{}, error) { found, tx, blockHash, blockNumber, index, err := api.b.GetTransaction(ctx, hash) - if api.b.GetPreconfirmationForwardingURL() == "" { - if err != nil { - return nil, NewTxIndexingError() // transaction is not fully indexed - } - } else { - if err != nil || !found { - // CHANGE(taiko): Forward the request to the preconf node if specified. - if forwardURL := api.b.GetPreconfirmationForwardingURL(); forwardURL != "" { - log.Info("Forwarding GetTransactionReceipt request", "forwardURL", forwardURL, "hash", hash.Hex()) - // Forward the raw transaction to the specified URL - m, err := forward[map[string]interface{}](forwardURL, "eth_getTransactionReceipt", []interface{}{hash.Hex()}) - if err == nil && m != nil { - return *m, err - } - } - - if err != nil { - return nil, NewTxIndexingError() // transaction is not fully indexed - } - } + if err != nil { + return nil, NewTxIndexingError() // transaction is not fully indexed } if !found { From d55da97190a476bc3390a2d909f5f452830f6397 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 7 Jan 2025 13:23:33 +0800 Subject: [PATCH 30/30] chore: update ci --- .github/workflows/docker.yml | 2 +- internal/ethapi/api.go | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 5c9e3d775f12..d1574e78046c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: "Push multi-arch docker image to GAR" on: push: - branches: [ taiko, softblock ] + branches: [taiko] tags: - "v*" diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 782a74044f58..8d9d9d1ea0bd 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -657,7 +657,6 @@ func (api *BlockChainAPI) ChainId() *hexutil.Big { // BlockNumber returns the block number of the chain head. func (api *BlockChainAPI) BlockNumber() hexutil.Uint64 { - // CHANGE(taiko): Forward the request to the preconf node if specified. header, _ := api.b.HeaderByNumber(context.Background(), rpc.LatestBlockNumber) // latest header should always be available return hexutil.Uint64(header.Number.Uint64()) } @@ -846,9 +845,8 @@ func (api *BlockChainAPI) GetBlockByNumber(ctx context.Context, number rpc.Block response[field] = nil } } - return response, err + return response, nil } - return nil, err } @@ -1812,7 +1810,6 @@ func (api *TransactionAPI) GetTransactionReceipt(ctx context.Context, hash commo if err != nil { return nil, NewTxIndexingError() // transaction is not fully indexed } - if !found { return nil, nil // transaction is not existent or reachable }