diff --git a/aggregator/aggregator.go b/aggregator/aggregator.go index cfc7910a..c8f56e20 100644 --- a/aggregator/aggregator.go +++ b/aggregator/aggregator.go @@ -2,6 +2,7 @@ package aggregator import ( "context" + "math/big" "sync" "time" @@ -72,11 +73,12 @@ type Aggregator struct { logger logging.Logger serverIpPortAddr string restServerIpPortAddr string + checkpointInterval time.Duration avsWriter chainio.AvsWriterer avsReader chainio.AvsReaderer rollupBroadcaster RollupBroadcasterer + client eth.Client - // aggregation related fields taskBlsAggregationService blsagg.BlsAggregationService stateRootUpdateBlsAggregationService MessageBlsAggregationService operatorSetUpdateBlsAggregationService MessageBlsAggregationService @@ -175,9 +177,11 @@ func NewAggregator(ctx context.Context, config *config.Config, logger logging.Lo logger: logger, serverIpPortAddr: config.AggregatorServerIpPortAddr, restServerIpPortAddr: config.AggregatorRestServerIpPortAddr, + checkpointInterval: config.AggregatorCheckpointInterval, avsWriter: avsWriter, avsReader: avsReader, rollupBroadcaster: rollupBroadcaster, + client: ethHttpClient, taskBlsAggregationService: taskBlsAggregationService, stateRootUpdateBlsAggregationService: stateRootUpdateBlsAggregationService, operatorSetUpdateBlsAggregationService: operatorSetUpdateBlsAggregationService, @@ -198,17 +202,10 @@ func (agg *Aggregator) Start(ctx context.Context) error { agg.logger.Infof("Starting aggregator REST API.") go agg.startRestServer() - // TODO(soubhik): refactor task generation/sending into a separate function that we can run as goroutine - ticker := time.NewTicker(40 * time.Second) - agg.logger.Infof("Aggregator set to send new task every 40 seconds...") + ticker := time.NewTicker(agg.checkpointInterval) + agg.logger.Infof("Aggregator set to send new task every %s...", agg.checkpointInterval.String()) defer ticker.Stop() - // ticker doesn't tick immediately, so we send the first task here - // see https://github.com/golang/go/issues/17601 - - // TODO: make this based on the actual timestamps - timestamp := uint64(0) - broadcasterErrorChan := agg.rollupBroadcaster.GetErrorChan() for { select { @@ -224,10 +221,9 @@ func (agg *Aggregator) Start(ctx context.Context) error { agg.logger.Info("Received response from operatorSetUpdateBlsAggregationService", "blsAggServiceResp", blsAggServiceResp) agg.handleOperatorSetUpdateReachedQuorum(ctx, blsAggServiceResp) case <-ticker.C: - err := agg.sendNewCheckpointTask(timestamp, timestamp) - timestamp++ + err := agg.sendNewCheckpointTask() if err != nil { - // we log the errors inside sendNewCheckpointTask() so here we just continue to the next task + agg.logger.Error("Failed to send new checkpoint task", "err", err) continue } @@ -278,7 +274,32 @@ func (agg *Aggregator) sendAggregatedResponseToContract(blsAggServiceResp blsagg // sendNewCheckpointTask sends a new task to the task manager contract, and updates the Task dict struct // with the information of operators opted into quorum 0 at the block of task creation. -func (agg *Aggregator) sendNewCheckpointTask(fromTimestamp uint64, toTimestamp uint64) error { +func (agg *Aggregator) sendNewCheckpointTask() error { + blockNumber, err := agg.client.BlockNumber(context.Background()) + if err != nil { + agg.logger.Error("Failed to get block number", "err", err) + return err + } + + block, err := agg.client.BlockByNumber(context.Background(), big.NewInt(0).SetUint64(blockNumber)) + if err != nil { + agg.logger.Error("Failed to get block", "err", err) + return err + } + + lastCheckpointToTimestamp, err := agg.avsReader.GetLastCheckpointToTimestamp(context.Background()) + if err != nil { + agg.logger.Error("Failed to get last checkpoint toTimestamp", "err", err) + return err + } + + fromTimestamp := lastCheckpointToTimestamp + 1 + if lastCheckpointToTimestamp == 0 { + fromTimestamp = 0 + } + + toTimestamp := block.Time() + agg.logger.Info("Aggregator sending new task", "fromTimestamp", fromTimestamp, "toTimestamp", toTimestamp) // Send checkpoint to the task manager contract newTask, taskIndex, err := agg.avsWriter.SendNewCheckpointTask(context.Background(), fromTimestamp, toTimestamp, types.QUORUM_THRESHOLD_NUMERATOR, coretypes.QUORUM_NUMBERS) diff --git a/aggregator/aggregator_test.go b/aggregator/aggregator_test.go index 23847785..cddb8fde 100644 --- a/aggregator/aggregator_test.go +++ b/aggregator/aggregator_test.go @@ -6,9 +6,7 @@ import ( "testing" "time" - "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core" "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" @@ -16,6 +14,7 @@ import ( sdklogging "github.com/Layr-Labs/eigensdk-go/logging" blsaggservmock "github.com/Layr-Labs/eigensdk-go/services/mocks/blsagg" sdktypes "github.com/Layr-Labs/eigensdk-go/types" + gethtypes "github.com/ethereum/go-ethereum/core/types" dbmocks "github.com/NethermindEth/near-sffl/aggregator/database/mocks" aggmocks "github.com/NethermindEth/near-sffl/aggregator/mocks" @@ -54,17 +53,24 @@ func TestSendNewTask(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, mockAvsWriterer, mockTaskBlsAggService, _, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, mockAvsReaderer, mockAvsWriterer, mockTaskBlsAggService, _, _, _, _, mockClient, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) var TASK_INDEX = uint32(0) var BLOCK_NUMBER = uint32(100) - var FROM_NEAR_BLOCK = uint64(3) - var TO_NEAR_BLOCK = uint64(4) + var FROM_TIMESTAMP = uint64(3) + var TO_TIMESTAMP = uint64(4) + + mockClient.EXPECT().BlockNumber(context.Background()).Return(uint64(BLOCK_NUMBER), nil) + mockClient.EXPECT().BlockByNumber(context.Background(), big.NewInt(int64(BLOCK_NUMBER))).Return( + gethtypes.NewBlockWithHeader(&gethtypes.Header{Time: TO_TIMESTAMP}), + nil, + ) mockAvsWriterer.EXPECT().SendNewCheckpointTask( - context.Background(), FROM_NEAR_BLOCK, TO_NEAR_BLOCK, types.QUORUM_THRESHOLD_NUMERATOR, coretypes.QUORUM_NUMBERS, - ).Return(aggmocks.MockSendNewCheckpointTask(BLOCK_NUMBER, TASK_INDEX, FROM_NEAR_BLOCK, TO_NEAR_BLOCK)) + context.Background(), FROM_TIMESTAMP, TO_TIMESTAMP, types.QUORUM_THRESHOLD_NUMERATOR, coretypes.QUORUM_NUMBERS, + ).Return(aggmocks.MockSendNewCheckpointTask(BLOCK_NUMBER, TASK_INDEX, FROM_TIMESTAMP, TO_TIMESTAMP)) + mockAvsReaderer.EXPECT().GetLastCheckpointToTimestamp(context.Background()).Return(FROM_TIMESTAMP-1, nil) // 100 blocks, each takes 12 seconds. We hardcode for now since aggregator also hardcodes this value taskTimeToExpiry := 100 * 12 * time.Second @@ -73,7 +79,7 @@ func TestSendNewTask(t *testing.T) { // see https://hynek.me/articles/what-to-mock-in-5-mins/ mockTaskBlsAggService.EXPECT().InitializeNewTask(TASK_INDEX, BLOCK_NUMBER, coretypes.QUORUM_NUMBERS, []uint32{types.QUORUM_THRESHOLD_NUMERATOR}, taskTimeToExpiry) - err = aggregator.sendNewCheckpointTask(FROM_NEAR_BLOCK, TO_NEAR_BLOCK) + err = aggregator.sendNewCheckpointTask() assert.Nil(t, err) } @@ -81,7 +87,7 @@ func TestHandleStateRootUpdateAggregationReachedQuorum(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockMsgDb, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockMsgDb, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) msg := messages.StateRootUpdateMessage{} @@ -110,7 +116,7 @@ func TestHandleOperatorSetUpdateAggregationReachedQuorum(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockMsgDb, mockRollupBroadcaster, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockMsgDb, mockRollupBroadcaster, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) msg := messages.OperatorSetUpdateMessage{} @@ -143,7 +149,7 @@ func TestHandleOperatorSetUpdateAggregationReachedQuorum(t *testing.T) { func createMockAggregator( mockCtrl *gomock.Controller, operatorPubkeyDict map[bls.OperatorId]types.OperatorInfo, -) (*Aggregator, *chainiomocks.MockAvsReaderer, *chainiomocks.MockAvsWriterer, *blsaggservmock.MockBlsAggregationService, *aggmocks.MockMessageBlsAggregationService, *aggmocks.MockMessageBlsAggregationService, *dbmocks.MockDatabaser, *aggmocks.MockRollupBroadcasterer, error) { +) (*Aggregator, *chainiomocks.MockAvsReaderer, *chainiomocks.MockAvsWriterer, *blsaggservmock.MockBlsAggregationService, *aggmocks.MockMessageBlsAggregationService, *aggmocks.MockMessageBlsAggregationService, *dbmocks.MockDatabaser, *aggmocks.MockRollupBroadcasterer, *aggmocks.MockClient, error) { logger := sdklogging.NewNoopLogger() mockAvsWriter := chainiomocks.NewMockAvsWriterer(mockCtrl) mockAvsReader := chainiomocks.NewMockAvsReaderer(mockCtrl) @@ -152,6 +158,7 @@ func createMockAggregator( mockOperatorSetUpdateBlsAggregationService := aggmocks.NewMockMessageBlsAggregationService(mockCtrl) mockMsgDb := dbmocks.NewMockDatabaser(mockCtrl) mockRollupBroadcaster := aggmocks.NewMockRollupBroadcasterer(mockCtrl) + mockClient := aggmocks.NewMockClient(mockCtrl) aggregator := &Aggregator{ logger: logger, @@ -166,15 +173,7 @@ func createMockAggregator( stateRootUpdates: make(map[coretypes.MessageDigest]messages.StateRootUpdateMessage), operatorSetUpdates: make(map[coretypes.MessageDigest]messages.OperatorSetUpdateMessage), rollupBroadcaster: mockRollupBroadcaster, + client: mockClient, } - return aggregator, mockAvsReader, mockAvsWriter, mockTaskBlsAggregationService, mockStateRootUpdateBlsAggregationService, mockOperatorSetUpdateBlsAggregationService, mockMsgDb, mockRollupBroadcaster, nil -} - -// just a mock ethclient to pass to bindings -// so that we can access abi methods -func createMockEthClient() *backends.SimulatedBackend { - genesisAlloc := map[common.Address]gethcore.GenesisAccount{} - blockGasLimit := uint64(1000000) - client := backends.NewSimulatedBackend(genesisAlloc, blockGasLimit) - return client + return aggregator, mockAvsReader, mockAvsWriter, mockTaskBlsAggregationService, mockStateRootUpdateBlsAggregationService, mockOperatorSetUpdateBlsAggregationService, mockMsgDb, mockRollupBroadcaster, mockClient, nil } diff --git a/aggregator/gen.go b/aggregator/gen.go index 9eca13d9..c6efd554 100644 --- a/aggregator/gen.go +++ b/aggregator/gen.go @@ -2,3 +2,4 @@ package aggregator //go:generate mockgen -destination=./mocks/message_blsagg.go -package=mocks github.com/NethermindEth/near-sffl/aggregator MessageBlsAggregationService //go:generate mockgen -destination=./mocks/rollup_broadcaster.go -package=mocks github.com/NethermindEth/near-sffl/aggregator RollupBroadcasterer +//go:generate mockgen -destination=./mocks/eth_client.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/eth Client diff --git a/aggregator/mocks/eth_client.go b/aggregator/mocks/eth_client.go new file mode 100644 index 00000000..e7a5f5d7 --- /dev/null +++ b/aggregator/mocks/eth_client.go @@ -0,0 +1,553 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/Layr-Labs/eigensdk-go/chainio/clients/eth (interfaces: Client) +// +// Generated by this command: +// +// mockgen -destination=./mocks/eth_client.go -package=mocks github.com/Layr-Labs/eigensdk-go/chainio/clients/eth Client +// +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + big "math/big" + reflect "reflect" + + ethereum "github.com/ethereum/go-ethereum" + common "github.com/ethereum/go-ethereum/common" + types "github.com/ethereum/go-ethereum/core/types" + gomock "go.uber.org/mock/gomock" +) + +// MockClient is a mock of Client interface. +type MockClient struct { + ctrl *gomock.Controller + recorder *MockClientMockRecorder +} + +// MockClientMockRecorder is the mock recorder for MockClient. +type MockClientMockRecorder struct { + mock *MockClient +} + +// NewMockClient creates a new mock instance. +func NewMockClient(ctrl *gomock.Controller) *MockClient { + mock := &MockClient{ctrl: ctrl} + mock.recorder = &MockClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockClient) EXPECT() *MockClientMockRecorder { + return m.recorder +} + +// BalanceAt mocks base method. +func (m *MockClient) BalanceAt(arg0 context.Context, arg1 common.Address, arg2 *big.Int) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BalanceAt", arg0, arg1, arg2) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BalanceAt indicates an expected call of BalanceAt. +func (mr *MockClientMockRecorder) BalanceAt(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BalanceAt", reflect.TypeOf((*MockClient)(nil).BalanceAt), arg0, arg1, arg2) +} + +// BlockByHash mocks base method. +func (m *MockClient) BlockByHash(arg0 context.Context, arg1 common.Hash) (*types.Block, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BlockByHash", arg0, arg1) + ret0, _ := ret[0].(*types.Block) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BlockByHash indicates an expected call of BlockByHash. +func (mr *MockClientMockRecorder) BlockByHash(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockByHash", reflect.TypeOf((*MockClient)(nil).BlockByHash), arg0, arg1) +} + +// BlockByNumber mocks base method. +func (m *MockClient) BlockByNumber(arg0 context.Context, arg1 *big.Int) (*types.Block, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BlockByNumber", arg0, arg1) + ret0, _ := ret[0].(*types.Block) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BlockByNumber indicates an expected call of BlockByNumber. +func (mr *MockClientMockRecorder) BlockByNumber(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockByNumber", reflect.TypeOf((*MockClient)(nil).BlockByNumber), arg0, arg1) +} + +// BlockNumber mocks base method. +func (m *MockClient) BlockNumber(arg0 context.Context) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "BlockNumber", arg0) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// BlockNumber indicates an expected call of BlockNumber. +func (mr *MockClientMockRecorder) BlockNumber(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BlockNumber", reflect.TypeOf((*MockClient)(nil).BlockNumber), arg0) +} + +// CallContract mocks base method. +func (m *MockClient) CallContract(arg0 context.Context, arg1 ethereum.CallMsg, arg2 *big.Int) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CallContract", arg0, arg1, arg2) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CallContract indicates an expected call of CallContract. +func (mr *MockClientMockRecorder) CallContract(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallContract", reflect.TypeOf((*MockClient)(nil).CallContract), arg0, arg1, arg2) +} + +// CallContractAtHash mocks base method. +func (m *MockClient) CallContractAtHash(arg0 context.Context, arg1 ethereum.CallMsg, arg2 common.Hash) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CallContractAtHash", arg0, arg1, arg2) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CallContractAtHash indicates an expected call of CallContractAtHash. +func (mr *MockClientMockRecorder) CallContractAtHash(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallContractAtHash", reflect.TypeOf((*MockClient)(nil).CallContractAtHash), arg0, arg1, arg2) +} + +// ChainID mocks base method. +func (m *MockClient) ChainID(arg0 context.Context) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ChainID", arg0) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ChainID indicates an expected call of ChainID. +func (mr *MockClientMockRecorder) ChainID(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ChainID", reflect.TypeOf((*MockClient)(nil).ChainID), arg0) +} + +// CodeAt mocks base method. +func (m *MockClient) CodeAt(arg0 context.Context, arg1 common.Address, arg2 *big.Int) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CodeAt", arg0, arg1, arg2) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CodeAt indicates an expected call of CodeAt. +func (mr *MockClientMockRecorder) CodeAt(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CodeAt", reflect.TypeOf((*MockClient)(nil).CodeAt), arg0, arg1, arg2) +} + +// EstimateGas mocks base method. +func (m *MockClient) EstimateGas(arg0 context.Context, arg1 ethereum.CallMsg) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "EstimateGas", arg0, arg1) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EstimateGas indicates an expected call of EstimateGas. +func (mr *MockClientMockRecorder) EstimateGas(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimateGas", reflect.TypeOf((*MockClient)(nil).EstimateGas), arg0, arg1) +} + +// FeeHistory mocks base method. +func (m *MockClient) FeeHistory(arg0 context.Context, arg1 uint64, arg2 *big.Int, arg3 []float64) (*ethereum.FeeHistory, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FeeHistory", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(*ethereum.FeeHistory) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FeeHistory indicates an expected call of FeeHistory. +func (mr *MockClientMockRecorder) FeeHistory(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FeeHistory", reflect.TypeOf((*MockClient)(nil).FeeHistory), arg0, arg1, arg2, arg3) +} + +// FilterLogs mocks base method. +func (m *MockClient) FilterLogs(arg0 context.Context, arg1 ethereum.FilterQuery) ([]types.Log, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FilterLogs", arg0, arg1) + ret0, _ := ret[0].([]types.Log) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// FilterLogs indicates an expected call of FilterLogs. +func (mr *MockClientMockRecorder) FilterLogs(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterLogs", reflect.TypeOf((*MockClient)(nil).FilterLogs), arg0, arg1) +} + +// HeaderByHash mocks base method. +func (m *MockClient) HeaderByHash(arg0 context.Context, arg1 common.Hash) (*types.Header, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HeaderByHash", arg0, arg1) + ret0, _ := ret[0].(*types.Header) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// HeaderByHash indicates an expected call of HeaderByHash. +func (mr *MockClientMockRecorder) HeaderByHash(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HeaderByHash", reflect.TypeOf((*MockClient)(nil).HeaderByHash), arg0, arg1) +} + +// HeaderByNumber mocks base method. +func (m *MockClient) HeaderByNumber(arg0 context.Context, arg1 *big.Int) (*types.Header, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "HeaderByNumber", arg0, arg1) + ret0, _ := ret[0].(*types.Header) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// HeaderByNumber indicates an expected call of HeaderByNumber. +func (mr *MockClientMockRecorder) HeaderByNumber(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "HeaderByNumber", reflect.TypeOf((*MockClient)(nil).HeaderByNumber), arg0, arg1) +} + +// NetworkID mocks base method. +func (m *MockClient) NetworkID(arg0 context.Context) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NetworkID", arg0) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NetworkID indicates an expected call of NetworkID. +func (mr *MockClientMockRecorder) NetworkID(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NetworkID", reflect.TypeOf((*MockClient)(nil).NetworkID), arg0) +} + +// NonceAt mocks base method. +func (m *MockClient) NonceAt(arg0 context.Context, arg1 common.Address, arg2 *big.Int) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "NonceAt", arg0, arg1, arg2) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// NonceAt indicates an expected call of NonceAt. +func (mr *MockClientMockRecorder) NonceAt(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NonceAt", reflect.TypeOf((*MockClient)(nil).NonceAt), arg0, arg1, arg2) +} + +// PeerCount mocks base method. +func (m *MockClient) PeerCount(arg0 context.Context) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PeerCount", arg0) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PeerCount indicates an expected call of PeerCount. +func (mr *MockClientMockRecorder) PeerCount(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PeerCount", reflect.TypeOf((*MockClient)(nil).PeerCount), arg0) +} + +// PendingBalanceAt mocks base method. +func (m *MockClient) PendingBalanceAt(arg0 context.Context, arg1 common.Address) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingBalanceAt", arg0, arg1) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingBalanceAt indicates an expected call of PendingBalanceAt. +func (mr *MockClientMockRecorder) PendingBalanceAt(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingBalanceAt", reflect.TypeOf((*MockClient)(nil).PendingBalanceAt), arg0, arg1) +} + +// PendingCallContract mocks base method. +func (m *MockClient) PendingCallContract(arg0 context.Context, arg1 ethereum.CallMsg) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingCallContract", arg0, arg1) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingCallContract indicates an expected call of PendingCallContract. +func (mr *MockClientMockRecorder) PendingCallContract(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingCallContract", reflect.TypeOf((*MockClient)(nil).PendingCallContract), arg0, arg1) +} + +// PendingCodeAt mocks base method. +func (m *MockClient) PendingCodeAt(arg0 context.Context, arg1 common.Address) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingCodeAt", arg0, arg1) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingCodeAt indicates an expected call of PendingCodeAt. +func (mr *MockClientMockRecorder) PendingCodeAt(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingCodeAt", reflect.TypeOf((*MockClient)(nil).PendingCodeAt), arg0, arg1) +} + +// PendingNonceAt mocks base method. +func (m *MockClient) PendingNonceAt(arg0 context.Context, arg1 common.Address) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingNonceAt", arg0, arg1) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingNonceAt indicates an expected call of PendingNonceAt. +func (mr *MockClientMockRecorder) PendingNonceAt(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingNonceAt", reflect.TypeOf((*MockClient)(nil).PendingNonceAt), arg0, arg1) +} + +// PendingStorageAt mocks base method. +func (m *MockClient) PendingStorageAt(arg0 context.Context, arg1 common.Address, arg2 common.Hash) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingStorageAt", arg0, arg1, arg2) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingStorageAt indicates an expected call of PendingStorageAt. +func (mr *MockClientMockRecorder) PendingStorageAt(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingStorageAt", reflect.TypeOf((*MockClient)(nil).PendingStorageAt), arg0, arg1, arg2) +} + +// PendingTransactionCount mocks base method. +func (m *MockClient) PendingTransactionCount(arg0 context.Context) (uint, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "PendingTransactionCount", arg0) + ret0, _ := ret[0].(uint) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PendingTransactionCount indicates an expected call of PendingTransactionCount. +func (mr *MockClientMockRecorder) PendingTransactionCount(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingTransactionCount", reflect.TypeOf((*MockClient)(nil).PendingTransactionCount), arg0) +} + +// SendTransaction mocks base method. +func (m *MockClient) SendTransaction(arg0 context.Context, arg1 *types.Transaction) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SendTransaction", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// SendTransaction indicates an expected call of SendTransaction. +func (mr *MockClientMockRecorder) SendTransaction(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendTransaction", reflect.TypeOf((*MockClient)(nil).SendTransaction), arg0, arg1) +} + +// StorageAt mocks base method. +func (m *MockClient) StorageAt(arg0 context.Context, arg1 common.Address, arg2 common.Hash, arg3 *big.Int) ([]byte, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "StorageAt", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].([]byte) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// StorageAt indicates an expected call of StorageAt. +func (mr *MockClientMockRecorder) StorageAt(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "StorageAt", reflect.TypeOf((*MockClient)(nil).StorageAt), arg0, arg1, arg2, arg3) +} + +// SubscribeFilterLogs mocks base method. +func (m *MockClient) SubscribeFilterLogs(arg0 context.Context, arg1 ethereum.FilterQuery, arg2 chan<- types.Log) (ethereum.Subscription, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SubscribeFilterLogs", arg0, arg1, arg2) + ret0, _ := ret[0].(ethereum.Subscription) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SubscribeFilterLogs indicates an expected call of SubscribeFilterLogs. +func (mr *MockClientMockRecorder) SubscribeFilterLogs(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubscribeFilterLogs", reflect.TypeOf((*MockClient)(nil).SubscribeFilterLogs), arg0, arg1, arg2) +} + +// SubscribeNewHead mocks base method. +func (m *MockClient) SubscribeNewHead(arg0 context.Context, arg1 chan<- *types.Header) (ethereum.Subscription, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SubscribeNewHead", arg0, arg1) + ret0, _ := ret[0].(ethereum.Subscription) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SubscribeNewHead indicates an expected call of SubscribeNewHead. +func (mr *MockClientMockRecorder) SubscribeNewHead(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubscribeNewHead", reflect.TypeOf((*MockClient)(nil).SubscribeNewHead), arg0, arg1) +} + +// SuggestGasPrice mocks base method. +func (m *MockClient) SuggestGasPrice(arg0 context.Context) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SuggestGasPrice", arg0) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SuggestGasPrice indicates an expected call of SuggestGasPrice. +func (mr *MockClientMockRecorder) SuggestGasPrice(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SuggestGasPrice", reflect.TypeOf((*MockClient)(nil).SuggestGasPrice), arg0) +} + +// SuggestGasTipCap mocks base method. +func (m *MockClient) SuggestGasTipCap(arg0 context.Context) (*big.Int, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SuggestGasTipCap", arg0) + ret0, _ := ret[0].(*big.Int) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SuggestGasTipCap indicates an expected call of SuggestGasTipCap. +func (mr *MockClientMockRecorder) SuggestGasTipCap(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SuggestGasTipCap", reflect.TypeOf((*MockClient)(nil).SuggestGasTipCap), arg0) +} + +// SyncProgress mocks base method. +func (m *MockClient) SyncProgress(arg0 context.Context) (*ethereum.SyncProgress, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "SyncProgress", arg0) + ret0, _ := ret[0].(*ethereum.SyncProgress) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SyncProgress indicates an expected call of SyncProgress. +func (mr *MockClientMockRecorder) SyncProgress(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SyncProgress", reflect.TypeOf((*MockClient)(nil).SyncProgress), arg0) +} + +// TransactionByHash mocks base method. +func (m *MockClient) TransactionByHash(arg0 context.Context, arg1 common.Hash) (*types.Transaction, bool, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TransactionByHash", arg0, arg1) + ret0, _ := ret[0].(*types.Transaction) + ret1, _ := ret[1].(bool) + ret2, _ := ret[2].(error) + return ret0, ret1, ret2 +} + +// TransactionByHash indicates an expected call of TransactionByHash. +func (mr *MockClientMockRecorder) TransactionByHash(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransactionByHash", reflect.TypeOf((*MockClient)(nil).TransactionByHash), arg0, arg1) +} + +// TransactionCount mocks base method. +func (m *MockClient) TransactionCount(arg0 context.Context, arg1 common.Hash) (uint, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TransactionCount", arg0, arg1) + ret0, _ := ret[0].(uint) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// TransactionCount indicates an expected call of TransactionCount. +func (mr *MockClientMockRecorder) TransactionCount(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransactionCount", reflect.TypeOf((*MockClient)(nil).TransactionCount), arg0, arg1) +} + +// TransactionInBlock mocks base method. +func (m *MockClient) TransactionInBlock(arg0 context.Context, arg1 common.Hash, arg2 uint) (*types.Transaction, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TransactionInBlock", arg0, arg1, arg2) + ret0, _ := ret[0].(*types.Transaction) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// TransactionInBlock indicates an expected call of TransactionInBlock. +func (mr *MockClientMockRecorder) TransactionInBlock(arg0, arg1, arg2 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransactionInBlock", reflect.TypeOf((*MockClient)(nil).TransactionInBlock), arg0, arg1, arg2) +} + +// TransactionReceipt mocks base method. +func (m *MockClient) TransactionReceipt(arg0 context.Context, arg1 common.Hash) (*types.Receipt, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TransactionReceipt", arg0, arg1) + ret0, _ := ret[0].(*types.Receipt) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// TransactionReceipt indicates an expected call of TransactionReceipt. +func (mr *MockClientMockRecorder) TransactionReceipt(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransactionReceipt", reflect.TypeOf((*MockClient)(nil).TransactionReceipt), arg0, arg1) +} + +// TransactionSender mocks base method. +func (m *MockClient) TransactionSender(arg0 context.Context, arg1 *types.Transaction, arg2 common.Hash, arg3 uint) (common.Address, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "TransactionSender", arg0, arg1, arg2, arg3) + ret0, _ := ret[0].(common.Address) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// TransactionSender indicates an expected call of TransactionSender. +func (mr *MockClientMockRecorder) TransactionSender(arg0, arg1, arg2, arg3 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TransactionSender", reflect.TypeOf((*MockClient)(nil).TransactionSender), arg0, arg1, arg2, arg3) +} diff --git a/aggregator/rest_server_test.go b/aggregator/rest_server_test.go index de28c270..606ce7cc 100644 --- a/aggregator/rest_server_test.go +++ b/aggregator/rest_server_test.go @@ -18,7 +18,7 @@ func TestGetStateRootUpdateAggregation(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockDb, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockDb, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) go aggregator.startRestServer() @@ -77,7 +77,7 @@ func TestGetOperatorSetUpdateAggregation(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockDb, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockDb, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) go aggregator.startRestServer() @@ -130,7 +130,7 @@ func TestGetCheckpointMessages(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockDb, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockDb, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) go aggregator.startRestServer() diff --git a/aggregator/rpc_server_test.go b/aggregator/rpc_server_test.go index 2831aaa5..e5c1441f 100644 --- a/aggregator/rpc_server_test.go +++ b/aggregator/rpc_server_test.go @@ -26,7 +26,7 @@ func TestProcessSignedCheckpointTaskResponse(t *testing.T) { var FROM_NEAR_BLOCK = uint64(3) var TO_NEAR_BLOCK = uint64(4) - aggregator, _, _, mockBlsAggServ, _, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, mockBlsAggServ, _, _, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) signedCheckpointTaskResponse, err := createMockSignedCheckpointTaskResponse(MockTask{ @@ -52,7 +52,7 @@ func TestProcessSignedStateRootUpdateMessage(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, mockMessageBlsAggServ, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, mockMessageBlsAggServ, _, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) message := messages.StateRootUpdateMessage{ @@ -80,7 +80,7 @@ func TestProcessOperatorSetUpdateMessage(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, mockAvsReader, _, _, _, mockMessageBlsAggServ, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, mockAvsReader, _, _, _, mockMessageBlsAggServ, _, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) message := messages.OperatorSetUpdateMessage{ @@ -109,7 +109,7 @@ func TestGetAggregatedCheckpointMessages(t *testing.T) { mockCtrl := gomock.NewController(t) defer mockCtrl.Finish() - aggregator, _, _, _, _, _, mockDb, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) + aggregator, _, _, _, _, _, mockDb, _, _, err := createMockAggregator(mockCtrl, MOCK_OPERATOR_PUBKEY_DICT) assert.Nil(t, err) var checkpointMessages messages.CheckpointMessages diff --git a/config-files/aggregator-docker-compose.yaml b/config-files/aggregator-docker-compose.yaml index f4043970..8b842e2f 100644 --- a/config-files/aggregator-docker-compose.yaml +++ b/config-files/aggregator-docker-compose.yaml @@ -6,6 +6,7 @@ eth_ws_url: ws://mainnet-anvil:8545 aggregator_server_ip_port_address: 0.0.0.0:8090 aggregator_rest_server_ip_port_address: localhost:5001 aggregator_database_path: "" +aggregator_checkpoint_interval: 40000 # ms rollup_ids_to_rpc_urls: 2: ws://rollup0-anvil:8546 3: ws://rollup1-anvil:8547 diff --git a/config-files/aggregator.yaml b/config-files/aggregator.yaml index 3afd4f5c..597d9eb2 100644 --- a/config-files/aggregator.yaml +++ b/config-files/aggregator.yaml @@ -6,5 +6,6 @@ eth_ws_url: ws://localhost:8545 aggregator_server_ip_port_address: localhost:8090 aggregator_rest_server_ip_port_address: localhost:5001 aggregator_database_path: ./aggregator.db +aggregator_checkpoint_interval: 40000 # ms rollup_ids_to_rpc_urls: 2: ws://localhost:8546 diff --git a/config-files/operator.anvil.yaml b/config-files/operator.anvil.yaml index f1c292a6..afd4dc9c 100644 --- a/config-files/operator.anvil.yaml +++ b/config-files/operator.anvil.yaml @@ -9,7 +9,7 @@ operator_address: 0x0000000000000000000000000000000000000000 # The saved eigenlayer state is located in tests/anvil/data/sffl_avs_deployment_output.json # TODO(samlaf): automate updating these addresses when we deploy new contracts avs_registry_coordinator_address: 0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf -operator_state_retriever_address: 0x0E801D84Fa97b50751Dbf25036d067dCf18858bF +operator_state_retriever_address: 0x4c5859f0F772848b2D91F1D83E2Fe57935348029 # ETH RPC URL eth_rpc_url: http://localhost:8545 diff --git a/config-files/operator0-docker-compose.anvil.yaml b/config-files/operator0-docker-compose.anvil.yaml index b16f6ffb..623c8e23 100644 --- a/config-files/operator0-docker-compose.anvil.yaml +++ b/config-files/operator0-docker-compose.anvil.yaml @@ -8,7 +8,7 @@ operator_address: 0xD5A0359da7B310917d7760385516B2426E86ab7f # This is the address of the slasher which is deployed in the anvil saved state # The saved eigenlayer state is located in tests/anvil/data/eigenlayer-deployed-anvil-state.json avs_registry_coordinator_address: 0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf -operator_state_retriever_address: 0x0E801D84Fa97b50751Dbf25036d067dCf18858bF +operator_state_retriever_address: 0x4c5859f0F772848b2D91F1D83E2Fe57935348029 # ETH RPC URL eth_rpc_url: http://mainnet-anvil:8545 diff --git a/config-files/operator1-docker-compose.anvil.yaml b/config-files/operator1-docker-compose.anvil.yaml index b069e09b..e3ed99cb 100644 --- a/config-files/operator1-docker-compose.anvil.yaml +++ b/config-files/operator1-docker-compose.anvil.yaml @@ -8,7 +8,7 @@ operator_address: 0x9441540E8183d416f2Dc1901AB2034600f17B65a # This is the address of the slasher which is deployed in the anvil saved state # The saved eigenlayer state is located in tests/anvil/data/eigenlayer-deployed-anvil-state.json avs_registry_coordinator_address: 0x8f86403A4DE0BB5791fa46B8e795C547942fE4Cf -operator_state_retriever_address: 0x0E801D84Fa97b50751Dbf25036d067dCf18858bF +operator_state_retriever_address: 0x4c5859f0F772848b2D91F1D83E2Fe57935348029 # ETH RPC URL eth_rpc_url: http://mainnet-anvil:8545 diff --git a/contracts/bindings/ERC20Mock/binding.go b/contracts/bindings/ERC20Mock/binding.go index 8b670a65..081cc861 100644 --- a/contracts/bindings/ERC20Mock/binding.go +++ b/contracts/bindings/ERC20Mock/binding.go @@ -32,7 +32,7 @@ var ( // ContractERC20MockMetaData contains all meta data concerning the ContractERC20Mock contract. var ContractERC20MockMetaData = &bind.MetaData{ ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100d257806370a08231146100e7578063a9059cbb14610110578063dd62ed3e1461012357600080fd5b8063095ea7b31461008257806318160ddd146100ad57806323b872dd146100bf575b600080fd5b610098610090366004610410565b600192915050565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a4565b6100986100cd36600461043a565b61015c565b6100e56100e0366004610410565b610173565b005b6100b16100f5366004610476565b6001600160a01b031660009081526020819052604090205490565b61009861011e366004610410565b610181565b6100b1610131366004610498565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061016984848461018b565b5060019392505050565b61017d8282610335565b5050565b6000336101698185855b6001600160a01b0383166101f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101eb565b6001600160a01b0383166000908152602081905260409020548111156102cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101eb565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661038b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101eb565b806002600082825461039d91906104cb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461040b57600080fd5b919050565b6000806040838503121561042357600080fd5b61042c836103f4565b946020939093013593505050565b60008060006060848603121561044f57600080fd5b610458846103f4565b9250610466602085016103f4565b9150604084013590509250925092565b60006020828403121561048857600080fd5b610491826103f4565b9392505050565b600080604083850312156104ab57600080fd5b6104b4836103f4565b91506104c2602084016103f4565b90509250929050565b600082198211156104ec57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220cec8521b22478e97287133403b0757907f123f4ae3de11eb0e0148ef77cc3e6164736f6c634300080c0033", + Bin: "0x608060405234801561001057600080fd5b50610517806100206000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c8063095ea7b31461007257806318160ddd1461009d57806323b872dd146100af57806340c10f19146100c257806370a08231146100d7578063a9059cbb14610100578063dd62ed3e14610113575b600080fd5b610088610080366004610400565b600192915050565b60405190151581526020015b60405180910390f35b6002545b604051908152602001610094565b6100886100bd36600461042a565b61014c565b6100d56100d0366004610400565b610163565b005b6100a16100e5366004610466565b6001600160a01b031660009081526020819052604090205490565b61008861010e366004610400565b610171565b6100a1610121366004610488565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061015984848461017b565b5060019392505050565b61016d8282610325565b5050565b6000336101598185855b6001600160a01b0383166101e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101db565b6001600160a01b0383166000908152602081905260409020548111156102bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101db565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661037b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101db565b806002600082825461038d91906104bb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b03811681146103fb57600080fd5b919050565b6000806040838503121561041357600080fd5b61041c836103e4565b946020939093013593505050565b60008060006060848603121561043f57600080fd5b610448846103e4565b9250610456602085016103e4565b9150604084013590509250925092565b60006020828403121561047857600080fd5b610481826103e4565b9392505050565b6000806040838503121561049b57600080fd5b6104a4836103e4565b91506104b2602084016103e4565b90509250929050565b600082198211156104dc57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7869d1b65a81f40da4e99688a39ee120b01ef93e81e865bb196d1a6f125866c64736f6c634300080c0033", } // ContractERC20MockABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLOperatorSetUpdateRegistry/binding.go b/contracts/bindings/SFFLOperatorSetUpdateRegistry/binding.go index 1c031af6..5b413c8f 100644 --- a/contracts/bindings/SFFLOperatorSetUpdateRegistry/binding.go +++ b/contracts/bindings/SFFLOperatorSetUpdateRegistry/binding.go @@ -43,8 +43,8 @@ type RollupOperatorsOperator struct { // ContractSFFLOperatorSetUpdateRegistryMetaData contains all meta data concerning the ContractSFFLOperatorSetUpdateRegistry contract. var ContractSFFLOperatorSetUpdateRegistryMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractSFFLRegistryCoordinator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorSetUpdate\",\"inputs\":[{\"name\":\"operatorSetUpdateId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"previousOperatorSet\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]},{\"name\":\"newOperatorSet\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetUpdateCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorWhitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetUpdateIdToBlockNumber\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordOperatorSetUpdate\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSFFLRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setOperatorWhitelisting\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isWhitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetUpdatedAtBlock\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorWhitelistingUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isWhitelisted\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", - Bin: "0x60a060405234801561001057600080fd5b50604051610f31380380610f3183398101604081905261002f9161010a565b6001600160a01b03811660805261004461004a565b5061013a565b600054610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610108576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011c57600080fd5b81516001600160a01b038116811461013357600080fd5b9392505050565b608051610dba6101776000396000818160f9015281816101850152818161020b01528181610291015281816103a6015261058a0152610dba6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636d14a9871161005b5780636d14a987146100f457806389a652ce14610133578063af99fa0e1461014e578063bfe107381461017657600080fd5b8063046a0654146100825780630ca192c7146100ac5780632e8da829146100c1575b600080fd5b610095610090366004610a36565b61017e565b6040516100a3929190610abf565b60405180910390f35b6100bf6100ba366004610b05565b6103a4565b005b6100e46100cf366004610b43565b60026020526000908152604090205460ff1681565b60405190151581526020016100a3565b61011b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a3565b6001546040516001600160401b0390911681526020016100a3565b61016161015c366004610b60565b610545565b60405163ffffffff90911681526020016100a3565b6100bf61057f565b60608060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102059190610b79565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028b9190610b79565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190610b79565b90506001600160401b0386161561037b5761037860016103318189610bac565b6001600160401b03168154811061034a5761034a610bd4565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1684848461074a565b94505b61039a6001876001600160401b03168154811061034a5761034a610bd4565b9350505050915091565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610402573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104269190610b79565b6001600160a01b0316336001600160a01b0316146104e65760405162461bcd60e51b815260206004820152606660248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c79436f6f7264696e61746f724f776e65723a2063616c6c6572206973206e6f60648201527f7420746865206f776e6572206f6620746865207265676973747279436f6f726460848201526534b730ba37b960d11b60a482015260c4015b60405180910390fd5b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591519182527f2b83db0a8941bdf64ef44d95a1a397fdbcb6fd1b93ed421b73d00ddcecf5c793910160405180910390a25050565b6001818154811061055557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106435760405162461bcd60e51b815260206004820152605d60248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c795265676973747279436f6f7264696e61746f723a2063616c6c657220697360648201527f206e6f742074686520726567697374727920636f6f7264696e61746f72000000608482015260a4016104dd565b6001546001600160401b038116158015906106a557504360016106668184610bac565b6001600160401b03168154811061067f5761067f610bd4565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16145b156106ad5750565b426001600160401b0316816001600160401b03167fc48e61b12810d368042f781cfb732d0abb725377d90b600f78e0cec7dbd0c28d60405160405180910390a3506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008820401805460079092166004026101000a63ffffffff818102199093164390931602919091179055565b604051638902624560e01b815260006004820181905263ffffffff861660248301526060916001600160a01b03851690638902624590604401600060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107c89190810190610c30565b9050600081516001600160401b038111156107e5576107e5610bea565b60405190808252806020026020018201604052801561083957816020015b60408051608081018252600091810182815260608201839052815260208101919091528152602001906001900390816108035790505b50905060005b8251811015610a2b57600083828151811061085c5761085c610bd4565b602002602001015190506000866001600160a01b03166347b314e8836040518263ffffffff1660e01b815260040161089691815260200190565b602060405180830381865afa1580156108b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d79190610b79565b604051637ff81a8760e01b81526001600160a01b038083166004830152919250600091891690637ff81a8790602401606060405180830381865afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109479190610cd5565b5060405163fa28c62760e01b81526004810185905260006024820181905263ffffffff8e1660448301529192506001600160a01b038c169063fa28c62790606401602060405180830381865afa1580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190610d3b565b90506040518060400160405280838152602001826bffffffffffffffffffffffff166001600160801b0316815250868681518110610a0957610a09610bd4565b6020026020010181905250505050508080610a2390610d69565b91505061083f565b509695505050505050565b600060208284031215610a4857600080fd5b81356001600160401b0381168114610a5f57600080fd5b9392505050565b600081518084526020808501945080840160005b83811015610ab4578151805180518952840151848901528301516001600160801b0316604088015260609096019590820190600101610a7a565b509495945050505050565b604081526000610ad26040830185610a66565b8281036020840152610ae48185610a66565b95945050505050565b6001600160a01b0381168114610b0257600080fd5b50565b60008060408385031215610b1857600080fd5b8235610b2381610aed565b915060208301358015158114610b3857600080fd5b809150509250929050565b600060208284031215610b5557600080fd5b8135610a5f81610aed565b600060208284031215610b7257600080fd5b5035919050565b600060208284031215610b8b57600080fd5b8151610a5f81610aed565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0383811690831681811015610bcc57610bcc610b96565b039392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c2857610c28610bea565b604052919050565b60006020808385031215610c4357600080fd5b82516001600160401b0380821115610c5a57600080fd5b818501915085601f830112610c6e57600080fd5b815181811115610c8057610c80610bea565b8060051b9150610c91848301610c00565b8181529183018401918481019088841115610cab57600080fd5b938501935b83851015610cc957845182529385019390850190610cb0565b98975050505050505050565b6000808284036060811215610ce957600080fd5b6040811215610cf757600080fd5b50604051604081018181106001600160401b0382111715610d1a57610d1a610bea565b60409081528451825260208086015190830152939093015192949293505050565b600060208284031215610d4d57600080fd5b81516bffffffffffffffffffffffff81168114610a5f57600080fd5b6000600019821415610d7d57610d7d610b96565b506001019056fea2646970667358221220efd8448611a1f0f6a0564eead8267a3632368d2c8e1d4610fb62d46fc1f2e85f64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorSetUpdate\",\"inputs\":[{\"name\":\"operatorSetUpdateId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"previousOperatorSet\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]},{\"name\":\"newOperatorSet\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetUpdateCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isOperatorWhitelisted\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetUpdateIdToBlockNumber\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"recordOperatorSetUpdate\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setOperatorWhitelisting\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"isWhitelisted\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetUpdatedAtBlock\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorWhitelistingUpdated\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"isWhitelisted\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false}]", + Bin: "0x60a060405234801561001057600080fd5b50604051610f17380380610f1783398101604081905261002f9161010a565b6001600160a01b03811660805261004461004a565b5061013a565b600054610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015610108576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60006020828403121561011c57600080fd5b81516001600160a01b038116811461013357600080fd5b9392505050565b608051610da06101776000396000818160e901528181610175015281816101fb0152818161028101528181610396015261057a0152610da06000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c8063046a0654146100725780630ca192c71461009c5780632e8da829146100b15780636d14a987146100e457806389a652ce14610123578063af99fa0e1461013e578063bfe1073814610166575b600080fd5b610085610080366004610a21565b61016e565b604051610093929190610aaa565b60405180910390f35b6100af6100aa366004610af0565b610394565b005b6100d46100bf366004610b2e565b60026020526000908152604090205460ff1681565b6040519015158152602001610093565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610093565b6001546040516001600160401b039091168152602001610093565b61015161014c366004610b4b565b610535565b60405163ffffffff9091168152602001610093565b6100af61056f565b60608060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610b64565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027b9190610b64565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190610b64565b90506001600160401b0386161561036b5761036860016103218189610b97565b6001600160401b03168154811061033a5761033a610bbf565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1684848461073a565b94505b61038a6001876001600160401b03168154811061033a5761033a610bbf565b9350505050915091565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104169190610b64565b6001600160a01b0316336001600160a01b0316146104d65760405162461bcd60e51b815260206004820152606660248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c79436f6f7264696e61746f724f776e65723a2063616c6c6572206973206e6f60648201527f7420746865206f776e6572206f6620746865207265676973747279436f6f726460848201526534b730ba37b960d11b60a482015260c4015b60405180910390fd5b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591519182527f2b83db0a8941bdf64ef44d95a1a397fdbcb6fd1b93ed421b73d00ddcecf5c793910160405180910390a25050565b6001818154811061054557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106335760405162461bcd60e51b815260206004820152605d60248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c795265676973747279436f6f7264696e61746f723a2063616c6c657220697360648201527f206e6f742074686520726567697374727920636f6f7264696e61746f72000000608482015260a4016104cd565b6001546001600160401b0381161580159061069557504360016106568184610b97565b6001600160401b03168154811061066f5761066f610bbf565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16145b1561069d5750565b426001600160401b0316816001600160401b03167fc48e61b12810d368042f781cfb732d0abb725377d90b600f78e0cec7dbd0c28d60405160405180910390a3506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008820401805460079092166004026101000a63ffffffff818102199093164390931602919091179055565b604051638902624560e01b815260006004820181905263ffffffff861660248301526060916001600160a01b03851690638902624590604401600060405180830381865afa158015610790573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b89190810190610c1b565b9050600081516001600160401b038111156107d5576107d5610bd5565b60405190808252806020026020018201604052801561082957816020015b60408051608081018252600091810182815260608201839052815260208101919091528152602001906001900390816107f35790505b50905060005b8251811015610a1657600083828151811061084c5761084c610bbf565b602002602001015190506000866001600160a01b03166347b314e8836040518263ffffffff1660e01b815260040161088691815260200190565b602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190610b64565b604051637ff81a8760e01b81526001600160a01b038083166004830152919250600091891690637ff81a8790602401606060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190610cc0565b5060405163fa28c62760e01b81526004810185905260006024820181905263ffffffff8e1660448301529192506001600160a01b038c169063fa28c62790606401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190610d26565b90506040518060400160405280838152602001826001600160601b03166001600160801b03168152508686815181106109f4576109f4610bbf565b6020026020010181905250505050508080610a0e90610d4f565b91505061082f565b509695505050505050565b600060208284031215610a3357600080fd5b81356001600160401b0381168114610a4a57600080fd5b9392505050565b600081518084526020808501945080840160005b83811015610a9f578151805180518952840151848901528301516001600160801b0316604088015260609096019590820190600101610a65565b509495945050505050565b604081526000610abd6040830185610a51565b8281036020840152610acf8185610a51565b95945050505050565b6001600160a01b0381168114610aed57600080fd5b50565b60008060408385031215610b0357600080fd5b8235610b0e81610ad8565b915060208301358015158114610b2357600080fd5b809150509250929050565b600060208284031215610b4057600080fd5b8135610a4a81610ad8565b600060208284031215610b5d57600080fd5b5035919050565b600060208284031215610b7657600080fd5b8151610a4a81610ad8565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0383811690831681811015610bb757610bb7610b81565b039392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c1357610c13610bd5565b604052919050565b60006020808385031215610c2e57600080fd5b82516001600160401b0380821115610c4557600080fd5b818501915085601f830112610c5957600080fd5b815181811115610c6b57610c6b610bd5565b8060051b9150610c7c848301610beb565b8181529183018401918481019088841115610c9657600080fd5b938501935b83851015610cb457845182529385019390850190610c9b565b98975050505050505050565b6000808284036060811215610cd457600080fd5b6040811215610ce257600080fd5b50604051604081018181106001600160401b0382111715610d0557610d05610bd5565b60409081528451825260208086015190830152939093015192949293505050565b600060208284031215610d3857600080fd5b81516001600160601b0381168114610a4a57600080fd5b6000600019821415610d6357610d63610b81565b506001019056fea2646970667358221220c83f0a5dd73f6b3f404f29c9e8cf82d0c35e2eecbc2a5c48bee1657e98a06e1964736f6c634300080c0033", } // ContractSFFLOperatorSetUpdateRegistryABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLRegistryCoordinator/binding.go b/contracts/bindings/SFFLRegistryCoordinator/binding.go index 274577d9..d8da5a69 100644 --- a/contracts/bindings/SFFLRegistryCoordinator/binding.go +++ b/contracts/bindings/SFFLRegistryCoordinator/binding.go @@ -90,7 +90,7 @@ type IStakeRegistryStrategyParams struct { // ContractSFFLRegistryCoordinatorMetaData contains all meta data concerning the ContractSFFLRegistryCoordinator contract. var ContractSFFLRegistryCoordinatorMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_serviceManager\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_blsApkRegistry\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"},{\"name\":\"_indexRegistry\",\"type\":\"address\",\"internalType\":\"contractIIndexRegistry\"},{\"name\":\"_operatorSetUpdateRegistry\",\"type\":\"address\",\"internalType\":\"contractSFFLOperatorSetUpdateRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"OPERATOR_CHURN_APPROVAL_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PUBKEY_REGISTRATION_TYPEHASH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"calculateOperatorChurnApprovalDigestHash\",\"inputs\":[{\"name\":\"registeringOperatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorKickParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorKickParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"churnApprover\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createQuorum\",\"inputs\":[{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"name\":\"minimumStake\",\"type\":\"uint96\",\"internalType\":\"uint96\"},{\"name\":\"strategyParams\",\"type\":\"tuple[]\",\"internalType\":\"structIStakeRegistry.StrategyParams[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperator\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ejectOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ejector\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCurrentQuorumBitmap\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperator\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorInfo\",\"components\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumIRegistryCoordinator.OperatorStatus\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorFromId\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorId\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorSetParams\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorStatus\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumIRegistryCoordinator.OperatorStatus\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapAtBlockNumberByIndex\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint192\",\"internalType\":\"uint192\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapHistoryLength\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapIndicesAtBlockNumber\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapUpdateByIndex\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.QuorumBitmapUpdate\",\"components\":[{\"name\":\"updateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nextUpdateBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBitmap\",\"type\":\"uint192\",\"internalType\":\"uint192\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"indexRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIIndexRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_churnApprover\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_ejector\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_operatorSetParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam[]\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]},{\"name\":\"_minimumStakes\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"_strategyParams\",\"type\":\"tuple[][]\",\"internalType\":\"structIStakeRegistry.StrategyParams[][]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isChurnApproverSaltUsed\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"numRegistries\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"operatorSetUpdateRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSFFLOperatorSetUpdateRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pubkeyRegistrationMessageHash\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumCount\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumUpdateBlockNumber\",\"inputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperator\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.PubkeyRegistrationParams\",\"components\":[{\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}]},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperatorWithChurn\",\"inputs\":[{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSApkRegistry.PubkeyRegistrationParams\",\"components\":[{\"name\":\"pubkeyRegistrationSignature\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG1\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"pubkeyG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]}]},{\"name\":\"operatorKickParams\",\"type\":\"tuple[]\",\"internalType\":\"structIRegistryCoordinator.OperatorKickParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"name\":\"churnApproverSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registries\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"serviceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setChurnApprover\",\"inputs\":[{\"name\":\"_churnApprover\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setEjector\",\"inputs\":[{\"name\":\"_ejector\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setOperatorSetParams\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperators\",\"inputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorsForQuorum\",\"inputs\":[{\"name\":\"operatorsPerQuorum\",\"type\":\"address[][]\",\"internalType\":\"address[][]\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateSocket\",\"inputs\":[{\"name\":\"socket\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChurnApproverUpdated\",\"inputs\":[{\"name\":\"prevChurnApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newChurnApprover\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EjectorUpdated\",\"inputs\":[{\"name\":\"prevEjector\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newEjector\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorDeregistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorRegistered\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSetParamsUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"operatorSetParams\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIRegistryCoordinator.OperatorSetParam\",\"components\":[{\"name\":\"maxOperatorCount\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"kickBIPsOfOperatorStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"kickBIPsOfTotalStake\",\"type\":\"uint16\",\"internalType\":\"uint16\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OperatorSocketUpdate\",\"inputs\":[{\"name\":\"operatorId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"socket\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumBlockNumberUpdated\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"blocknumber\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101e06040523480156200001257600080fd5b50604051620065cd380380620065cd83398101604081905262000035916200024e565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f7200000000000000000000602080830191825283518085018552600681526576302e302e3160d01b908201529151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b0380861661014052808516610180528084166101605282166101a052848484846200015762000173565b505050506001600160a01b03166101c05250620002ce92505050565b600054610100900460ff1615620001e05760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000233576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200024b57600080fd5b50565b600080600080600060a086880312156200026757600080fd5b8551620002748162000235565b6020870151909550620002878162000235565b60408701519094506200029a8162000235565b6060870151909350620002ad8162000235565b6080870151909250620002c08162000235565b809150509295509295909350565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516161d7620003f660003960008181610445015281816111740152818161125e01526119290152600081816106560152818161162101528181611f7b01528181612cfa015281816137260152613f5b0152600081816105ae015281816115ac01528181612c7901528181612fce015281816136a601528181613eb2015261410801526000818161057401528181610de5015281816115ea01528181612d7601528181613628015281816137bc015281816138320152613e320152600081816104b80152818161357e0152613d7a0152600061310701526000613156015260006131310152600061308a015260006130b4015260006130de01526161d76000f3fe608060405234801561001057600080fd5b506004361061029f5760003560e01c80635df4594611610167578063a50857bf116100ce578063dd8283f311610087578063dd8283f314610727578063e65797ad1461073a578063f2fde38b146107dd578063f8581191146107f0578063fabc1cbc14610803578063fd39105a1461081657600080fd5b8063a50857bf1461069f578063c391425e146106b2578063ca0de882146106d2578063ca4f2d97146106f9578063d72d8dd61461070c578063d75b4c881461071457600080fd5b8063886f119511610120578063886f1195146105fe5780638da5cb5b146106175780639aa1653d1461061f5780639b5d177b1461063e5780639e9923c2146106515780639feab8591461067857600080fd5b80635df459461461056f5780636347c9001461059657806368304835146105a95780636e3b17db146105d0578063715018a6146105e3578063871ef049146105eb57600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104fa5780635865c60c1461050d578063595c6a671461052d5780635ac86ab7146105355780635b0b829f146105545780635c975abb1461056757600080fd5b806328f61b3114610467578063296bb0641461047a57806329d1e0c31461048d5780632cdd1e86146104a05780633998fdd3146104b35780633c2a7f4c146104da57600080fd5b806313542a4e1161025d57806313542a4e14610368578063136439dd146103915780631478851f146103a45780631eb812da146103d7578063249a0c4214610420578063268f06e01461044057600080fd5b8062cf2ab5146102a457806303fd3492146102b957806304ec6351146102ec578063054310e6146103175780630cf4b7671461034257806310d67a2f14610355575b600080fd5b6102b76102b2366004614cca565b610852565b005b6102d96102c7366004614d0b565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102ff6102fa366004614d36565b610868565b6040516001600160c01b0390911681526020016102e3565b609d5461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016102e3565b6102b7610350366004614e55565b610a63565b6102b7610363366004614eca565b610b4b565b6102d9610376366004614eca565b6001600160a01b031660009081526099602052604090205490565b6102b761039f366004614d0b565b610bfe565b6103c76103b2366004614d0b565b609a6020526000908152604090205460ff1681565b60405190151581526020016102e3565b6103ea6103e5366004614ee7565b610d3b565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102e3565b6102d961042e366004614f1a565b609b6020526000908152604090205481565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b609e5461032a906001600160a01b031681565b61032a610488366004614d0b565b610dcc565b6102b761049b366004614eca565b610e58565b6102b76104ae366004614eca565b610e69565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6104ed6104e8366004614eca565b610e7a565b6040516102e39190614f35565b6102b7610508366004614f8d565b610ef9565b61052061051b366004614eca565b610f13565b6040516102e39190615030565b6102b7610f87565b6103c7610543366004614f1a565b6001805460ff9092161b9081161490565b6102b76105623660046150b5565b611053565b6001546102d9565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b61032a6105a4366004614d0b565b6110ea565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102b76105de3660046150e9565b611114565b6102b7611127565b6102ff6105f9366004614d0b565b61113b565b60005461032a906201000090046001600160a01b031681565b61032a611146565b60965461062c9060ff1681565b60405160ff90911681526020016102e3565b6102b761064c366004615209565b61115f565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102d97f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102b76106ad366004615302565b611249565b6106c56106c03660046153cd565b61132d565b6040516102e39190615477565b6102d97f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102b76107073660046154c1565b6113e6565b609c546102d9565b6102b76107223660046155a7565b6113f8565b6102b761073536600461575a565b61140b565b6107a9610748366004614f1a565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b60408051825163ffffffff16815260208084015161ffff9081169183019190915292820151909216908201526060016102e3565b6102b76107eb366004614eca565b61170e565b6102d96107fe36600461586e565b611784565b6102b7610811366004614d0b565b6117cb565b610845610824366004614eca565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102e39190615923565b61085a611927565b6108648282611996565b5050565b600083815260986020526040812080548291908490811061088b5761088b615931565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b0316918301919091529092508516101561098a5760405162461bcd60e51b815260206004820152606560248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4015b60405180910390fd5b602081015163ffffffff1615806109b05750806020015163ffffffff168463ffffffff16105b610a575760405162461bcd60e51b815260206004820152606660248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c401610981565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610a8c57610a8c614ff8565b14610aff5760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f742072656769737465726564000000006064820152608401610981565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610b40908490615994565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc291906159a7565b6001600160a01b0316336001600160a01b031614610bf25760405162461bcd60e51b8152600401610981906159c4565b610bfb81611a9d565b50565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6f9190615a0e565b610c8b5760405162461bcd60e51b815260040161098190615a30565b60015481811614610d045760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610981565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d90602001610b40565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610d7857610d78615931565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc691906159a7565b610e60611ba2565b610bfb81611c01565b610e71611ba2565b610bfb81611c6a565b6040805180820190915260008082526020820152610dc6610ef47f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610ed99291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611cd3565b611d21565b610f01611927565b610f0d84848484611db1565b50505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115610f6d57610f6d614ff8565b6002811115610f7e57610f7e614ff8565b90525092915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190615a0e565b6110145760405162461bcd60e51b815260040161098190615a30565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61105b611ba2565b609654829060ff908116908216106110db5760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d45786973747360448201527f3a2071756f72756d20646f6573206e6f742065786973740000000000000000006064820152608401610981565b6110e5838361233b565b505050565b609c81815481106110fa57600080fd5b6000918252602090912001546001600160a01b0316905081565b61111c611927565b6110e58383836123e8565b61112f611ba2565b61113960006124a8565b565b6000610dc6826124fa565b600061115a6064546001600160a01b031690565b905090565b604051632e8da82960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e8da82990602401602060405180830381865afa1580156111c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e79190615a0e565b6112255760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610981565b61122d611927565b61123e898989898989898989612563565b505050505050505050565b604051632e8da82960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e8da82990602401602060405180830381865afa1580156112ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d19190615a0e565b61130f5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610981565b611317611927565b61132586868686868661289a565b505050505050565b6060600082516001600160401b0381111561134a5761134a614d6e565b604051908082528060200260200182016040528015611373578160200160208202803683370190505b50905060005b83518110156113de576113a58585838151811061139857611398615931565b6020026020010151612a1e565b8282815181106113b7576113b7615931565b63ffffffff90921660209283029190910190910152806113d681615a8e565b915050611379565b509392505050565b6113ee611927565b6108648282612b5a565b611400611ba2565b6110e5838383612bc1565b600054610100900460ff161580801561142b5750600054600160ff909116105b806114455750303b158015611445575060005460ff166001145b6114a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610981565b6000805460ff1916600117905580156114cb576000805461ff0019166101001790555b825184511480156114dd575081518351145b6115475760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b6064820152608401610981565b611550896124a8565b61155a8686612dd8565b61156388611c01565b61156c87611c6a565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156116bd576116ab85828151811061166a5761166a615931565b602002602001015185838151811061168457611684615931565b602002602001015185848151811061169e5761169e615931565b6020026020010151612bc1565b806116b581615a8e565b91505061164c565b50801561123e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b611716611ba2565b6001600160a01b03811661177b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610981565b610bfb816124a8565b60006117c27f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a86868686604051602001610ed9959493929190615aa9565b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906159a7565b6001600160a01b0316336001600160a01b0316146118725760405162461bcd60e51b8152600401610981906159c4565b6001541981196001541916146118f05760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610981565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610b40565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bfe107386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561198257600080fd5b505af1158015610f0d573d6000803e3d6000fd5b600154600290600490811614156119bf5760405162461bcd60e51b815260040161098190615b1f565b60005b82811015610f0d5760008484838181106119de576119de615931565b90506020020160208101906119f39190614eca565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115611a3e57611a3e614ff8565b6002811115611a4f57611a4f614ff8565b90525080519091506000611a62826124fa565b90506000611a78826001600160c01b0316612ec4565b9050611a85858583612f90565b50505050508080611a9590615a8e565b9150506119c2565b6001600160a01b038116611b2b5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610981565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b33611bab611146565b6001600160a01b0316146111395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610981565b609d54604080516001600160a01b03928316815291831660208301527f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c910160405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e54604080516001600160a01b03928316815291831660208301527f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc9910160405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610dc6611ce061307d565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b604080518082019091526000808252602082015260008080611d5160008051602061616283398151915286615b6c565b90505b611d5d816131a4565b9093509150600080516020616162833981519152828309831415611d97576040805180820190915290815260208101919091529392505050565b600080516020616162833981519152600182089050611d54565b60015460029060049081161415611dda5760405162461bcd60e51b815260040161098190615b1f565b6000611e2284848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506132269050565b9050611e2d816132b7565b611e9d5760405162461bcd60e51b8152602060048201526047602482015260008051602061612283398151915260448201527f6f7273466f7251756f72756d3a20736f6d652071756f72756d7320646f206e6f6064820152661d08195e1a5cdd60ca1b608482015260a401610981565b848314611f0c5760405162461bcd60e51b8152602060048201526043602482015260008051602061612283398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a401610981565b60005b83811015612332576000858583818110611f2b57611f2b615931565b919091013560f81c91503690506000898985818110611f4c57611f4c615931565b9050602002810190611f5e9190615b80565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fee9190615bc9565b63ffffffff16811461208a5760405162461bcd60e51b8152602060048201526065602482015260008051602061612283398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c401610981565b6000805b828110156122d15760008484838181106120aa576120aa615931565b90506020020160208101906120bf9190614eca565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561210a5761210a614ff8565b600281111561211b5761211b614ff8565b9052508051909150600061212e826124fa565b905060016001600160c01b03821660ff8b161c8116146121b25760405162461bcd60e51b815260206004820152604460248201819052600080516020616122833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a401610981565b856001600160a01b0316846001600160a01b03161161225d5760405162461bcd60e51b8152602060048201526067602482015260008051602061612283398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c401610981565b506122bb83838f8f8d908e60016122749190615be6565b9261228193929190615bfe565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f9092505050565b509092506122ca905081615a8e565b905061208e565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061232b90615a8e565b9050611f0f565b50505050505050565b60ff8216600081815260976020908152604091829020845181548684018051888701805163ffffffff90951665ffffffffffff199094168417600160201b61ffff938416021767ffff0000000000001916600160301b95831695909502949094179094558551918252518316938101939093525116918101919091527f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac9060600160405180910390a25050565b609e546001600160a01b031633146124685760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f720000000000006064820152608401610981565b6110e58383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132ea92505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081815260986020526040812054806125175750600092915050565b6000838152609860205260409020612530600183615c28565b8154811061254057612540615931565b600091825260209091200154600160401b90046001600160c01b03169392505050565b60018054600091908116141561258b5760405162461bcd60e51b815260040161098190615b1f565b83891461260e5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610981565b600061261a338861379a565b9050612679818787808060200260200160405190810160405280939291908181526020016000905b8282101561266e5761265f60408302860136819003810190615c3f565b81526020019060010190612642565b5050505050866138cb565b60006126c033838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613a55915050565b905060005b8b81101561288b576000609760008f8f858181106126e5576126e5615931565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b9091049093169181019190915284518051919350908490811061275257612752615931565b602002602001015163ffffffff161115612878576127f38e8e8481811061277b5761277b615931565b9050013560f81c60f81b60f81c8460400151848151811061279e5761279e615931565b602002602001015133866020015186815181106127bd576127bd615931565b60200260200101518d8d888181106127d7576127d7615931565b9050604002018036038101906127ed9190615c3f565b86613fe9565b61287889898481811061280857612808615931565b90506040020160200160208101906128209190614eca565b8f8f85908660016128319190615be6565b9261283e93929190615bfe565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132ea92505050565b508061288381615a8e565b9150506126c5565b50505050505050505050505050565b6001805460009190811614156128c25760405162461bcd60e51b815260040161098190615b1f565b60006128ce338561379a565b9050600061291733838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613a55915050565b51905060005b88811015612a125760008a8a8381811061293957612939615931565b919091013560f81c600081815260976020526040902054855191935063ffffffff16915084908490811061296f5761296f615931565b602002602001015163ffffffff1611156129ff5760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a401610981565b5080612a0a81615a8e565b91505061291d565b50505050505050505050565b600081815260986020526040812054815b81811015612ab0576001612a438284615c28565b612a4d9190615c28565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110612a8057612a80615931565b60009182526020909120015463ffffffff1611612a9e575050610dc6565b80612aa881615a8e565b915050612a2f565b5060405162461bcd60e51b815260206004820152606c60248201527f5265676973747279436f6f7264696e61746f722e67657451756f72756d42697460448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c401610981565b6001805460029081161415612b815760405162461bcd60e51b815260040161098190615b1f565b6110e53384848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132ea92505050565b60965460ff1660c08110612c355760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b6064820152608401610981565b612c40816001615c5b565b6096805460ff191660ff9290921691909117905580612c5f818661233b565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790612cb290849088908890600401615c80565b600060405180830381600087803b158015612ccc57600080fd5b505af1158015612ce0573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612d4857600080fd5b505af1158015612d5c573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612dc457600080fd5b505af115801561123e573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015612dff57506001600160a01b03821615155b612e815760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610981565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261086482611a9d565b6060600080612ed2846142be565b61ffff166001600160401b03811115612eed57612eed614d6e565b6040519080825280601f01601f191660200182016040528015612f17576020820181803683370190505b5090506000805b825182108015612f2f575061010081105b15612f86576001811b935085841615612f76578060f81b838381518110612f5857612f58615931565b60200101906001600160f81b031916908160001a9053508160010191505b612f7f81615a8e565b9050612f1e565b5090949350505050565b600182602001516002811115612fa857612fa8614ff8565b14612fb257505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe9061300790889086908890600401615cf9565b6020604051808303816000875af1158015613026573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304a9190615d20565b90506001600160c01b038116156130765761307685613071836001600160c01b0316612ec4565b6132ea565b5050505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156130d657507f000000000000000000000000000000000000000000000000000000000000000046145b1561310057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000808060008051602061616283398151915260036000805160206161628339815191528660008051602061616283398151915288890909089050600061321a827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206161628339815191526142e9565b91959194509092505050565b60008061323284614398565b9050808360ff166001901b116132b05760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610981565b9392505050565b60965460009081906132d19060019060ff1681901b615c28565b90506132b06001600160c01b0384811690831681161490565b6001600160a01b0382166000908152609960205260409020805460018083015460ff16600281111561331e5761331e614ff8565b1461338b5760405162461bcd60e51b8152602060048201526043602482015260008051602061618283398151915260448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a401610981565b60965460009061339f90859060ff16613226565b905060006133ac836124fa565b90506001600160c01b0382166134185760405162461bcd60e51b815260206004820152603b602482015260008051602061618283398151915260448201527f70657261746f723a206269746d61702063616e6e6f74206265203000000000006064820152608401610981565b613421826132b7565b61348c5760405162461bcd60e51b8152602060048201526042602482015260008051602061618283398151915260448201527f70657261746f723a20736f6d652071756f72756d7320646f206e6f74206578696064820152611cdd60f21b608482015260a401610981565b6134a36001600160c01b0383811690831681161490565b6135295760405162461bcd60e51b8152602060048201526059602482015260008051602061618283398151915260448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527f72656420666f72207370656369666965642071756f72756d7300000000000000608482015260a401610981565b6001600160c01b03828116198216166135428482614525565b6001600160c01b0381166136115760018501805460ff191660021790556040516351b27a6d60e11b81526001600160a01b0388811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da90602401600060405180830381600087803b1580156135c257600080fd5b505af11580156135d6573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe59061365f908a908a90600401615d49565b600060405180830381600087803b15801561367957600080fd5b505af115801561368d573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd91506136df9087908a90600401615d6d565b600060405180830381600087803b1580156136f957600080fd5b505af115801561370d573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd915061375f9087908a90600401615d6d565b600060405180830381600087803b15801561377957600080fd5b505af115801561378d573d6000803e3d6000fd5b5050505050505050505050565b6040516309aa152760e11b81526001600160a01b0383811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906313542a4e90602401602060405180830381865afa158015613805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138299190615d86565b905080610dc6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461386a87610e7a565b6040518463ffffffff1660e01b815260040161388893929190615d9f565b6020604051808303816000875af11580156138a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b09190615d86565b6020808201516000908152609a909152604090205460ff16156139715760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a401610981565b4281604001511015613a065760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a401610981565b602080820180516000908152609a909252604091829020805460ff19166001179055609d549051918301516110e5926001600160a01b0390921691613a4e9187918791611784565b83516146e5565b613a7960405180606001604052806060815260200160608152602001606081525090565b6000613ac186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff1691506132269050565b90506000613ace886124fa565b90506001600160c01b038216613b4c5760405162461bcd60e51b815260206004820152603960248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206269746d61702063616e6e6f742062652030000000000000006064820152608401610981565b613b55826132b7565b613bc9576040805162461bcd60e51b81526020600482015260248101919091527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a20736f6d652071756f72756d7320646f206e6f742065786973746064820152608401610981565b8082166001600160c01b031615613c7f5760405162461bcd60e51b815260206004820152606860248201527f5265676973747279436f6f7264696e61746f722e5f72656769737465724f706560448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c401610981565b6001600160c01b0381811690831617613c988982614525565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa87604051613cc89190615994565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff166002811115613d0257613d02614ff8565b14613e1b576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff191690836002811115613d5d57613d5d614ff8565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d90613db2908d908990600401615e1e565b600060405180830381600087803b158015613dcc57600080fd5b505af1158015613de0573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb2795290613e6b908d908c908c90600401615e92565b600060405180830381600087803b158015613e8557600080fd5b505af1158015613e99573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613eef908d908d908d908d90600401615eb7565b6000604051808303816000875af1158015613f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f369190810190615f4d565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613f93908c908c908c90600401615fb0565b6000604051808303816000875af1158015613fb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fda9190810190615fca565b84525050509695505050505050565b6020808301516001600160a01b0380821660008181526099909452604090932054919290871614156140695760405162461bcd60e51b8152602060048201526035602482015260008051602061614283398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b6064820152608401610981565b8760ff16846000015160ff16146140e65760405162461bcd60e51b8152602060048201526047602482015260008051602061614283398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a401610981565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015614157573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061417b9190616063565b9050614187818561489f565b6001600160601b0316866001600160601b03161161421a5760405162461bcd60e51b8152602060048201526056602482015260008051602061614283398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a401610981565b61422488856148c3565b6001600160601b0316816001600160601b03161061123e5760405162461bcd60e51b815260206004820152605c602482015260008051602061614283398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a401610981565b6000805b8215610dc6576142d3600184615c28565b90921691806142e181616080565b9150506142c2565b6000806142f4614c4a565b6142fc614c68565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561433d5761433f565bfe5b508261438d5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610981565b505195945050505050565b6000610100825111156144215760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610981565b815161442f57506000919050565b6000808360008151811061444557614445615931565b0160200151600160f89190911c81901b92505b845181101561451c5784818151811061447357614473615931565b0160200151600160f89190911c1b91508282116145085760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610981565b9181179161451581615a8e565b9050614458565b50909392505050565b600082815260986020526040902054806145ca576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206145e3600184615c28565b815481106145f3576145f3615931565b600091825260209091200180549091504363ffffffff908116911614156146375780546001600160401b0316600160401b6001600160c01b03851602178155610f0d565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b156147ff57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906147259086908690600401615d6d565b602060405180830381865afa158015614742573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061476691906160a2565b6001600160e01b031916146110e55760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610981565b826001600160a01b031661481383836148dd565b6001600160a01b0316146110e55760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610981565b6020810151600090612710906148b99061ffff16856160cc565b6132b091906160fb565b6040810151600090612710906148b99061ffff16856160cc565b60008060006148ec85856148f9565b915091506113de81614969565b6000808251604114156149305760208301516040840151606085015160001a61492487828585614b24565b94509450505050614962565b82516040141561495a576020830151604084015161494f868383614c11565b935093505050614962565b506000905060025b9250929050565b600081600481111561497d5761497d614ff8565b14156149865750565b600181600481111561499a5761499a614ff8565b14156149e85760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610981565b60028160048111156149fc576149fc614ff8565b1415614a4a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610981565b6003816004811115614a5e57614a5e614ff8565b1415614ab75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610981565b6004816004811115614acb57614acb614ff8565b1415610bfb5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610981565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b5b5750600090506003614c08565b8460ff16601b14158015614b7357508460ff16601c14155b15614b845750600090506004614c08565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bd8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614c0157600060019250925050614c08565b9150600090505b94509492505050565b6000806001600160ff1b03831681614c2e60ff86901c601b615be6565b9050614c3c87828885614b24565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f840112614c9857600080fd5b5081356001600160401b03811115614caf57600080fd5b6020830191508360208260051b850101111561496257600080fd5b60008060208385031215614cdd57600080fd5b82356001600160401b03811115614cf357600080fd5b614cff85828601614c86565b90969095509350505050565b600060208284031215614d1d57600080fd5b5035919050565b63ffffffff81168114610bfb57600080fd5b600080600060608486031215614d4b57600080fd5b833592506020840135614d5d81614d24565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614da657614da6614d6e565b60405290565b604080519081016001600160401b0381118282101715614da657614da6614d6e565b604051601f8201601f191681016001600160401b0381118282101715614df657614df6614d6e565b604052919050565b60006001600160401b03831115614e1757614e17614d6e565b614e2a601f8401601f1916602001614dce565b9050828152838383011115614e3e57600080fd5b828260208301376000602084830101529392505050565b600060208284031215614e6757600080fd5b81356001600160401b03811115614e7d57600080fd5b8201601f81018413614e8e57600080fd5b614e9d84823560208401614dfe565b949350505050565b6001600160a01b0381168114610bfb57600080fd5b8035614ec581614ea5565b919050565b600060208284031215614edc57600080fd5b81356132b081614ea5565b60008060408385031215614efa57600080fd5b50508035926020909101359150565b803560ff81168114614ec557600080fd5b600060208284031215614f2c57600080fd5b6132b082614f09565b815181526020808301519082015260408101610dc6565b60008083601f840112614f5e57600080fd5b5081356001600160401b03811115614f7557600080fd5b60208301915083602082850101111561496257600080fd5b60008060008060408587031215614fa357600080fd5b84356001600160401b0380821115614fba57600080fd5b614fc688838901614c86565b90965094506020870135915080821115614fdf57600080fd5b50614fec87828801614f4c565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b6003811061502c57634e487b7160e01b600052602160045260246000fd5b9052565b81518152602080830151604083019161504b9084018261500e565b5092915050565b803561ffff81168114614ec557600080fd5b60006060828403121561507657600080fd5b61507e614d84565b9050813561508b81614d24565b815261509960208301615052565b60208201526150aa60408301615052565b604082015292915050565b600080608083850312156150c857600080fd5b6150d183614f09565b91506150e08460208501615064565b90509250929050565b6000806000604084860312156150fe57600080fd5b833561510981614ea5565b925060208401356001600160401b0381111561512457600080fd5b61513086828701614f4c565b9497909650939450505050565b6000610100828403121561515057600080fd5b50919050565b60008083601f84011261516857600080fd5b5081356001600160401b0381111561517f57600080fd5b6020830191508360208260061b850101111561496257600080fd5b6000606082840312156151ac57600080fd5b6151b4614d84565b905081356001600160401b038111156151cc57600080fd5b8201601f810184136151dd57600080fd5b6151ec84823560208401614dfe565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c03121561522857600080fd5b89356001600160401b038082111561523f57600080fd5b61524b8d838e01614f4c565b909b50995060208c013591508082111561526457600080fd5b6152708d838e01614f4c565b90995097508791506152858d60408e0161513d565b96506101408c013591508082111561529c57600080fd5b6152a88d838e01615156565b90965094506101608c01359150808211156152c257600080fd5b6152ce8d838e0161519a565b93506101808c01359150808211156152e557600080fd5b506152f28c828d0161519a565b9150509295985092959850929598565b600080600080600080610160878903121561531c57600080fd5b86356001600160401b038082111561533357600080fd5b61533f8a838b01614f4c565b9098509650602089013591508082111561535857600080fd5b6153648a838b01614f4c565b90965094508491506153798a60408b0161513d565b935061014089013591508082111561539057600080fd5b5061539d89828a0161519a565b9150509295509295509295565b60006001600160401b038211156153c3576153c3614d6e565b5060051b60200190565b600080604083850312156153e057600080fd5b82356153eb81614d24565b91506020838101356001600160401b0381111561540757600080fd5b8401601f8101861361541857600080fd5b803561542b615426826153aa565b614dce565b81815260059190911b8201830190838101908883111561544a57600080fd5b928401925b828410156154685783358252928401929084019061544f565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b818110156154b557835163ffffffff1683529284019291840191600101615493565b50909695505050505050565b600080602083850312156154d457600080fd5b82356001600160401b038111156154ea57600080fd5b614cff85828601614f4c565b6001600160601b0381168114610bfb57600080fd5b600082601f83011261551c57600080fd5b8135602061552c615426836153aa565b82815260069290921b8401810191818101908684111561554b57600080fd5b8286015b8481101561559c57604081890312156155685760008081fd5b615570614dac565b813561557b81614ea5565b81528185013561558a816154f6565b8186015283529183019160400161554f565b509695505050505050565b600080600060a084860312156155bc57600080fd5b6155c68585615064565b925060608401356155d6816154f6565b915060808401356001600160401b038111156155f157600080fd5b6155fd8682870161550b565b9150509250925092565b600082601f83011261561857600080fd5b81356020615628615426836153aa565b8281526060928302850182019282820191908785111561564757600080fd5b8387015b8581101561566a5761565d8982615064565b845292840192810161564b565b5090979650505050505050565b600082601f83011261568857600080fd5b81356020615698615426836153aa565b82815260059290921b840181019181810190868411156156b757600080fd5b8286015b8481101561559c5780356156ce816154f6565b83529183019183016156bb565b600082601f8301126156ec57600080fd5b813560206156fc615426836153aa565b82815260059290921b8401810191818101908684111561571b57600080fd5b8286015b8481101561559c5780356001600160401b0381111561573e5760008081fd5b61574c8986838b010161550b565b84525091830191830161571f565b600080600080600080600080610100898b03121561577757600080fd5b61578089614eba565b975061578e60208a01614eba565b965061579c60408a01614eba565b95506157aa60608a01614eba565b94506080890135935060a08901356001600160401b03808211156157cd57600080fd5b6157d98c838d01615607565b945060c08b01359150808211156157ef57600080fd5b6157fb8c838d01615677565b935060e08b013591508082111561581157600080fd5b5061581e8b828c016156db565b9150509295985092959890939650565b60006040828403121561584057600080fd5b615848614dac565b905061585382614f09565b8152602082013561586381614ea5565b602082015292915050565b6000806000806080858703121561588457600080fd5b843593506020808601356001600160401b038111156158a257600080fd5b8601601f810188136158b357600080fd5b80356158c1615426826153aa565b81815260069190911b8201830190838101908a8311156158e057600080fd5b928401925b82841015615909576158f78b8561582e565b825284820191506040840193506158e5565b979a97995050505060408601359560600135949350505050565b60208101610dc6828461500e565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b8181101561596d57602081850181015186830182015201615951565b8181111561597f576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006132b06020830184615947565b6000602082840312156159b957600080fd5b81516132b081614ea5565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215615a2057600080fd5b815180151581146132b057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415615aa257615aa2615a78565b5060010190565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b81811015615b06578551805160ff1684528501516001600160a01b0316858401529484019491830191600101615ad5565b5050606086019790975250505050608001529392505050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b634e487b7160e01b600052601260045260246000fd5b600082615b7b57615b7b615b56565b500690565b6000808335601e19843603018112615b9757600080fd5b8301803591506001600160401b03821115615bb157600080fd5b6020019150600581901b360382131561496257600080fd5b600060208284031215615bdb57600080fd5b81516132b081614d24565b60008219821115615bf957615bf9615a78565b500190565b60008085851115615c0e57600080fd5b83861115615c1b57600080fd5b5050820193919092039150565b600082821015615c3a57615c3a615a78565b500390565b600060408284031215615c5157600080fd5b6132b0838361582e565b600060ff821660ff84168060ff03821115615c7857615c78615a78565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615ce957865180516001600160a01b031684528601518516868401529585019591830191600101615cb9565b50909a9950505050505050505050565b60018060a01b03841681528260208201526060604082015260006117c26060830184615947565b600060208284031215615d3257600080fd5b81516001600160c01b03811681146132b057600080fd5b6001600160a01b0383168152604060208201819052600090614e9d90830184615947565b828152604060208201526000614e9d6040830184615947565b600060208284031215615d9857600080fd5b5051919050565b6001600160a01b03841681526101608101615dc7602083018580358252602090810135910152565b615de1606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615e4860a0840182615947565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906117c29083018486615e69565b60018060a01b0385168152836020820152606060408201526000615edf606083018486615e69565b9695505050505050565b600082601f830112615efa57600080fd5b81516020615f0a615426836153aa565b82815260059290921b84018101918181019086841115615f2957600080fd5b8286015b8481101561559c578051615f40816154f6565b8352918301918301615f2d565b60008060408385031215615f6057600080fd5b82516001600160401b0380821115615f7757600080fd5b615f8386838701615ee9565b93506020850151915080821115615f9957600080fd5b50615fa685828601615ee9565b9150509250929050565b8381526040602082015260006117c2604083018486615e69565b60006020808385031215615fdd57600080fd5b82516001600160401b03811115615ff357600080fd5b8301601f8101851361600457600080fd5b8051616012615426826153aa565b81815260059190911b8201830190838101908783111561603157600080fd5b928401925b8284101561605857835161604981614d24565b82529284019290840190616036565b979650505050505050565b60006020828403121561607557600080fd5b81516132b0816154f6565b600061ffff8083168181141561609857616098615a78565b6001019392505050565b6000602082840312156160b457600080fd5b81516001600160e01b0319811681146132b057600080fd5b60006001600160601b03808316818516818304811182151516156160f2576160f2615a78565b02949350505050565b60006001600160601b038084168061611557616115615b56565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c696461746543687530644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd475265676973747279436f6f7264696e61746f722e5f646572656769737465724fa2646970667358221220a30847cdf532c0a271aa17d8bef05de6251479a31940b5068f02b68a60226f3464736f6c634300080c0033", + Bin: "0x6101e06040523480156200001257600080fd5b50604051620063dd380380620063dd83398101604081905262000035916200024e565b604080518082018252601681527f4156535265676973747279436f6f7264696e61746f7200000000000000000000602080830191825283518085018552600681526576302e302e3160d01b908201529151902060e08190527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a996101008190524660a081815285517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818701819052818801959095526060810193909352608080840192909252308382018190528651808503909201825260c09384019096528051940193909320909252919052610120526001600160a01b0380861661014052808516610180528084166101605282166101a052848484846200015762000173565b505050506001600160a01b03166101c05250620002ce92505050565b600054610100900460ff1615620001e05760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000233576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200024b57600080fd5b50565b600080600080600060a086880312156200026757600080fd5b8551620002748162000235565b6020870151909550620002878162000235565b60408701519094506200029a8162000235565b6060870151909350620002ad8162000235565b6080870151909250620002c08162000235565b809150509295509295909350565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051615ff5620003e86000396000818161043a015261171d01526000818161064b0152818161141a01528181611d7001528181612ace015281816134d50152613cd10152600081816105a3015281816113a501528181612a4d01528181612d900152818161345501528181613c280152613e7e01526000818161056901528181610d7d015281816113e301528181612b4a015281816133d701528181613563015281816135e20152613ba80152600081816104ad0152818161331a0152613af001526000612ec901526000612f1801526000612ef301526000612e4c01526000612e7601526000612ea00152615ff56000f3fe608060405234801561001057600080fd5b506004361061029f5760003560e01c80635df4594611610167578063a50857bf116100ce578063dd8283f311610087578063dd8283f31461071c578063e65797ad1461072f578063f2fde38b146107ab578063f8581191146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b8063a50857bf14610694578063c391425e146106a7578063ca0de882146106c7578063ca4f2d97146106ee578063d72d8dd614610701578063d75b4c881461070957600080fd5b8063886f119511610120578063886f1195146105f35780638da5cb5b1461060c5780639aa1653d146106145780639b5d177b146106335780639e9923c2146106465780639feab8591461066d57600080fd5b80635df45946146105645780636347c9001461058b578063683048351461059e5780636e3b17db146105c5578063715018a6146105d8578063871ef049146105e057600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104ef5780635865c60c14610502578063595c6a67146105225780635ac86ab71461052a5780635b0b829f146105495780635c975abb1461055c57600080fd5b806328f61b311461045c578063296bb0641461046f57806329d1e0c3146104825780632cdd1e86146104955780633998fdd3146104a85780633c2a7f4c146104cf57600080fd5b806313542a4e1161025d57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c4214610415578063268f06e01461043557600080fd5b8062cf2ab5146102a457806303fd3492146102b957806304ec6351146102ec578063054310e6146103175780630cf4b7671461033757806310d67a2f1461034a575b600080fd5b6102b76102b2366004614a0d565b610820565b005b6102d96102c7366004614a4e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102ff6102fa366004614a79565b610836565b6040516001600160c01b0390911681526020016102e3565b609d5461032a906001600160a01b031681565b6040516102e39190614ab1565b6102b7610345366004614bac565b610a0d565b6102b7610358366004614c21565b610af5565b6102d961036b366004614c21565b6001600160a01b031660009081526099602052604090205490565b6102b7610394366004614a4e565b610ba8565b6103bc6103a7366004614a4e565b609a6020526000908152604090205460ff1681565b60405190151581526020016102e3565b6103df6103da366004614c3e565b610cd3565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102e3565b6102d9610423366004614c71565b609b6020526000908152604090205481565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b609e5461032a906001600160a01b031681565b61032a61047d366004614a4e565b610d64565b6102b7610490366004614c21565b610df0565b6102b76104a3366004614c21565b610e01565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6104e26104dd366004614c21565b610e12565b6040516102e39190614c8c565b6102b76104fd366004614ce4565b610e91565b610515610510366004614c21565b610eab565b6040516102e39190614d87565b6102b7610f1f565b6103bc610538366004614c71565b6001805460ff9092161b9081161490565b6102b7610557366004614e0c565b610fde565b6001546102d9565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b61032a610599366004614a4e565b61106f565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102b76105d3366004614e40565b611099565b6102b76110ac565b6102ff6105ee366004614a4e565b6110c0565b60005461032a906201000090046001600160a01b031681565b61032a6110cb565b6096546106219060ff1681565b60405160ff90911681526020016102e3565b6102b7610641366004614f60565b6110e4565b61032a7f000000000000000000000000000000000000000000000000000000000000000081565b6102d97f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102b76106a2366004615059565b611108565b6106ba6106b5366004615124565b611126565b6040516102e391906151ce565b6102d97f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102b76106fc366004615218565b6111df565b609c546102d9565b6102b76107173660046152fe565b6111f1565b6102b761072a3660046154b1565b611204565b61079e61073d366004614c71565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b6040516102e39190615585565b6102b76107b9366004614c21565b611507565b6102d96107cc3660046155f6565b61157d565b6102b76107df366004614a4e565b6115c4565b6108136107f2366004614c21565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102e391906156ab565b61082861171b565b610832828261178a565b5050565b6000838152609860205260408120805482919084908110610859576108596156b9565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b031691830191909152909250851610156109465760405162461bcd60e51b81526020600482015260656024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4015b60405180910390fd5b602081015163ffffffff16158061096c5750806020015163ffffffff168463ffffffff16105b610a015760405162461bcd60e51b81526020600482015260666024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c40161093d565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610a3657610a36614d4f565b14610aa95760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f74207265676973746572656400000000606482015260840161093d565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610aea90849061571c565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061572f565b6001600160a01b0316336001600160a01b031614610b9c5760405162461bcd60e51b815260040161093d9061574c565b610ba581611891565b50565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610bdd903390600401614ab1565b602060405180830381865afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1e9190615796565b610c3a5760405162461bcd60e51b815260040161093d906157b8565b60015481811614610cae5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b606482015260840161093d565b60018190556040518181523390600080516020615f2083398151915290602001610aea565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610d1057610d106156b9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906347b314e890602401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e919061572f565b610df8611997565b610ba5816119f6565b610e09611997565b610ba581611a5f565b6040805180820190915260008082526020820152610d5e610e8c7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610e719291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611ac8565b611b16565b610e9961171b565b610ea584848484611ba6565b50505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115610f0557610f05614d4f565b6002811115610f1657610f16614d4f565b90525092915050565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610f54903390600401614ab1565b602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190615796565b610fb15760405162461bcd60e51b815260040161093d906157b8565b60001960018190556040519081523390600080516020615f208339815191529060200160405180910390a2565b610fe6611997565b609654829060ff908116908216106110605760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d4578697374736044820152760e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd604a1b606482015260840161093d565b61106a8383612130565b505050565b609c818154811061107f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6110a161171b565b61106a8383836121ce565b6110b4611997565b6110be600061228e565b565b6000610d5e826122e0565b60006110df6064546001600160a01b031690565b905090565b6110ec61171b565b6110fd898989898989898989612349565b505050505050505050565b61111061171b565b61111e868686868686612680565b505050505050565b6060600082516001600160401b0381111561114357611143614ac5565b60405190808252806020026020018201604052801561116c578160200160208202803683370190505b50905060005b83518110156111d75761119e85858381518110611191576111916156b9565b6020026020010151612804565b8282815181106111b0576111b06156b9565b63ffffffff90921660209283029190910190910152806111cf81615816565b915050611172565b509392505050565b6111e761171b565b610832828261292e565b6111f9611997565b61106a838383612995565b600054610100900460ff16158080156112245750600054600160ff909116105b8061123e5750303b15801561123e575060005460ff166001145b6112a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161093d565b6000805460ff1916600117905580156112c4576000805461ff0019166101001790555b825184511480156112d6575081518351145b6113405760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b606482015260840161093d565b6113498961228e565b6113538686612bac565b61135c886119f6565b61136587611a5f565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000000000000000000000000000000000000000000000841690831617905585549384019095559190920180547f000000000000000000000000000000000000000000000000000000000000000090921691909316179091555b84518110156114b6576114a4858281518110611463576114636156b9565b602002602001015185838151811061147d5761147d6156b9565b6020026020010151858481518110611497576114976156b9565b6020026020010151612995565b806114ae81615816565b915050611445565b5080156110fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61150f611997565b6001600160a01b0381166115745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b610ba58161228e565b60006115bb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a86868686604051602001610e71959493929190615831565b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b919061572f565b6001600160a01b0316336001600160a01b03161461166b5760405162461bcd60e51b815260040161093d9061574c565b6001541981196001541916146116e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b606482015260840161093d565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610aea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bfe107386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561177657600080fd5b505af1158015610ea5573d6000803e3d6000fd5b600154600290600490811614156117b35760405162461bcd60e51b815260040161093d906158a7565b60005b82811015610ea55760008484838181106117d2576117d26156b9565b90506020020160208101906117e79190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561183257611832614d4f565b600281111561184357611843614d4f565b90525080519091506000611856826122e0565b9050600061186c826001600160c01b0316612c86565b9050611879858583612d52565b5050505050808061188990615816565b9150506117b6565b6001600160a01b03811661191f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161093d565b7f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6600060029054906101000a90046001600160a01b0316826040516119659291906158da565b60405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b336119a06110cb565b6001600160a01b0316146110be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b609d546040517f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c91611a35916001600160a01b039091169084906158da565b60405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e546040517f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc991611a9e916001600160a01b039091169084906158da565b60405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5e611ad5612e3f565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b604080518082019091526000808252602082015260008080611b46600080516020615f408339815191528661590a565b90505b611b5281612f66565b9093509150600080516020615f40833981519152828309831415611b8c576040805180820190915290815260208101919091529392505050565b600080516020615f40833981519152600182089050611b49565b60015460029060049081161415611bcf5760405162461bcd60e51b815260040161093d906158a7565b6000611c1784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050611c2281613067565b611c925760405162461bcd60e51b81526020600482015260476024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20736f6d652071756f72756d7320646f206e6f6064820152661d08195e1a5cdd60ca1b608482015260a40161093d565b848314611d015760405162461bcd60e51b81526020600482015260436024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a40161093d565b60005b83811015612127576000858583818110611d2057611d206156b9565b919091013560f81c91503690506000898985818110611d4157611d416156b9565b9050602002810190611d53919061591e565b6040516379a0849160e11b815260ff8616600482015291935091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f341092290602401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190615967565b63ffffffff168114611e7f5760405162461bcd60e51b81526020600482015260656024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c40161093d565b6000805b828110156120c6576000848483818110611e9f57611e9f6156b9565b9050602002016020810190611eb49190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115611eff57611eff614d4f565b6002811115611f1057611f10614d4f565b90525080519091506000611f23826122e0565b905060016001600160c01b03821660ff8b161c811614611fa75760405162461bcd60e51b815260206004820152604460248201819052600080516020615ee0833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a40161093d565b856001600160a01b0316846001600160a01b0316116120525760405162461bcd60e51b81526020600482015260676024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c40161093d565b506120b083838f8f8d908e60016120699190615984565b926120769392919061599c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5292505050565b509092506120bf905081615816565b9050611e83565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061212090615816565b9050611d04565b50505050505050565b60ff821660008181526097602090815260409182902084518154928601518487015161ffff908116600160301b0267ffff0000000000001991909216600160201b0265ffffffffffff1990951663ffffffff909316929092179390931716919091179055517f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac906121c2908490615585565b60405180910390a25050565b609e546001600160a01b0316331461224e5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f72000000000000606482015260840161093d565b61106a8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081815260986020526040812054806122fd5750600092915050565b60008381526098602052604090206123166001836159c6565b81548110612326576123266156b9565b600091825260209091200154600160401b90046001600160c01b03169392505050565b6001805460009190811614156123715760405162461bcd60e51b815260040161093d906158a7565b8389146123f45760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a40161093d565b60006124003388613549565b905061245f818787808060200260200160405190810160405280939291908181526020016000905b8282101561245457612445604083028601368190038101906159dd565b81526020019060010190612428565b50505050508661367b565b60006124a633838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b905060005b8b811015612671576000609760008f8f858181106124cb576124cb6156b9565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110612538576125386156b9565b602002602001015163ffffffff16111561265e576125d98e8e84818110612561576125616156b9565b9050013560f81c60f81b60f81c84604001518481518110612584576125846156b9565b602002602001015133866020015186815181106125a3576125a36156b9565b60200260200101518d8d888181106125bd576125bd6156b9565b9050604002018036038101906125d391906159dd565b86613d5f565b61265e8989848181106125ee576125ee6156b9565b90506040020160200160208101906126069190614c21565b8f8f85908660016126179190615984565b926126249392919061599c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b508061266981615816565b9150506124ab565b50505050505050505050505050565b6001805460009190811614156126a85760405162461bcd60e51b815260040161093d906158a7565b60006126b43385613549565b905060006126fd33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b51905060005b888110156127f85760008a8a8381811061271f5761271f6156b9565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110612755576127556156b9565b602002602001015163ffffffff1611156127e55760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a40161093d565b50806127f081615816565b915050612703565b50505050505050505050565b600081815260986020526040812054815b8181101561289657600161282982846159c6565b61283391906159c6565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110612866576128666156b9565b60009182526020909120015463ffffffff1611612884575050610d5e565b8061288e81615816565b915050612815565b5060405162461bcd60e51b815260206004820152606c6024820152600080516020615ec083398151915260448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c40161093d565b60018054600290811614156129555760405162461bcd60e51b815260040161093d906158a7565b61106a3384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b60965460ff1660c08110612a095760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b606482015260840161093d565b612a148160016159f9565b6096805460ff191660ff9290921691909117905580612a338186612130565b60405160016296b58960e01b031981526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ff694a7790612a8690849088908890600401615a1e565b600060405180830381600087803b158015612aa057600080fd5b505af1158015612ab4573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b1c57600080fd5b505af1158015612b30573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b9857600080fd5b505af11580156110fd573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015612bd357506001600160a01b03821615155b612c555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161093d565b60018190556040518181523390600080516020615f208339815191529060200160405180910390a261083282611891565b6060600080612c9484614034565b61ffff166001600160401b03811115612caf57612caf614ac5565b6040519080825280601f01601f191660200182016040528015612cd9576020820181803683370190505b5090506000805b825182108015612cf1575061010081105b15612d48576001811b935085841615612d38578060f81b838381518110612d1a57612d1a6156b9565b60200101906001600160f81b031916908160001a9053508160010191505b612d4181615816565b9050612ce0565b5090949350505050565b600182602001516002811115612d6a57612d6a614d4f565b14612d7457505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906366acfefe90612dc990889086908890600401615a97565b6020604051808303816000875af1158015612de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0c9190615abe565b90506001600160c01b03811615612e3857612e3885612e33836001600160c01b0316612c86565b61309a565b5050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612e9857507f000000000000000000000000000000000000000000000000000000000000000046145b15612ec257507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f408339815191526003600080516020615f4083398151915286600080516020615f40833981519152888909090890506000612fdc827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f4083398151915261405f565b91959194509092505050565b600080612ff48461410e565b9050808360ff166001901b116130605760405162461bcd60e51b815260206004820152603f6024820152600080516020615fa083398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c756500606482015260840161093d565b9392505050565b60965460009081906130819060019060ff1681901b6159c6565b90506130606001600160c01b0384811690831681161490565b6001600160a01b0382166000908152609960205260409020805460018083015460ff1660028111156130ce576130ce614d4f565b1461313b5760405162461bcd60e51b81526020600482015260436024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a40161093d565b60965460009061314f90859060ff16612fe8565b9050600061315c836122e0565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603b6024820152600080516020615f6083398151915260448201527f70657261746f723a206269746d61702063616e6e6f7420626520300000000000606482015260840161093d565b6131d182613067565b61323c5760405162461bcd60e51b81526020600482015260426024820152600080516020615f6083398151915260448201527f70657261746f723a20736f6d652071756f72756d7320646f206e6f74206578696064820152611cdd60f21b608482015260a40161093d565b6132536001600160c01b0383811690831681161490565b6132d55760405162461bcd60e51b81526020600482015260596024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527872656420666f72207370656369666965642071756f72756d7360381b608482015260a40161093d565b6001600160c01b03828116198216166132ee8482614277565b6001600160c01b0381166133c05760018501805460ff191660021790556040516351b27a6d60e11b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a364f4da90613357908a90600401614ab1565b600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f4e24fe59061340e908a908a90600401615ae7565b600060405180830381600087803b15801561342857600080fd5b505af115801561343c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd915061348e9087908a90600401615b0b565b600060405180830381600087803b1580156134a857600080fd5b505af11580156134bc573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063bd29b8cd915061350e9087908a90600401615b0b565b600060405180830381600087803b15801561352857600080fd5b505af115801561353c573d6000803e3d6000fd5b5050505050505050505050565b6040516309aa152760e11b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90613598908690600401614ab1565b602060405180830381865afa1580156135b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d99190615b24565b905080610d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bf79ce58848461361a87610e12565b6040518463ffffffff1660e01b815260040161363893929190615b3d565b6020604051808303816000875af1158015613657573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130609190615b24565b6020808201516000908152609a909152604090205460ff16156137215760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a40161093d565b42816040015110156137b65760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a40161093d565b602080820180516000908152609a909252604091829020805460ff19166001179055609d5490519183015161106a926001600160a01b03909216916137fe918791879161157d565b8351614437565b61382960405180606001604052806060815260200160608152602001606081525090565b600061387186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050600061387e886122e0565b90506001600160c01b0382166138e65760405162461bcd60e51b81526020600482015260396024820152600080516020615f8083398151915260448201527807261746f723a206269746d61702063616e6e6f74206265203603c1b606482015260840161093d565b6138ef82613067565b613951576040805162461bcd60e51b8152602060048201526024810191909152600080516020615f8083398151915260448201527f7261746f723a20736f6d652071756f72756d7320646f206e6f74206578697374606482015260840161093d565b8082166001600160c01b0316156139f55760405162461bcd60e51b81526020600482015260686024820152600080516020615f8083398151915260448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c40161093d565b6001600160c01b0381811690831617613a0e8982614277565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa87604051613a3e919061571c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff166002811115613a7857613a78614d4f565b14613b91576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff191690836002811115613ad357613ad3614d4f565b021790555050604051639926ee7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169150639926ee7d90613b28908d908990600401615bbc565b600060405180830381600087803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633fb2795290613be1908d908c908c90600401615c30565b600060405180830381600087803b158015613bfb57600080fd5b505af1158015613c0f573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016925063255047779150613c65908d908d908d908d90600401615c55565b6000604051808303816000875af1158015613c84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cac9190810190615ceb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062bff04d90613d09908c908c908c90600401615d4e565b6000604051808303816000875af1158015613d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d509190810190615d68565b84525050509695505050505050565b6020808301516001600160a01b038082166000818152609990945260409093205491929087161415613ddf5760405162461bcd60e51b81526020600482015260356024820152600080516020615f0083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b606482015260840161093d565b8760ff16846000015160ff1614613e5c5760405162461bcd60e51b81526020600482015260476024820152600080516020615f0083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a40161093d565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635401ed2790604401602060405180830381865afa158015613ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef19190615e01565b9050613efd81856145f1565b6001600160601b0316866001600160601b031611613f905760405162461bcd60e51b81526020600482015260566024820152600080516020615f0083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a40161093d565b613f9a8885614615565b6001600160601b0316816001600160601b0316106110fd5760405162461bcd60e51b815260206004820152605c6024820152600080516020615f0083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a40161093d565b6000805b8215610d5e576140496001846159c6565b909216918061405781615e1e565b915050614038565b60008061406a61498d565b6140726149ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156140b3576140b5565bfe5b50826141035760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640161093d565b505195945050505050565b6000610100825111156141855760405162461bcd60e51b815260206004820152604460248201819052600080516020615fa0833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40161093d565b815161419357506000919050565b600080836000815181106141a9576141a96156b9565b0160200151600160f89190911c81901b92505b845181101561426e578481815181106141d7576141d76156b9565b0160200151600160f89190911c1b915082821161425a5760405162461bcd60e51b81526020600482015260476024820152600080516020615fa083398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40161093d565b9181179161426781615816565b90506141bc565b50909392505050565b6000828152609860205260409020548061431c576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206143356001846159c6565b81548110614345576143456156b9565b600091825260209091200180549091504363ffffffff908116911614156143895780546001600160401b0316600160401b6001600160c01b03851602178155610ea5565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561455157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144779086908690600401615b0b565b602060405180830381865afa158015614494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b89190615e40565b6001600160e01b0319161461106a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161093d565b826001600160a01b0316614565838361462f565b6001600160a01b03161461106a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161093d565b60208101516000906127109061460b9061ffff1685615e6a565b6130609190615e99565b60408101516000906127109061460b9061ffff1685615e6a565b600080600061463e858561464b565b915091506111d7816146bb565b6000808251604114156146825760208301516040840151606085015160001a61467687828585614871565b945094505050506146b4565b8251604014156146ac57602083015160408401516146a1868383614954565b9350935050506146b4565b506000905060025b9250929050565b60008160048111156146cf576146cf614d4f565b14156146d85750565b60018160048111156146ec576146ec614d4f565b14156147355760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161093d565b600281600481111561474957614749614d4f565b14156147975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161093d565b60038160048111156147ab576147ab614d4f565b14156148045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161093d565b600481600481111561481857614818614d4f565b1415610ba55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161093d565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561489e575060009050600361494b565b8460ff16601b141580156148b657508460ff16601c14155b156148c7575060009050600461494b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561491b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149445760006001925092505061494b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161497160ff86901c601b615984565b905061497f87828885614871565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126149db57600080fd5b5081356001600160401b038111156149f257600080fd5b6020830191508360208260051b85010111156146b457600080fd5b60008060208385031215614a2057600080fd5b82356001600160401b03811115614a3657600080fd5b614a42858286016149c9565b90969095509350505050565b600060208284031215614a6057600080fd5b5035919050565b63ffffffff81168114610ba557600080fd5b600080600060608486031215614a8e57600080fd5b833592506020840135614aa081614a67565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614afd57614afd614ac5565b60405290565b604080519081016001600160401b0381118282101715614afd57614afd614ac5565b604051601f8201601f191681016001600160401b0381118282101715614b4d57614b4d614ac5565b604052919050565b60006001600160401b03831115614b6e57614b6e614ac5565b614b81601f8401601f1916602001614b25565b9050828152838383011115614b9557600080fd5b828260208301376000602084830101529392505050565b600060208284031215614bbe57600080fd5b81356001600160401b03811115614bd457600080fd5b8201601f81018413614be557600080fd5b614bf484823560208401614b55565b949350505050565b6001600160a01b0381168114610ba557600080fd5b8035614c1c81614bfc565b919050565b600060208284031215614c3357600080fd5b813561306081614bfc565b60008060408385031215614c5157600080fd5b50508035926020909101359150565b803560ff81168114614c1c57600080fd5b600060208284031215614c8357600080fd5b61306082614c60565b815181526020808301519082015260408101610d5e565b60008083601f840112614cb557600080fd5b5081356001600160401b03811115614ccc57600080fd5b6020830191508360208285010111156146b457600080fd5b60008060008060408587031215614cfa57600080fd5b84356001600160401b0380821115614d1157600080fd5b614d1d888389016149c9565b90965094506020870135915080821115614d3657600080fd5b50614d4387828801614ca3565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614d8357634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614da290840182614d65565b5092915050565b803561ffff81168114614c1c57600080fd5b600060608284031215614dcd57600080fd5b614dd5614adb565b90508135614de281614a67565b8152614df060208301614da9565b6020820152614e0160408301614da9565b604082015292915050565b60008060808385031215614e1f57600080fd5b614e2883614c60565b9150614e378460208501614dbb565b90509250929050565b600080600060408486031215614e5557600080fd5b8335614e6081614bfc565b925060208401356001600160401b03811115614e7b57600080fd5b614e8786828701614ca3565b9497909650939450505050565b60006101008284031215614ea757600080fd5b50919050565b60008083601f840112614ebf57600080fd5b5081356001600160401b03811115614ed657600080fd5b6020830191508360208260061b85010111156146b457600080fd5b600060608284031215614f0357600080fd5b614f0b614adb565b905081356001600160401b03811115614f2357600080fd5b8201601f81018413614f3457600080fd5b614f4384823560208401614b55565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f7f57600080fd5b89356001600160401b0380821115614f9657600080fd5b614fa28d838e01614ca3565b909b50995060208c0135915080821115614fbb57600080fd5b614fc78d838e01614ca3565b9099509750879150614fdc8d60408e01614e94565b96506101408c0135915080821115614ff357600080fd5b614fff8d838e01614ead565b90965094506101608c013591508082111561501957600080fd5b6150258d838e01614ef1565b93506101808c013591508082111561503c57600080fd5b506150498c828d01614ef1565b9150509295985092959850929598565b600080600080600080610160878903121561507357600080fd5b86356001600160401b038082111561508a57600080fd5b6150968a838b01614ca3565b909850965060208901359150808211156150af57600080fd5b6150bb8a838b01614ca3565b90965094508491506150d08a60408b01614e94565b93506101408901359150808211156150e757600080fd5b506150f489828a01614ef1565b9150509295509295509295565b60006001600160401b0382111561511a5761511a614ac5565b5060051b60200190565b6000806040838503121561513757600080fd5b823561514281614a67565b91506020838101356001600160401b0381111561515e57600080fd5b8401601f8101861361516f57600080fd5b803561518261517d82615101565b614b25565b81815260059190911b820183019083810190888311156151a157600080fd5b928401925b828410156151bf578335825292840192908401906151a6565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561520c57835163ffffffff16835292840192918401916001016151ea565b50909695505050505050565b6000806020838503121561522b57600080fd5b82356001600160401b0381111561524157600080fd5b614a4285828601614ca3565b6001600160601b0381168114610ba557600080fd5b600082601f83011261527357600080fd5b8135602061528361517d83615101565b82815260069290921b840181019181810190868411156152a257600080fd5b8286015b848110156152f357604081890312156152bf5760008081fd5b6152c7614b03565b81356152d281614bfc565b8152818501356152e18161524d565b818601528352918301916040016152a6565b509695505050505050565b600080600060a0848603121561531357600080fd5b61531d8585614dbb565b9250606084013561532d8161524d565b915060808401356001600160401b0381111561534857600080fd5b61535486828701615262565b9150509250925092565b600082601f83011261536f57600080fd5b8135602061537f61517d83615101565b8281526060928302850182019282820191908785111561539e57600080fd5b8387015b858110156153c1576153b48982614dbb565b84529284019281016153a2565b5090979650505050505050565b600082601f8301126153df57600080fd5b813560206153ef61517d83615101565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b848110156152f35780356154258161524d565b8352918301918301615412565b600082601f83011261544357600080fd5b8135602061545361517d83615101565b82815260059290921b8401810191818101908684111561547257600080fd5b8286015b848110156152f35780356001600160401b038111156154955760008081fd5b6154a38986838b0101615262565b845250918301918301615476565b600080600080600080600080610100898b0312156154ce57600080fd5b6154d789614c11565b97506154e560208a01614c11565b96506154f360408a01614c11565b955061550160608a01614c11565b94506080890135935060a08901356001600160401b038082111561552457600080fd5b6155308c838d0161535e565b945060c08b013591508082111561554657600080fd5b6155528c838d016153ce565b935060e08b013591508082111561556857600080fd5b506155758b828c01615432565b9150509295985092959890939650565b815163ffffffff16815260208083015161ffff90811691830191909152604092830151169181019190915260600190565b6000604082840312156155c857600080fd5b6155d0614b03565b90506155db82614c60565b815260208201356155eb81614bfc565b602082015292915050565b6000806000806080858703121561560c57600080fd5b843593506020808601356001600160401b0381111561562a57600080fd5b8601601f8101881361563b57600080fd5b803561564961517d82615101565b81815260069190911b8201830190838101908a83111561566857600080fd5b928401925b828410156156915761567f8b856155b6565b8252848201915060408401935061566d565b979a97995050505060408601359560600135949350505050565b60208101610d5e8284614d65565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156156f5576020818501810151868301820152016156d9565b81811115615707576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061306060208301846156cf565b60006020828403121561574157600080fd5b815161306081614bfc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156157a857600080fd5b8151801515811461306057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561582a5761582a615800565b5060010190565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b8181101561588e578551805160ff1684528501516001600160a01b031685840152948401949183019160010161585d565b5050606086019790975250505050608001529392505050565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601260045260246000fd5b600082615919576159196158f4565b500690565b6000808335601e1984360301811261593557600080fd5b8301803591506001600160401b0382111561594f57600080fd5b6020019150600581901b36038213156146b457600080fd5b60006020828403121561597957600080fd5b815161306081614a67565b6000821982111561599757615997615800565b500190565b600080858511156159ac57600080fd5b838611156159b957600080fd5b5050820193919092039150565b6000828210156159d8576159d8615800565b500390565b6000604082840312156159ef57600080fd5b61306083836155b6565b600060ff821660ff84168060ff03821115615a1657615a16615800565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615a8757865180516001600160a01b031684528601518516868401529585019591830191600101615a57565b50909a9950505050505050505050565b60018060a01b03841681528260208201526060604082015260006115bb60608301846156cf565b600060208284031215615ad057600080fd5b81516001600160c01b038116811461306057600080fd5b6001600160a01b0383168152604060208201819052600090614bf4908301846156cf565b828152604060208201526000614bf460408301846156cf565b600060208284031215615b3657600080fd5b5051919050565b6001600160a01b03841681526101608101615b65602083018580358252602090810135910152565b615b7f606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615be660a08401826156cf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906115bb9083018486615c07565b60018060a01b0385168152836020820152606060408201526000615c7d606083018486615c07565b9695505050505050565b600082601f830112615c9857600080fd5b81516020615ca861517d83615101565b82815260059290921b84018101918181019086841115615cc757600080fd5b8286015b848110156152f3578051615cde8161524d565b8352918301918301615ccb565b60008060408385031215615cfe57600080fd5b82516001600160401b0380821115615d1557600080fd5b615d2186838701615c87565b93506020850151915080821115615d3757600080fd5b50615d4485828601615c87565b9150509250929050565b8381526040602082015260006115bb604083018486615c07565b60006020808385031215615d7b57600080fd5b82516001600160401b03811115615d9157600080fd5b8301601f81018513615da257600080fd5b8051615db061517d82615101565b81815260059190911b82018301908381019087831115615dcf57600080fd5b928401925b82841015615df6578351615de781614a67565b82529284019290840190615dd4565b979650505050505050565b600060208284031215615e1357600080fd5b81516130608161524d565b600061ffff80831681811415615e3657615e36615800565b6001019392505050565b600060208284031215615e5257600080fd5b81516001600160e01b03198116811461306057600080fd5b60006001600160601b0380831681851681830481118215151615615e9057615e90615800565b02949350505050565b60006001600160601b0380841680615eb357615eb36158f4565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e67657451756f72756d4269745265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c6964617465436875ab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd475265676973747279436f6f7264696e61746f722e5f646572656769737465724f5265676973747279436f6f7264696e61746f722e5f72656769737465724f70654269746d61705574696c732e6f72646572656442797465734172726179546f42a2646970667358221220c54efdc441b7ab5c292c79c0ba4c4250c55da2675b4df1faf620ffd38a6065c264736f6c634300080c0033", } // ContractSFFLRegistryCoordinatorABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLRegistryRollup/binding.go b/contracts/bindings/SFFLRegistryRollup/binding.go index dbc65b8d..76848004 100644 --- a/contracts/bindings/SFFLRegistryRollup/binding.go +++ b/contracts/bindings/SFFLRegistryRollup/binding.go @@ -82,7 +82,7 @@ type StateRootUpdateMessage struct { // ContractSFFLRegistryRollupMetaData contains all meta data concerning the ContractSFFLRegistryRollup contract. var ContractSFFLRegistryRollupMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"PAUSED_UPDATE_OPERATOR_SET\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSED_UPDATE_STATE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"aggregator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getApk\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorWeight\",\"inputs\":[{\"name\":\"pubkeyHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumThreshold\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateRoot\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTotalWeight\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"quorumThreshold\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_aggregator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nextOperatorUpdateId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setInitialOperatorSet\",\"inputs\":[{\"name\":\"operators\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]},{\"name\":\"_nextOperatorUpdateId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setQuorumThreshold\",\"inputs\":[{\"name\":\"newQuorumThreshold\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAndGetStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"agreement\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateOperatorSet\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structOperatorSetUpdate.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"operators\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}]},{\"name\":\"signatureInfo\",\"type\":\"tuple\",\"internalType\":\"structRollupOperators.SignatureInfo\",\"components\":[{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateStateRoot\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"signatureInfo\",\"type\":\"tuple\",\"internalType\":\"structRollupOperators.SignatureInfo\",\"components\":[{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateRootUpdated\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61432880620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063d5d4bb5a11610097578063ef02445811610071578063ef024458146103f5578063f2fde38b146103fc578063f4db05711461040f578063fabc1cbc1461041757600080fd5b8063d5d4bb5a146103a4578063dd64766e146103b7578063e0f5d9f0146103ca57600080fd5b80638da5cb5b116100d35780638da5cb5b1461035a57806390540c371461036b578063b128aeee1461037e578063b3a9e53b1461039157600080fd5b8063715018a61461032c57806382616b7b14610334578063886f11951461034757600080fd5b80632db52ea511610166578063595c6a6711610140578063595c6a67146102ab5780635ac86ab7146102b35780635c975abb146102e65780636f5b9918146102ee57600080fd5b80632db52ea51461025f5780632f65284e146102725780634afa71b91461029357600080fd5b80630510c191146101ae57806306aba0e1146101cd57806310d67a2f146101f2578063136439dd146102075780631fb4d4111461021a578063245a7bfc1461022d575b600080fd5b6101b6600181565b60405160ff90911681526020015b60405180910390f35b60cd546001600160801b03165b6040516001600160801b0390911681526020016101c4565b610205610200366004613802565b61042a565b005b61020561021536600461381f565b6104e6565b610205610228366004613862565b610625565b60ce5461024790600160401b90046001600160a01b031681565b6040516001600160a01b0390911681526020016101c4565b61020561026d3660046138c7565b6106fb565b6102856102803660046138f4565b61070e565b6040519081526020016101c4565b60cd54600160801b90046001600160801b03166101da565b610205610832565b6102d66102c1366004613997565b606654600160ff9092169190911b9081161490565b60405190151581526020016101c4565b606654610285565b60408051808201825260008082526020918201528151808301835260cb5480825260cc549183019182528351908152905191810191909152016101c4565b6102056108f9565b6102056103423660046139ba565b61090d565b606554610247906001600160a01b031681565b6033546001600160a01b0316610247565b610205610379366004613a1b565b610ab7565b61020561038c366004613b69565b610c0c565b61028561039f366004613c3d565b610cf5565b6102856103b2366004613c70565b610d26565b6101da6103c536600461381f565b610e85565b60ce546103dd906001600160401b031681565b6040516001600160401b0390911681526020016101c4565b60646101da565b61020561040a366004613802565b610ea2565b6101b6600081565b61020561042536600461381f565b610f18565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a19190613cb4565b6001600160a01b0316336001600160a01b0316146104da5760405162461bcd60e51b81526004016104d190613cd1565b60405180910390fd5b6104e381611074565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561052e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105529190613d1b565b61056e5760405162461bcd60e51b81526004016104d190613d3d565b606654818116146105e75760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016104d1565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6066546001906002908116141561067a5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016104d1565b61068f6106868461116b565b60ca908461119b565b6106cc5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016104d1565b6106f66106dc6020850185613d85565b6106ec6040860160208701613da0565b8560a00135611591565b505050565b6107036115f7565b6104e360ca82611651565b60006060850135158015906107265750608085013515155b6107725760405162461bcd60e51b815260206004820152601860248201527f456d707479204e45415220444120636f6d6d69746d656e74000000000000000060448201526064016104d1565b60006097816107846020890189613d85565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906107b39190613da0565b6001600160401b0316815260208101919091526040016000205490508061081e57826108135760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b60448201526064016104d1565b61081e86858561170a565b6108288686610d26565b9695505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561087a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089e9190613d1b565b6108ba5760405162461bcd60e51b81526004016104d190613d3d565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6109016115f7565b61090b600061171b565b565b606654600090600190811614156109625760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016104d1565b60ce546001600160401b031661097b6020850185613da0565b6001600160401b0316146109c45760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c81b595cdcd859d948125160821b60448201526064016104d1565b6109d06106868461176d565b610a0d5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016104d1565b610a1a6020840184613da0565b610a25906001613dd1565b60ce805467ffffffffffffffff19166001600160401b03929092169190911790556106f6610a566040850185613dfc565b808060200260200160405190810160405280939291908181526020016000905b82821015610aa257610a9360608302860136819003810190613e4b565b81526020019060010190610a76565b505050505060ca61178090919063ffffffff16565b600054610100900460ff1615808015610ad75750600054600160ff909116105b80610af15750303b158015610af1575060005460ff166001145b610b545760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104d1565b6000805460ff191660011790558015610b77576000805461ff0019166101001790555b610b8282600061199d565b610b8b8461171b565b610b9660ca86611651565b60ce805468010000000000000000600160e01b031916600160401b6001600160a01b038616021790558015610c05576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60ce54600160401b90046001600160a01b03163314610c6d5760405162461bcd60e51b815260206004820152601860248201527f53656e646572206973206e6f742061676772656761746f72000000000000000060448201526064016104d1565b60cd546001600160801b031615610cc65760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722073657420616c726561647920696e697469616c697a656460448201526064016104d1565b610cd160ca83611780565b60ce805467ffffffffffffffff19166001600160401b039290921691909117905550565b63ffffffff821660009081526097602090815260408083206001600160401b03851684529091529020545b92915050565b600080609781610d396020870187613d85565b63ffffffff1663ffffffff1681526020019081526020016000206000856020016020810190610d689190613da0565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a001358114610dde5760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f747300000000000000000060448201526064016104d1565b610e7d610dee6020850185613802565b602085013583610e016040880188613e67565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e43925050506060890189613e67565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8792505050565b949350505050565b600081815260ca60205260408120546001600160801b0316610d20565b610eaa6115f7565b6001600160a01b038116610f0f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d1565b6104e38161171b565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f9190613cb4565b6001600160a01b0316336001600160a01b031614610fbf5760405162461bcd60e51b81526004016104d190613cd1565b60665419811960665419161461103d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016104d1565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161061a565b6001600160a01b0381166111025760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016104d1565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b60008160405160200161117e9190613ead565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820181905260038501549091906001600160801b03168061120f5760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722073657420776173206e6f7420696e697469616c697a656460448201526064016104d1565b600061121b8580613f17565b90506001600160401b0381111561123457611234613a75565b60405190808252806020026020018201604052801561125d578160200160208202803683370190505b50905060005b61126d8680613f17565b9050811015611452576112c06112838780613f17565b8381811061129357611293613f60565b9050604002018036038101906112a99190613f76565b805160009081526020918201519091526040902090565b8282815181106112d2576112d2613f60565b6020908102919091010152801561136957816112ef600183613f92565b815181106112ff576112ff613f60565b602002602001015160001c82828151811061131c5761131c613f60565b602002602001015160001c116113695760405162461bcd60e51b8152602060048201526012602482015271141d589ad95e5cc81b9bdd081cdbdc9d195960721b60448201526064016104d1565b600088600001600084848151811061138357611383613f60565b6020908102919091018101518252810191909152604001600020546001600160801b03169050806113f65760405162461bcd60e51b815260206004820152601860248201527f4f70657261746f7220686173207a65726f20776569676874000000000000000060448201526064016104d1565b6114306114038880613f17565b8481811061141357611413613f60565b9050604002018036038101906114299190613f76565b8690611bc2565b945061143c8185613f92565b935050808061144a90613fa9565b915050611263565b5061148061145f84611c65565b6040805180820190915260018a0154815260028a0154602082015290611bc2565b92506000806114b3888661149c368b90038b0160208c01614033565b6114ae368c90038c0160a08d01613f76565b611d00565b91509150816115045760405162461bcd60e51b815260206004820152601e60248201527f50616972696e6720707265636f6d70696c652063616c6c206661696c6564000060448201526064016104d1565b806115485760405162461bcd60e51b815260206004820152601460248201527314da59db985d1d5c99481a5cc81a5b9d985b1a5960621b60448201526064016104d1565b600389015460649061156c906001600160801b03600160801b820481169116614072565b61157691906140b7565b6001600160801b0316841015955050505050505b9392505050565b63ffffffff831660008181526097602090815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6033546001600160a01b0316331461090b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b60646001600160801b03821611156116bd5760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b60648201526084016104d1565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b816117158482610625565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008160405160200161117e91906140dd565b604080516080810182526000918101828152606082018390528152602081019190915260408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b8451811015611962578481815181106117ea576117ea613f60565b6020026020010151935060006118158560000151805160009081526020918201519091526040902090565b60008181526020898152604090912054908701519192506001600160801b0390811691168114156118815760405162461bcd60e51b81526020600482015260166024820152754f70657261746f7220697320757020746f206461746560501b60448201526064016104d1565b602086015161189082866141b5565b61189a91906141dd565b6020878101516000858152918b9052604090912080546001600160801b0319166001600160801b0392831617905590945081166118e55785516118de908690611bc2565b945061190a565b60208601516001600160801b031661190a576119076114298760000151611c65565b94505b6020808701516040516001600160801b03909116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a25050808061195a90613fa9565b9150506117cf565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b6065546001600160a01b03161580156119be57506001600160a01b03821615155b611a405760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016104d1565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2611a8382611074565b5050565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611ac7906034016040516020818303038152906040528688611e83565b9150915081611b115760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016104d1565b6000611b1c82611eac565b9050600080611b518a604051602001611b3791815260200190565b604051602081830303815290604052888560400151611e83565b9150915081611ba25760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016104d1565b611bb3611bae82611f70565b611fa3565b9b9a5050505050505050505050565b6040805180820190915260008082526020820152611bde613713565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015611c1d57611c1f565bfe5b5080611c5d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016104d1565b505092915050565b60408051808201909152600080825260208201528151158015611c8a57506020820151155b15611ca8575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206142d38339815191528460200151611cdb91906141ff565b611cf3906000805160206142d3833981519152613f92565b905292915050565b919050565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110611d4857611d48613f60565b60200201518951600160200201518a60200151600060028110611d6d57611d6d613f60565b60200201518b60200151600160028110611d8957611d89613f60565b602090810291909101518c518d830151604051611de69a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c611e0991906141ff565b9050611e75611e1b6114298884611fd2565b611e2361205a565b611e6b611e5c85611e56604080518082018252600080825260209182015281518083019092526001825260029082015290565b90611fd2565b611e658c61211a565b90611bc2565b886201d4c06121aa565b909890975095505050505050565b600060606000611e92866123ce565b9050611e9f818686612400565b9250925050935093915050565b604080516080810182526000808252602082018190529181018290526060810182905290611ed9836124db565b90506040518060800160405280611f0983600081518110611efc57611efc613f60565b602002602001015161250e565b8152602001611f2483600181518110611efc57611efc613f60565b8152602001611f4c83600281518110611f3f57611f3f613f60565b6020026020010151612515565b8152602001611f6783600381518110611f3f57611f3f613f60565b90529392505050565b604080518082018252600080825260209182015281518083019092528251825280830190820152606090610d2090612617565b6000806000602084511115611fb9576020611fbc565b83515b60209485015194036008029390931c9392505050565b6040805180820190915260008082526020820152611fee613731565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611c1d575080611c5d5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016104d1565b61206261374f565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b60408051808201909152600080825260208201526000808061214a6000805160206142d3833981519152866141ff565b90505b612156816126a7565b90935091506000805160206142d3833981519152828309831415612190576040805180820190915290815260208101919091529392505050565b6000805160206142d383398151915260018208905061214d565b6040805180820182528681526020808201869052825180840190935286835282018490526000918291906121dc613774565b60005b60028110156123a15760006121f5826006614213565b905084826002811061220957612209613f60565b6020020151518361221b836000614232565b600c811061222b5761222b613f60565b602002015284826002811061224257612242613f60565b602002015160200151838260016122599190614232565b600c811061226957612269613f60565b602002015283826002811061228057612280613f60565b6020020151515183612293836002614232565b600c81106122a3576122a3613f60565b60200201528382600281106122ba576122ba613f60565b60200201515160016020020151836122d3836003614232565b600c81106122e3576122e3613f60565b60200201528382600281106122fa576122fa613f60565b60200201516020015160006002811061231557612315613f60565b602002015183612326836004614232565b600c811061233657612336613f60565b602002015283826002811061234d5761234d613f60565b60200201516020015160016002811061236857612368613f60565b602002015183612379836005614232565b600c811061238957612389613f60565b6020020152508061239981613fa9565b9150506121df565b506123aa613793565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b606081805190602001206040516020016123ea91815260200190565b6040516020818303038152906040529050919050565b60006060600061240f85612729565b90506000806000612421848a89612823565b815192955090935091501580806124355750815b6124815760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016104d1565b60008161249d57604051806020016040528060008152506124c9565b6124c9866124ac600188613f92565b815181106124bc576124bc613f60565b6020026020010151612c47565b919b919a509098505050505050505050565b604080518082018252600080825260209182015281518083019092528251825280830190820152606090610d2090612c71565b6000610d20825b600060218260000151111561256c5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016104d1565b600080600061257a85612e5d565b9194509250905060008160018111156125955761259561424a565b146125e25760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016104d1565b60008386602001516125f49190614232565b805190915060208410156108285760208490036101000a90049695505050505050565b6060600080600061262785612e5d565b9194509250905060008160018111156126425761264261424a565b1461268f5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016104d1565b61269e856020015184846131a7565b95945050505050565b600080806000805160206142d383398151915260036000805160206142d3833981519152866000805160206142d383398151915288890909089050600061271d827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206142d3833981519152613285565b91959194509092505050565b60606000612736836124db565b9050600081516001600160401b0381111561275357612753613a75565b60405190808252806020026020018201604052801561279857816020015b60408051808201909152606080825260208201528152602001906001900390816127715790505b50905060005b825181101561281b5760006127cb8483815181106127be576127be613f60565b6020026020010151612617565b905060405180604001604052808281526020016127e7836124db565b8152508383815181106127fc576127fc613f60565b602002602001018190525050808061281390613fa9565b91505061279e565b509392505050565b600060608180806128338761332d565b9050600086905060008061285a604051806040016040528060608152602001606081525090565b60005b8c51811015612c1f578c818151811061287857612878613f60565b60200260200101519150828461288e9190614232565b935061289b600188614232565b9650836128f3578151805160209091012085146128ee5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016104d1565b6129b0565b815151602011612955578151805160209091012085146128ee5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016104d1565b846129638360000151613467565b146129b05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016104d1565b6129bc60106001614232565b8260200151511415612a355785518414156129d657612c1f565b60008685815181106129ea576129ea613f60565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110612a1557612a15613f60565b60200260200101519050612a288161348f565b9650600194505050612c0d565b60028260200151511415612bc5576000612a4e836134c5565b9050600081600081518110612a6557612a65613f60565b016020015160f81c90506000612a7c600283614260565b612a87906002614282565b90506000612a98848360ff166134e9565b90506000612aa68b8a6134e9565b90506000612ab4838361351f565b905060ff851660021480612acb575060ff85166003145b15612b0557808351148015612ae05750808251145b15612af257612aef818b614232565b99505b50600160ff1b9950612c1f945050505050565b60ff85161580612b18575060ff85166001145b15612b6e5782518114612b385750600160ff1b9950612c1f945050505050565b612b5f8860200151600181518110612b5257612b52613f60565b602002602001015161348f565b9a509750612c0d945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016104d1565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016104d1565b80612c1781613fa9565b91505061285d565b50600160ff1b841486612c3287866134e9565b909e909d50909b509950505050505050505050565b60208101518051606091610d2091612c6190600190613f92565b815181106127be576127be613f60565b6060600080612c7f84612e5d565b91935090915060019050816001811115612c9b57612c9b61424a565b14612ce85760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016104d1565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612d015790505090506000835b8651811015612e525760208210612d9a5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016104d1565b600080612dd76040518060400160405280858c60000151612dbb9190613f92565b8152602001858c60200151612dd09190614232565b9052612e5d565b509150915060405180604001604052808383612df39190614232565b8152602001848b60200151612e089190614232565b815250858581518110612e1d57612e1d613f60565b6020908102919091010152612e33600185614232565b9350612e3f8183614232565b612e499084614232565b92505050612d2e565b508152949350505050565b600080600080846000015111612eb55760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016104d1565b6020840151805160001a607f8111612eda5760006001600094509450945050506131a0565b60b78111612f56576000612eef608083613f92565b905080876000015111612f445760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016104d1565b600195509350600092506131a0915050565b60bf8111613045576000612f6b60b783613f92565b905080876000015111612fc05760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016104d1565b600183015160208290036101000a9004612fda8183614232565b8851116130295760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016104d1565b613034826001614232565b96509450600093506131a092505050565b60f781116130c057600061305a60c083613f92565b9050808760000151116130af5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016104d1565b6001955093508492506131a0915050565b60006130cd60f783613f92565b9050808760000151116131225760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016104d1565b600183015160208290036101000a900461313c8183614232565b8851116131845760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016104d1565b61318f826001614232565b96509450600193506131a092505050565b9193909250565b60606000826001600160401b038111156131c3576131c3613a75565b6040519080825280601f01601f1916602001820160405280156131ed576020820181803683370190505b50905080516000141561320157905061158a565b600061320d8587614232565b90506020820160005b6132216020876142a5565b8110156132585782518252613237602084614232565b9250613244602083614232565b91508061325081613fa9565b915050613216565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b600080613290613793565b6132986137b1565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015611c1d5750826133225760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016104d1565b505195945050505050565b606060008251600261333f9190614213565b6001600160401b0381111561335657613356613a75565b6040519080825280601f01601f191660200182016040528015613380576020820181803683370190505b50905060005b83518110156134605760048482815181106133a3576133a3613f60565b01602001516001600160f81b031916901c826133c0836002614213565b815181106133d0576133d0613f60565b60200101906001600160f81b031916908160001a90535060108482815181106133fb576133fb613f60565b016020015161340d919060f81c614260565b60f81b8261341c836002614213565b613427906001614232565b8151811061343757613437613f60565b60200101906001600160f81b031916908160001a9053508061345881613fa9565b915050613386565b5092915050565b600060208251101561347b57506020015190565b81806020019051810190610d2091906142b9565b600060606020836000015110156134b0576134a98361359b565b90506134bc565b6134b983612617565b90505b61158a81613467565b6060610d206134e483602001516000815181106127be576127be613f60565b61332d565b6060825182106135085750604080516020810190915260008152610d20565b61158a838384865161351a9190613f92565b6135a6565b6000805b8084511180156135335750808351115b8015613584575082818151811061354c5761354c613f60565b602001015160f81c60f81b6001600160f81b03191684828151811061357357613573613f60565b01602001516001600160f81b031916145b1561158a578061359381613fa9565b915050613523565b6060610d20826136fd565b6060816135b481601f614232565b10156135f35760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016104d1565b826135fe8382614232565b101561363d5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016104d1565b6136478284614232565b8451101561368b5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016104d1565b6060821580156136aa57604051915060008252602082016040526136f4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156136e35780518352602092830192016136cb565b5050858452601f01601f1916604052505b50949350505050565b6060610d208260200151600084600001516131a7565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b60405180604001604052806137626137cf565b815260200161376f6137cf565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146104e357600080fd5b60006020828403121561381457600080fd5b813561158a816137ed565b60006020828403121561383157600080fd5b5035919050565b600060c0828403121561384a57600080fd5b50919050565b600060e0828403121561384a57600080fd5b60008060e0838503121561387557600080fd5b61387f8484613838565b915060c08301356001600160401b0381111561389a57600080fd5b6138a685828601613850565b9150509250929050565b80356001600160801b0381168114611cfb57600080fd5b6000602082840312156138d957600080fd5b61158a826138b0565b60006080828403121561384a57600080fd5b600080600080610100858703121561390b57600080fd5b6139158686613838565b935060c08501356001600160401b038082111561393157600080fd5b61393d888389016138e2565b945060e087013591508082111561395357600080fd5b818701915087601f83011261396757600080fd5b81358181111561397657600080fd5b88602082850101111561398857600080fd5b95989497505060200194505050565b6000602082840312156139a957600080fd5b813560ff8116811461158a57600080fd5b600080604083850312156139cd57600080fd5b82356001600160401b03808211156139e457600080fd5b90840190606082870312156139f857600080fd5b90925060208401359080821115613a0e57600080fd5b506138a685828601613850565b60008060008060808587031215613a3157600080fd5b613a3a856138b0565b93506020850135613a4a816137ed565b92506040850135613a5a816137ed565b91506060850135613a6a816137ed565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613aad57613aad613a75565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613adb57613adb613a75565b604052919050565b600060408284031215613af557600080fd5b613afd613a8b565b9050813581526020820135602082015292915050565b600060608284031215613b2557600080fd5b613b2d613a8b565b9050613b398383613ae3565b8152613b47604083016138b0565b602082015292915050565b80356001600160401b0381168114611cfb57600080fd5b60008060408385031215613b7c57600080fd5b82356001600160401b0380821115613b9357600080fd5b818501915085601f830112613ba757600080fd5b8135602082821115613bbb57613bbb613a75565b613bc9818360051b01613ab3565b82815281810193506060928302850182019289841115613be857600080fd5b948201945b83861015613c0e57613bff8a87613b13565b85529485019493820193613bed565b509550613c1c878201613b52565b9450505050509250929050565b803563ffffffff81168114611cfb57600080fd5b60008060408385031215613c5057600080fd5b613c5983613c29565b9150613c6760208401613b52565b90509250929050565b60008060e08385031215613c8357600080fd5b613c8d8484613838565b915060c08301356001600160401b03811115613ca857600080fd5b6138a6858286016138e2565b600060208284031215613cc657600080fd5b815161158a816137ed565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215613d2d57600080fd5b8151801515811461158a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600060208284031215613d9757600080fd5b61158a82613c29565b600060208284031215613db257600080fd5b61158a82613b52565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115613df357613df3613dbb565b01949350505050565b6000808335601e19843603018112613e1357600080fd5b8301803591506001600160401b03821115613e2d57600080fd5b6020019150606081023603821315613e4457600080fd5b9250929050565b600060608284031215613e5d57600080fd5b61158a8383613b13565b6000808335601e19843603018112613e7e57600080fd5b8301803591506001600160401b03821115613e9857600080fd5b602001915036819003821315613e4457600080fd5b60c0810163ffffffff613ebf84613c29565b168252613ece60208401613b52565b6001600160401b03808216602085015280613eeb60408701613b52565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b6000808335601e19843603018112613f2e57600080fd5b8301803591506001600160401b03821115613f4857600080fd5b6020019150600681901b3603821315613e4457600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215613f8857600080fd5b61158a8383613ae3565b600082821015613fa457613fa4613dbb565b500390565b6000600019821415613fbd57613fbd613dbb565b5060010190565b600082601f830112613fd557600080fd5b604051604081018181106001600160401b0382111715613ff757613ff7613a75565b806040525080604084018581111561400e57600080fd5b845b81811015614028578035835260209283019201614010565b509195945050505050565b60006080828403121561404557600080fd5b61404d613a8b565b6140578484613fc4565b81526140668460408501613fc4565b60208201529392505050565b60006001600160801b038083168185168183048111821515161561409857614098613dbb565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b03808416806140d1576140d16140a1565b92169190910492915050565b60006020808352608083016001600160401b03806140fa87613b52565b168386015261410a838701613b52565b604082821681880152808801359150601e1988360301821261412b57600080fd5b9087019081358381111561413e57600080fd5b60609350838102360389131561415357600080fd5b87840184905293849052908401926000919060a088015b818410156141a8578535815286860135878201526001600160801b036141918488016138b0565b16818401529484019460019390930192840161416a565b9998505050505050505050565b60006001600160801b03838116908316818110156141d5576141d5613dbb565b039392505050565b60006001600160801b03808316818516808303821115613df357613df3613dbb565b60008261420e5761420e6140a1565b500690565b600081600019048311821515161561422d5761422d613dbb565b500290565b6000821982111561424557614245613dbb565b500190565b634e487b7160e01b600052602160045260246000fd5b600060ff831680614273576142736140a1565b8060ff84160691505092915050565b600060ff821660ff84168082101561429c5761429c613dbb565b90039392505050565b6000826142b4576142b46140a1565b500490565b6000602082840312156142cb57600080fd5b505191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a26469706673582212205f733973b6969ddef6c0355f7a866c6dfd32cb775782cada92ae016109ccc1d564736f6c634300080c0033", + Bin: "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61421180620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101795760003560e01c8063715018a6116100d9578063d5d4bb5a11610087578063d5d4bb5a1461034e578063dd64766e14610361578063e0f5d9f014610374578063ef0244581461039f578063f2fde38b146103a6578063f4db0571146103b9578063fabc1cbc146103c157600080fd5b8063715018a6146102d657806382616b7b146102de578063886f1195146102f15780638da5cb5b1461030457806390540c3714610315578063b128aeee14610328578063b3a9e53b1461033b57600080fd5b80632db52ea5116101365780632db52ea5146102245780632f65284e146102375780634afa71b914610258578063595c6a67146102705780635ac86ab7146102785780635c975abb146102ab5780636f5b9918146102b357600080fd5b80630510c1911461017e57806306aba0e11461019d57806310d67a2f146101c2578063136439dd146101d75780631fb4d411146101ea578063245a7bfc146101fd575b600080fd5b610186600181565b60405160ff90911681526020015b60405180910390f35b60cd546001600160801b03165b6040516001600160801b039091168152602001610194565b6101d56101d03660046135fd565b6103d4565b005b6101d56101e536600461361a565b610490565b6101d56101f836600461365d565b6105bd565b60ce5461021790600160401b90046001600160a01b031681565b60405161019491906136ab565b6101d56102323660046136d6565b610646565b61024a610245366004613703565b610659565b604051908152602001610194565b60cd54600160801b90046001600160801b03166101aa565b6101d5610778565b61029b6102863660046137a6565b606654600160ff9092169190911b9081161490565b6040519015158152602001610194565b60665461024a565b6102bb610832565b60408051825181526020928301519281019290925201610194565b6101d5610855565b6101d56102ec3660046137c9565b610869565b606554610217906001600160a01b031681565b6033546001600160a01b0316610217565b6101d561032336600461382a565b6109c6565b6101d5610336366004613978565b610b16565b61024a610349366004613a4c565b610bfa565b61024a61035c366004613a7f565b610c2b565b6101aa61036f36600461361a565b610d84565b60ce54610387906001600160401b031681565b6040516001600160401b039091168152602001610194565b60646101aa565b6101d56103b43660046135fd565b610da1565b610186600081565b6101d56103cf36600461361a565b610e17565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610427573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044b9190613ac3565b6001600160a01b0316336001600160a01b0316146104845760405162461bcd60e51b815260040161047b90613ae0565b60405180910390fd5b61048d81610f6e565b50565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906104c09033906004016136ab565b602060405180830381865afa1580156104dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105019190613b2a565b61051d5760405162461bcd60e51b815260040161047b90613b4c565b606654818116146105915760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b606482015260840161047b565b6066819055604051818152339060008051602061419c833981519152906020015b60405180910390a250565b606654600190600290811614156105e65760405162461bcd60e51b815260040161047b90613b94565b6105fb6105f284611065565b60ca9084611095565b6106175760405162461bcd60e51b815260040161047b90613bc7565b6106416106276020850185613bef565b6106376040860160208701613c0a565b8560a00135611486565b505050565b61064e6114ec565b61048d60ca82611546565b60006060850135158015906106715750608085013515155b6106b85760405162461bcd60e51b8152602060048201526018602482015277115b5c1d1e48139150548811104818dbdb5b5a5d1b595b9d60421b604482015260640161047b565b60006097816106ca6020890189613bef565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906106f99190613c0a565b6001600160401b0316815260208101919091526040016000205490508061076457826107595760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b604482015260640161047b565b6107648685856115ff565b61076e8686610c2b565b9695505050505050565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906107a89033906004016136ab565b602060405180830381865afa1580156107c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e99190613b2a565b6108055760405162461bcd60e51b815260040161047b90613b4c565b6000196066819055604051908152339060008051602061419c8339815191529060200160405180910390a2565b61083a6134d4565b506040805180820190915260cb54815260cc54602082015290565b61085d6114ec565b6108676000611610565b565b606654600090600190811614156108925760405162461bcd60e51b815260040161047b90613b94565b60ce546001600160401b03166108ab6020850185613c0a565b6001600160401b0316146108f45760405162461bcd60e51b815260206004820152601060248201526f15dc9bdb99c81b595cdcd859d948125160821b604482015260640161047b565b6109006105f284611662565b61091c5760405162461bcd60e51b815260040161047b90613bc7565b6109296020840184613c0a565b610934906001613c3b565b60ce805467ffffffffffffffff19166001600160401b03929092169190911790556106416109656040850185613c66565b808060200260200160405190810160405280939291908181526020016000905b828210156109b1576109a260608302860136819003810190613cb5565b81526020019060010190610985565b505050505060ca61167590919063ffffffff16565b600054610100900460ff16158080156109e65750600054600160ff909116105b80610a005750303b158015610a00575060005460ff166001145b610a635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161047b565b6000805460ff191660011790558015610a86576000805461ff0019166101001790555b610a91826000611877565b610a9a84611610565b610aa560ca86611546565b60ce8054600160401b600160e01b031916600160401b6001600160a01b038616021790558015610b0f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60ce54600160401b90046001600160a01b03163314610b725760405162461bcd60e51b815260206004820152601860248201527729b2b73232b91034b9903737ba1030b3b3b932b3b0ba37b960411b604482015260640161047b565b60cd546001600160801b031615610bcb5760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722073657420616c726561647920696e697469616c697a6564604482015260640161047b565b610bd660ca83611675565b60ce805467ffffffffffffffff19166001600160401b039290921691909117905550565b63ffffffff821660009081526097602090815260408083206001600160401b03851684529091529020545b92915050565b600080609781610c3e6020870187613bef565b63ffffffff1663ffffffff1681526020019081526020016000206000856020016020810190610c6d9190613c0a565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a001358114610cdd5760405162461bcd60e51b81526020600482015260176024820152764d69736d61746368696e6720737461746520726f6f747360481b604482015260640161047b565b610d7c610ced60208501856135fd565b602085013583610d006040880188613cd1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d42925050506060890189613cd1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061194f92505050565b949350505050565b600081815260ca60205260408120546001600160801b0316610c25565b610da96114ec565b6001600160a01b038116610e0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047b565b61048d81611610565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190613ac3565b6001600160a01b0316336001600160a01b031614610ebe5760405162461bcd60e51b815260040161047b90613ae0565b606654198119606654191614610f375760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b606482015260840161047b565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016105b2565b6001600160a01b038116610ffc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161047b565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6000816040516020016110789190613d17565b604051602081830303815290604052805190602001209050919050565b6040805180820190915260008082526020820181905260038501549091906001600160801b0316806111095760405162461bcd60e51b815260206004820181905260248201527f4f70657261746f722073657420776173206e6f7420696e697469616c697a6564604482015260640161047b565b60006111158580613d81565b90506001600160401b0381111561112e5761112e613884565b604051908082528060200260200182016040528015611157578160200160208202803683370190505b50905060005b6111678680613d81565b9050811015611347576111ba61117d8780613d81565b8381811061118d5761118d613dca565b9050604002018036038101906111a39190613de0565b805160009081526020918201519091526040902090565b8282815181106111cc576111cc613dca565b6020908102919091010152801561126357816111e9600183613dfc565b815181106111f9576111f9613dca565b602002602001015160001c82828151811061121657611216613dca565b602002602001015160001c116112635760405162461bcd60e51b8152602060048201526012602482015271141d589ad95e5cc81b9bdd081cdbdc9d195960721b604482015260640161047b565b600088600001600084848151811061127d5761127d613dca565b6020908102919091018101518252810191909152604001600020546001600160801b03169050806112eb5760405162461bcd60e51b815260206004820152601860248201527713dc195c985d1bdc881a185cc81e995c9bc81dd95a59da1d60421b604482015260640161047b565b6113256112f88880613d81565b8481811061130857611308613dca565b90506040020180360381019061131e9190613de0565b8690611a8a565b94506113318185613dfc565b935050808061133f90613e13565b91505061115d565b5061137561135484611b21565b6040805180820190915260018a0154815260028a0154602082015290611a8a565b92506000806113a88886611391368b90038b0160208c01613e9d565b6113a3368c90038c0160a08d01613de0565b611bb0565b91509150816113f95760405162461bcd60e51b815260206004820152601e60248201527f50616972696e6720707265636f6d70696c652063616c6c206661696c65640000604482015260640161047b565b8061143d5760405162461bcd60e51b815260206004820152601460248201527314da59db985d1d5c99481a5cc81a5b9d985b1a5960621b604482015260640161047b565b6003890154606490611461906001600160801b03600160801b820481169116613edc565b61146b9190613f21565b6001600160801b0316841015955050505050505b9392505050565b63ffffffff831660008181526097602090815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6033546001600160a01b031633146108675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161047b565b60646001600160801b03821611156115b25760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b606482015260840161047b565b6003820180546001600160801b03808416600160801b810291909216179091556040517f2b71b2179969a005ac6fd9c196134b364ff40069a17dd72faa96c4a00e73e9f490600090a25050565b8161160a84826105bd565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000816040516020016110789190613f47565b61167d6134ee565b60408051808201909152600184015481526002840154602082015260038401546001600160801b031660005b845181101561183c578481815181106116c4576116c4613dca565b6020026020010151935060006116ef8560000151805160009081526020918201519091526040902090565b60008181526020898152604090912054908701519192506001600160801b03908116911681141561175b5760405162461bcd60e51b81526020600482015260166024820152754f70657261746f7220697320757020746f206461746560501b604482015260640161047b565b602086015161176a828661401f565b6117749190614047565b6020878101516000858152918b9052604090912080546001600160801b0319166001600160801b0392831617905590945081166117bf5785516117b8908690611a8a565b94506117e4565b60208601516001600160801b03166117e4576117e161131e8760000151611b21565b94505b6020808701516040516001600160801b03909116815283917f7714c619c02393ccf44c3de606bec5c80ae7a6077504b74887fb39f335e98adc910160405180910390a25050808061183490613e13565b9150506116a9565b506003850180546001600160801b0319166001600160801b039290921691909117905580516001850155602001516002909301929092555050565b6065546001600160a01b031615801561189857506001600160a01b03821615155b61191a5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161047b565b6066819055604051818152339060008051602061419c8339815191529060200160405180910390a261194b82610f6e565b5050565b6040516bffffffffffffffffffffffff19606087901b1660208201526000908190819061198f906034016040516020818303038152906040528688611d0f565b91509150816119d95760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b604482015260640161047b565b60006119e482611d38565b9050600080611a198a6040516020016119ff91815260200190565b604051602081830303815290604052888560400151611d0f565b9150915081611a6a5760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f7420657869737400000000604482015260640161047b565b611a7b611a7682611dfc565b611e0f565b9b9a5050505050505050505050565b611a926134d4565b611a9a61350e565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015611ad957611adb565bfe5b5080611b195760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640161047b565b505092915050565b611b296134d4565b8151158015611b3a57506020820151155b15611b58575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206141bc8339815191528460200151611b8b9190614069565b611ba3906000805160206141bc833981519152613dfc565b905292915050565b919050565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110611bf857611bf8613dca565b60200201518951600160200201518a60200151600060028110611c1d57611c1d613dca565b60200201518b60200151600160028110611c3957611c39613dca565b602090810291909101518c518d830151604051611c969a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c611cb99190614069565b9050611d01611ccb61131e8884611e3e565b611cd3611eba565b611cf7611ce885611ce2611f7a565b90611e3e565b611cf18c611f9b565b90611a8a565b886201d4c061201f565b909890975095505050505050565b600060606000611d1e86612243565b9050611d2b818686612275565b9250925050935093915050565b604080516080810182526000808252602082018190529181018290526060810182905290611d6583612350565b90506040518060800160405280611d9583600081518110611d8857611d88613dca565b6020026020010151612363565b8152602001611db083600181518110611d8857611d88613dca565b8152602001611dd883600281518110611dcb57611dcb613dca565b602002602001015161236a565b8152602001611df383600381518110611dcb57611dcb613dca565b90529392505050565b6060610c25611e0a8361240c565b612439565b6000806000602084511115611e25576020611e28565b83515b60209485015194036008029390931c9392505050565b611e466134d4565b611e4e61352c565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015611ad9575080611b195760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640161047b565b611ec261354a565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b611f826134d4565b5060408051808201909152600181526002602082015290565b611fa36134d4565b60008080611fbf6000805160206141bc83398151915286614069565b90505b611fcb816124c4565b90935091506000805160206141bc833981519152828309831415612005576040805180820190915290815260208101919091529392505050565b6000805160206141bc833981519152600182089050611fc2565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061205161356f565b60005b600281101561221657600061206a82600661407d565b905084826002811061207e5761207e613dca565b6020020151518361209083600061409c565b600c81106120a0576120a0613dca565b60200201528482600281106120b7576120b7613dca565b602002015160200151838260016120ce919061409c565b600c81106120de576120de613dca565b60200201528382600281106120f5576120f5613dca565b602002015151518361210883600261409c565b600c811061211857612118613dca565b602002015283826002811061212f5761212f613dca565b602002015151600160200201518361214883600361409c565b600c811061215857612158613dca565b602002015283826002811061216f5761216f613dca565b60200201516020015160006002811061218a5761218a613dca565b60200201518361219b83600461409c565b600c81106121ab576121ab613dca565b60200201528382600281106121c2576121c2613dca565b6020020151602001516001600281106121dd576121dd613dca565b6020020151836121ee83600561409c565b600c81106121fe576121fe613dca565b6020020152508061220e81613e13565b915050612054565b5061221f61358e565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060818051906020012060405160200161225f91815260200190565b6040516020818303038152906040529050919050565b60006060600061228485612546565b90506000806000612296848a89612640565b815192955090935091501580806122aa5750815b6122f65760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e000000000000604482015260640161047b565b600081612312576040518060200160405280600081525061233e565b61233e86612321600188613dfc565b8151811061233157612331613dca565b6020026020010151612a64565b919b919a509098505050505050505050565b6060610c2561235e8361240c565b612a8e565b6000610c25825b60006021826000015111156123915760405162461bcd60e51b815260040161047b906140b4565b600080600061239f85612c74565b9194509250905060008160018111156123ba576123ba6140eb565b146123d75760405162461bcd60e51b815260040161047b906140b4565b60008386602001516123e9919061409c565b8051909150602084101561076e5760208490036101000a90049695505050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b6060600080600061244985612c74565b919450925090506000816001811115612464576124646140eb565b146124ac5760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b21029262810313cba32b9903b30b63ab29760411b604482015260640161047b565b6124bb85602001518484612faa565b95945050505050565b600080806000805160206141bc83398151915260036000805160206141bc833981519152866000805160206141bc83398151915288890909089050600061253a827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206141bc833981519152613088565b91959194509092505050565b6060600061255383612350565b9050600081516001600160401b0381111561257057612570613884565b6040519080825280602002602001820160405280156125b557816020015b604080518082019091526060808252602082015281526020019060019003908161258e5790505b50905060005b82518110156126385760006125e88483815181106125db576125db613dca565b6020026020010151612439565b9050604051806040016040528082815260200161260483612350565b81525083838151811061261957612619613dca565b602002602001018190525050808061263090613e13565b9150506125bb565b509392505050565b6000606081808061265087613130565b90506000869050600080612677604051806040016040528060608152602001606081525090565b60005b8c51811015612a3c578c818151811061269557612695613dca565b6020026020010151915082846126ab919061409c565b93506126b860018861409c565b9650836127105781518051602090910120851461270b5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b604482015260640161047b565b6127cd565b8151516020116127725781518051602090910120851461270b5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c20686173680000000000604482015260640161047b565b84612780836000015161326a565b146127cd5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f64652068617368000000000000604482015260640161047b565b6127d96010600161409c565b82602001515114156128525785518414156127f357612a3c565b600086858151811061280757612807613dca565b602001015160f81c60f81b60f81c9050600083602001518260ff168151811061283257612832613dca565b6020026020010151905061284581613292565b9650600194505050612a2a565b600282602001515114156129e257600061286b836132c8565b905060008160008151811061288257612882613dca565b016020015160f81c90506000612899600283614101565b6128a4906002614123565b905060006128b5848360ff166132ec565b905060006128c38b8a6132ec565b905060006128d18383613322565b905060ff8516600214806128e8575060ff85166003145b15612922578083511480156128fd5750808251145b1561290f5761290c818b61409c565b99505b50600160ff1b9950612a3c945050505050565b60ff85161580612935575060ff85166001145b1561298b57825181146129555750600160ff1b9950612a3c945050505050565b61297c886020015160018151811061296f5761296f613dca565b6020026020010151613292565b9a509750612a2a945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b606482015260840161047b565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e000000604482015260640161047b565b80612a3481613e13565b91505061267a565b50600160ff1b841486612a4f87866132ec565b909e909d50909b509950505050505050505050565b60208101518051606091610c2591612a7e90600190613dfc565b815181106125db576125db613dca565b6060600080612a9c84612c74565b91935090915060019050816001811115612ab857612ab86140eb565b14612aff5760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b210292628103634b9ba103b30b63ab29760491b604482015260640161047b565b6040805160208082526104208201909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081612b185790505090506000835b8651811015612c695760208210612bb15760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b606482015260840161047b565b600080612bee6040518060400160405280858c60000151612bd29190613dfc565b8152602001858c60200151612be7919061409c565b9052612c74565b509150915060405180604001604052808383612c0a919061409c565b8152602001848b60200151612c1f919061409c565b815250858581518110612c3457612c34613dca565b6020908102919091010152612c4a60018561409c565b9350612c56818361409c565b612c60908461409c565b92505050612b45565b508152949350505050565b600080600080846000015111612cc75760405162461bcd60e51b81526020600482015260186024820152772926281034ba32b69031b0b73737ba10313290373ab6361760411b604482015260640161047b565b6020840151805160001a607f8111612cec576000600160009450945094505050612fa3565b60b78111612d64576000612d01608083613dfc565b905080876000015111612d525760405162461bcd60e51b815260206004820152601960248201527824b73b30b634b2102926281039b437b93a1039ba3934b7339760391b604482015260640161047b565b60019550935060009250612fa3915050565b60bf8111612e4e576000612d7960b783613dfc565b905080876000015111612dce5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e00604482015260640161047b565b600183015160208290036101000a9004612de8818361409c565b885111612e325760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b210292628103637b7339039ba3934b7339760411b604482015260640161047b565b612e3d82600161409c565b9650945060009350612fa392505050565b60f78111612ec3576000612e6360c083613dfc565b905080876000015111612eb25760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2102926281039b437b93a103634b9ba1760491b604482015260640161047b565b600195509350849250612fa3915050565b6000612ed060f783613dfc565b905080876000015111612f255760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e000000604482015260640161047b565b600183015160208290036101000a9004612f3f818361409c565b885111612f875760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b604482015260640161047b565b612f9282600161409c565b9650945060019350612fa392505050565b9193909250565b60606000826001600160401b03811115612fc657612fc6613884565b6040519080825280601f01601f191660200182016040528015612ff0576020820181803683370190505b50905080516000141561300457905061147f565b6000613010858761409c565b90506020820160005b613024602087614146565b81101561305b578251825261303a60208461409c565b925061304760208361409c565b91508061305381613e13565b915050613019565b5060006001602087066020036101000a039050808251168119845116178252839450505050509392505050565b60008061309361358e565b61309b6135ac565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015611ad95750826131255760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640161047b565b505195945050505050565b6060600082516002613142919061407d565b6001600160401b0381111561315957613159613884565b6040519080825280601f01601f191660200182016040528015613183576020820181803683370190505b50905060005b83518110156132635760048482815181106131a6576131a6613dca565b01602001516001600160f81b031916901c826131c383600261407d565b815181106131d3576131d3613dca565b60200101906001600160f81b031916908160001a90535060108482815181106131fe576131fe613dca565b0160200151613210919060f81c614101565b60f81b8261321f83600261407d565b61322a90600161409c565b8151811061323a5761323a613dca565b60200101906001600160f81b031916908160001a9053508061325b81613e13565b915050613189565b5092915050565b600060208251101561327e57506020015190565b81806020019051810190610c25919061415a565b600060606020836000015110156132b3576132ac8361339e565b90506132bf565b6132bc83612439565b90505b61147f8161326a565b6060610c256132e783602001516000815181106125db576125db613dca565b613130565b60608251821061330b5750604080516020810190915260008152610c25565b61147f838384865161331d9190613dfc565b6133a9565b6000805b8084511180156133365750808351115b8015613387575082818151811061334f5761334f613dca565b602001015160f81c60f81b6001600160f81b03191684828151811061337657613376613dca565b01602001516001600160f81b031916145b1561147f578061339681613e13565b915050613326565b6060610c25826134be565b6060816133b781601f61409c565b10156133d55760405162461bcd60e51b815260040161047b90614173565b826133e0838261409c565b10156133fe5760405162461bcd60e51b815260040161047b90614173565b613408828461409c565b8451101561344c5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161047b565b60608215801561346b57604051915060008252602082016040526134b5565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156134a457805183526020928301920161348c565b5050858452601f01601f1916604052505b50949350505050565b6060610c25826020015160008460000151612faa565b604051806040016040528060008152602001600081525090565b60405180604001604052806135016134d4565b8152600060209091015290565b60405180608001604052806004906020820280368337509192915050565b60405180606001604052806003906020820280368337509192915050565b604051806040016040528061355d6135ca565b815260200161356a6135ca565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461048d57600080fd5b60006020828403121561360f57600080fd5b813561147f816135e8565b60006020828403121561362c57600080fd5b5035919050565b600060c0828403121561364557600080fd5b50919050565b600060e0828403121561364557600080fd5b60008060e0838503121561367057600080fd5b61367a8484613633565b915060c08301356001600160401b0381111561369557600080fd5b6136a18582860161364b565b9150509250929050565b6001600160a01b0391909116815260200190565b80356001600160801b0381168114611bab57600080fd5b6000602082840312156136e857600080fd5b61147f826136bf565b60006080828403121561364557600080fd5b600080600080610100858703121561371a57600080fd5b6137248686613633565b935060c08501356001600160401b038082111561374057600080fd5b61374c888389016136f1565b945060e087013591508082111561376257600080fd5b818701915087601f83011261377657600080fd5b81358181111561378557600080fd5b88602082850101111561379757600080fd5b95989497505060200194505050565b6000602082840312156137b857600080fd5b813560ff8116811461147f57600080fd5b600080604083850312156137dc57600080fd5b82356001600160401b03808211156137f357600080fd5b908401906060828703121561380757600080fd5b9092506020840135908082111561381d57600080fd5b506136a18582860161364b565b6000806000806080858703121561384057600080fd5b613849856136bf565b93506020850135613859816135e8565b92506040850135613869816135e8565b91506060850135613879816135e8565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156138bc576138bc613884565b60405290565b604051601f8201601f191681016001600160401b03811182821017156138ea576138ea613884565b604052919050565b60006040828403121561390457600080fd5b61390c61389a565b9050813581526020820135602082015292915050565b60006060828403121561393457600080fd5b61393c61389a565b905061394883836138f2565b8152613956604083016136bf565b602082015292915050565b80356001600160401b0381168114611bab57600080fd5b6000806040838503121561398b57600080fd5b82356001600160401b03808211156139a257600080fd5b818501915085601f8301126139b657600080fd5b81356020828211156139ca576139ca613884565b6139d8818360051b016138c2565b828152818101935060609283028501820192898411156139f757600080fd5b948201945b83861015613a1d57613a0e8a87613922565b855294850194938201936139fc565b509550613a2b878201613961565b9450505050509250929050565b803563ffffffff81168114611bab57600080fd5b60008060408385031215613a5f57600080fd5b613a6883613a38565b9150613a7660208401613961565b90509250929050565b60008060e08385031215613a9257600080fd5b613a9c8484613633565b915060c08301356001600160401b03811115613ab757600080fd5b6136a1858286016136f1565b600060208284031215613ad557600080fd5b815161147f816135e8565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215613b3c57600080fd5b8151801515811461147f57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6020808252600e908201526d145d5bdc9d5b481b9bdd081b595d60921b604082015260600190565b600060208284031215613c0157600080fd5b61147f82613a38565b600060208284031215613c1c57600080fd5b61147f82613961565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115613c5d57613c5d613c25565b01949350505050565b6000808335601e19843603018112613c7d57600080fd5b8301803591506001600160401b03821115613c9757600080fd5b6020019150606081023603821315613cae57600080fd5b9250929050565b600060608284031215613cc757600080fd5b61147f8383613922565b6000808335601e19843603018112613ce857600080fd5b8301803591506001600160401b03821115613d0257600080fd5b602001915036819003821315613cae57600080fd5b60c0810163ffffffff613d2984613a38565b168252613d3860208401613961565b6001600160401b03808216602085015280613d5560408701613961565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b6000808335601e19843603018112613d9857600080fd5b8301803591506001600160401b03821115613db257600080fd5b6020019150600681901b3603821315613cae57600080fd5b634e487b7160e01b600052603260045260246000fd5b600060408284031215613df257600080fd5b61147f83836138f2565b600082821015613e0e57613e0e613c25565b500390565b6000600019821415613e2757613e27613c25565b5060010190565b600082601f830112613e3f57600080fd5b604051604081018181106001600160401b0382111715613e6157613e61613884565b8060405250806040840185811115613e7857600080fd5b845b81811015613e92578035835260209283019201613e7a565b509195945050505050565b600060808284031215613eaf57600080fd5b613eb761389a565b613ec18484613e2e565b8152613ed08460408501613e2e565b60208201529392505050565b60006001600160801b0382811684821681151582840482111615613f0257613f02613c25565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b60006001600160801b0383811680613f3b57613f3b613f0b565b92169190910492915050565b60006020808352608083016001600160401b0380613f6487613961565b1683860152613f74838701613961565b604082821681880152808801359150601e19883603018212613f9557600080fd5b90870190813583811115613fa857600080fd5b606093508381023603891315613fbd57600080fd5b87840184905293849052908401926000919060a088015b81841015614012578535815286860135878201526001600160801b03613ffb8488016136bf565b168184015294840194600193909301928401613fd4565b9998505050505050505050565b60006001600160801b038381169083168181101561403f5761403f613c25565b039392505050565b60006001600160801b03828116848216808303821115613c5d57613c5d613c25565b60008261407857614078613f0b565b500690565b600081600019048311821515161561409757614097613c25565b500290565b600082198211156140af576140af613c25565b500190565b6020808252601a908201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600060ff83168061411457614114613f0b565b8060ff84160691505092915050565b600060ff821660ff84168082101561413d5761413d613c25565b90039392505050565b60008261415557614155613f0b565b500490565b60006020828403121561416c57600080fd5b5051919050565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b60408201526060019056feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a2646970667358221220cf8919b4690c16d6ad82e02f8c4cab17f42b134664340e3b78072554a1940b4c64736f6c634300080c0033", } // ContractSFFLRegistryRollupABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/SFFLServiceManager/binding.go b/contracts/bindings/SFFLServiceManager/binding.go index 138cf0a1..19a51fe8 100644 --- a/contracts/bindings/SFFLServiceManager/binding.go +++ b/contracts/bindings/SFFLServiceManager/binding.go @@ -80,8 +80,8 @@ type StateRootUpdateMessage struct { // ContractSFFLServiceManagerMetaData contains all meta data concerning the ContractSFFLServiceManager contract. var ContractSFFLServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_taskManager\",\"type\":\"address\",\"internalType\":\"contractSFFLTaskManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"PAUSED_UPDATE_STATE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"operatorAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateRoot\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"taskManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSFFLTaskManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAndGetStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"agreement\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateStateRoot\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateRootUpdated\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101006040523480156200001257600080fd5b506040516200429a3803806200429a83398101604081905262000035916200014f565b6001600160a01b0380851660c052808416608052821660a0528383836200005b62000074565b5050506001600160a01b031660e05250620001b7915050565b603354610100900460ff1615620000e15760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff908116101562000134576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200014c57600080fd5b50565b600080600080608085870312156200016657600080fd5b8451620001738162000136565b6020860151909450620001868162000136565b6040860151909350620001998162000136565b6060860151909250620001ac8162000136565b939692955090935050565b60805160a05160c05160e051614032620002686000396000818161030d01528181610c700152818161187a01526118b601526000818161027e01528181610eee01528181610fc2015261104101526000818161099001528181610aeb01528181610b82015281816113a20152818161152501526115c40152600081816107b701528181610846015281816108c601528181610e9a01528181610f66015281816112e0015261148001526140326000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063715018a6116100de578063a98fb35511610097578063d5d4bb5a11610071578063d5d4bb5a14610368578063e481af9d1461037b578063f2fde38b14610383578063fabc1cbc1461039657600080fd5b8063a98fb3551461032f578063b3a9e53b14610342578063c4d66de81461035557600080fd5b8063715018a6146102b6578063886f1195146102be5780638da5cb5b146102d15780639926ee7d146102e2578063a364f4da146102f5578063a50a640e1461030857600080fd5b806338c8ee641161013057806338c8ee6414610213578063485cc95514610226578063595c6a67146102395780635ac86ab7146102415780635c975abb146102745780636b3aa72e1461027c57600080fd5b80630510c191146101785780630f5af14a1461019757806310d67a2f146101ac578063136439dd146101bf5780632f65284e146101d257806333cfb7b7146101f3575b600080fd5b610180600081565b60405160ff90911681526020015b60405180910390f35b6101aa6101a53660046132e2565b6103a9565b005b6101aa6101ba36600461334d565b61047d565b6101aa6101cd36600461336a565b610530565b6101e56101e0366004613395565b61066f565b60405190815260200161018e565b61020661020136600461334d565b610792565b60405161018e9190613438565b6101aa61022136600461334d565b610c65565b6101aa610234366004613485565b610cdd565b6101aa610db4565b61026461024f3660046134c2565b60cb54600160ff9092169190911b9081161490565b604051901515815260200161018e565b60cb546101e5565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161018e565b6101aa610e7b565b60ca5461029e906001600160a01b031681565b6066546001600160a01b031661029e565b6101aa6102f0366004613592565b610e8f565b6101aa61030336600461334d565b610f5b565b61029e7f000000000000000000000000000000000000000000000000000000000000000081565b6101aa61033d36600461363c565b611022565b6101e56103503660046136b2565b611076565b6101aa61036336600461334d565b6110a5565b6101e56103763660046136e7565b61117c565b6102066112da565b6101aa61039136600461334d565b6116a3565b6101aa6103a436600461336a565b611719565b60cb54600090600190811614156104075760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064015b60405180910390fd5b6104118383611875565b61044e5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016103fe565b61047861045e6020850185613735565b61046e6040860160208701613752565b8560a001356119aa565b505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f4919061376d565b6001600160a01b0316336001600160a01b0316146105245760405162461bcd60e51b81526004016103fe9061378a565b61052d81611a0e565b50565b60ca5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059c91906137e4565b6105b85760405162461bcd60e51b81526004016103fe906137ff565b60cb54818116146106315760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016103fe565b60cb81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60006060850135158015906106875750608085013515155b6106d35760405162461bcd60e51b815260206004820152601860248201527f456d707479204e45415220444120636f6d6d69746d656e74000000000000000060448201526064016103fe565b600080806106e46020890189613735565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906107139190613752565b6001600160401b0316815260208101919091526040016000205490508061077e57826107735760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b60448201526064016103fe565b61077e868585611b05565b610788868661117c565b9695505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108229190613847565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561088d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b19190613860565b90506001600160c01b038116158061094b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190613889565b60ff16155b1561096b5760408051600080825260208201909252905b50949350505050565b600061097f826001600160c01b0316611b16565b90506000805b8251811015610a55577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106109cf576109cf6138a6565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a379190613847565b610a4190836138d2565b915080610a4d816138ea565b915050610985565b506000816001600160401b03811115610a7057610a706134df565b604051908082528060200260200182016040528015610a99578160200160208202803683370190505b5090506000805b8451811015610c58576000858281518110610abd57610abd6138a6565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190613847565b905060005b81811015610c42576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190613905565b60000151868681518110610c0a57610c0a6138a6565b6001600160a01b039092166020928302919091019091015284610c2c816138ea565b9550508080610c3a906138ea565b915050610b5b565b5050508080610c50906138ea565b915050610aa0565b5090979650505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461052d5760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c65720060448201526064016103fe565b603354610100900460ff1615808015610cfd5750603354600160ff909116105b80610d175750303b158015610d17575060335460ff166001145b610d335760405162461bcd60e51b81526004016103fe90613974565b6033805460ff191660011790558015610d56576033805461ff0019166101001790555b610d5f83611bd8565b610d6a826000611c2a565b8015610478576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60ca5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610dfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2091906137e4565b610e3c5760405162461bcd60e51b81526004016103fe906137ff565b60001960cb81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610e83611d10565b610e8d6000611bd8565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ed75760405162461bcd60e51b81526004016103fe906139c2565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90610f259085908590600401613a87565b600060405180830381600087803b158015610f3f57600080fd5b505af1158015610f53573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa35760405162461bcd60e51b81526004016103fe906139c2565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b15801561100757600080fd5b505af115801561101b573d6000803e3d6000fd5b5050505050565b61102a611d10565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610fed908490600401613ad2565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b603354610100900460ff16158080156110c55750603354600160ff909116105b806110df5750303b1580156110df575060335460ff166001145b6110fb5760405162461bcd60e51b81526004016103fe90613974565b6033805460ff19166001179055801561111e576033805461ff0019166101001790555b61112782611d6a565b611132600080611c2a565b8015611178576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080808061118e6020870187613735565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906111bd9190613752565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a0013581146112335760405162461bcd60e51b815260206004820152601760248201527f4d69736d61746368696e6720737461746520726f6f747300000000000000000060448201526064016103fe565b6112d2611243602085018561334d565b6020850135836112566040880188613ae5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611298925050506060890189613ae5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611dd592505050565b949350505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561133c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113609190613889565b60ff1690508061137e57505060408051600081526020810190915290565b6000805b8281101561143357604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156113f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114159190613847565b61141f90836138d2565b91508061142b816138ea565b915050611382565b506000816001600160401b0381111561144e5761144e6134df565b604051908082528060200260200182016040528015611477578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115009190613889565b60ff1681101561169957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190613847565b905060005b81811015611684576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116369190613905565b6000015185858151811061164c5761164c6138a6565b6001600160a01b03909216602092830291909101909101528361166e816138ea565b945050808061167c906138ea565b91505061159d565b50508080611691906138ea565b91505061147e565b5090949350505050565b6116ab611d10565b6001600160a01b0381166117105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103fe565b61052d81611bd8565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611790919061376d565b6001600160a01b0316336001600160a01b0316146117c05760405162461bcd60e51b81526004016103fe9061378a565b60cb5419811960cb5419161461183e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016103fe565b60cb81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610664565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663292f7a4e6118b086611f12565b438660037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190613b32565b611941906002613b4f565b61194b9190613b91565b6040518563ffffffff1660e01b815260040161196a9493929190613d3e565b6040805180830381865afa158015611986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109629190613e9d565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6001600160a01b038116611a9c5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016103fe565b60ca54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160ca80546001600160a01b0319166001600160a01b0392909216919091179055565b81611b1084826103a9565b50505050565b6060600080611b2484611f42565b61ffff166001600160401b03811115611b3f57611b3f6134df565b6040519080825280601f01601f191660200182016040528015611b69576020820181803683370190505b5090506000805b825182108015611b81575061010081105b15611699576001811b935085841615611bc8578060f81b838381518110611baa57611baa6138a6565b60200101906001600160f81b031916908160001a9053508160010191505b611bd1816138ea565b9050611b70565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60ca546001600160a01b0316158015611c4b57506001600160a01b03821615155b611ccd5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016103fe565b60cb81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261117882611a0e565b6066546001600160a01b03163314610e8d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103fe565b603354610100900460ff166117105760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016103fe565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611e15906034016040516020818303038152906040528688611f6d565b9150915081611e5f5760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b60448201526064016103fe565b6000611e6a82611f96565b9050600080611e9f8a604051602001611e8591815260200190565b604051602081830303815290604052888560400151611f6d565b9150915081611ef05760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f742065786973740000000060448201526064016103fe565b611f01611efc8261205a565b61208d565b955050505050505b95945050505050565b600081604051602001611f259190613ec9565b604051602081830303815290604052805190602001209050919050565b6000805b821561109f57611f57600184613f35565b9092169180611f6581613f4c565b915050611f46565b600060606000611f7c866120bc565b9050611f898186866120ee565b9250925050935093915050565b604080516080810182526000808252602082018190529181018290526060810182905290611fc3836121c9565b90506040518060800160405280611ff383600081518110611fe657611fe66138a6565b60200260200101516121fc565b815260200161200e83600181518110611fe657611fe66138a6565b815260200161203683600281518110612029576120296138a6565b6020026020010151612203565b815260200161205183600381518110612029576120296138a6565b90529392505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061109f90612305565b60008060006020845111156120a35760206120a6565b83515b60209485015194036008029390931c9392505050565b606081805190602001206040516020016120d891815260200190565b6040516020818303038152906040529050919050565b6000606060006120fd8561238c565b9050600080600061210f848a89612486565b815192955090935091501580806121235750815b61216f5760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e00000000000060448201526064016103fe565b60008161218b57604051806020016040528060008152506121b7565b6121b78661219a600188613f35565b815181106121aa576121aa6138a6565b60200260200101516128aa565b919b919a509098505050505050505050565b60408051808201825260008082526020918201528151808301909252825182528083019082015260609061109f906128d4565b600061109f825b600060218260000151111561225a5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103fe565b600080600061226885612ac0565b91945092509050600081600181111561228357612283613f6e565b146122d05760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420524c5020627974657333322076616c75652e00000000000060448201526064016103fe565b60008386602001516122e291906138d2565b805190915060208410156107885760208490036101000a90049695505050505050565b6060600080600061231585612ac0565b91945092509050600081600181111561233057612330613f6e565b1461237d5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c502062797465732076616c75652e000000000000000060448201526064016103fe565b611f0985602001518484612e0a565b60606000612399836121c9565b9050600081516001600160401b038111156123b6576123b66134df565b6040519080825280602002602001820160405280156123fb57816020015b60408051808201909152606080825260208201528152602001906001900390816123d45790505b50905060005b825181101561247e57600061242e848381518110612421576124216138a6565b6020026020010151612305565b9050604051806040016040528082815260200161244a836121c9565b81525083838151811061245f5761245f6138a6565b6020026020010181905250508080612476906138ea565b915050612401565b509392505050565b6000606081808061249687612ee5565b905060008690506000806124bd604051806040016040528060608152602001606081525090565b60005b8c51811015612882578c81815181106124db576124db6138a6565b6020026020010151915082846124f191906138d2565b93506124fe6001886138d2565b965083612556578151805160209091012085146125515760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b60448201526064016103fe565b612613565b8151516020116125b8578151805160209091012085146125515760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c2068617368000000000060448201526064016103fe565b846125c6836000015161301f565b146126135760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f6465206861736800000000000060448201526064016103fe565b61261f601060016138d2565b826020015151141561269857855184141561263957612882565b600086858151811061264d5761264d6138a6565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110612678576126786138a6565b6020026020010151905061268b81613047565b9650600194505050612870565b600282602001515114156128285760006126b18361307d565b90506000816000815181106126c8576126c86138a6565b016020015160f81c905060006126df600283613f84565b6126ea906002613fa6565b905060006126fb848360ff166130a1565b905060006127098b8a6130a1565b9050600061271783836130d7565b905060ff85166002148061272e575060ff85166003145b15612768578083511480156127435750808251145b1561275557612752818b6138d2565b99505b50600160ff1b9950612882945050505050565b60ff8516158061277b575060ff85166001145b156127d1578251811461279b5750600160ff1b9950612882945050505050565b6127c288602001516001815181106127b5576127b56138a6565b6020026020010151613047565b9a509750612870945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b60648201526084016103fe565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e00000060448201526064016103fe565b8061287a816138ea565b9150506124c0565b50600160ff1b84148661289587866130a1565b909e909d50909b509950505050505050505050565b6020810151805160609161109f916128c490600190613f35565b81518110612421576124216138a6565b60606000806128e284612ac0565b919350909150600190508160018111156128fe576128fe613f6e565b1461294b5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c50206c6973742076616c75652e00000000000000000060448201526064016103fe565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816129645790505090506000835b8651811015612ab557602082106129fd5760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b60648201526084016103fe565b600080612a3a6040518060400160405280858c60000151612a1e9190613f35565b8152602001858c60200151612a3391906138d2565b9052612ac0565b509150915060405180604001604052808383612a5691906138d2565b8152602001848b60200151612a6b91906138d2565b815250858581518110612a8057612a806138a6565b6020908102919091010152612a966001856138d2565b9350612aa281836138d2565b612aac90846138d2565b92505050612991565b508152949350505050565b600080600080846000015111612b185760405162461bcd60e51b815260206004820152601860248201527f524c50206974656d2063616e6e6f74206265206e756c6c2e000000000000000060448201526064016103fe565b6020840151805160001a607f8111612b3d576000600160009450945094505050612e03565b60b78111612bb9576000612b52608083613f35565b905080876000015111612ba75760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420524c502073686f727420737472696e672e0000000000000060448201526064016103fe565b60019550935060009250612e03915050565b60bf8111612ca8576000612bce60b783613f35565b905080876000015111612c235760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e0060448201526064016103fe565b600183015160208290036101000a9004612c3d81836138d2565b885111612c8c5760405162461bcd60e51b815260206004820152601860248201527f496e76616c696420524c50206c6f6e6720737472696e672e000000000000000060448201526064016103fe565b612c978260016138d2565b9650945060009350612e0392505050565b60f78111612d23576000612cbd60c083613f35565b905080876000015111612d125760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420524c502073686f7274206c6973742e00000000000000000060448201526064016103fe565b600195509350849250612e03915050565b6000612d3060f783613f35565b905080876000015111612d855760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e00000060448201526064016103fe565b600183015160208290036101000a9004612d9f81836138d2565b885111612de75760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b60448201526064016103fe565b612df28260016138d2565b9650945060019350612e0392505050565b9193909250565b60606000826001600160401b03811115612e2657612e266134df565b6040519080825280601f01601f191660200182016040528015612e50576020820181803683370190505b509050805160001415612e64579050612ede565b6000612e7085876138d2565b90506020820160005b612e84602087613fc9565b811015612ebb5782518252612e9a6020846138d2565b9250612ea76020836138d2565b915080612eb3816138ea565b915050612e79565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b6060600082516002612ef79190613fdd565b6001600160401b03811115612f0e57612f0e6134df565b6040519080825280601f01601f191660200182016040528015612f38576020820181803683370190505b50905060005b8351811015613018576004848281518110612f5b57612f5b6138a6565b01602001516001600160f81b031916901c82612f78836002613fdd565b81518110612f8857612f886138a6565b60200101906001600160f81b031916908160001a9053506010848281518110612fb357612fb36138a6565b0160200151612fc5919060f81c613f84565b60f81b82612fd4836002613fdd565b612fdf9060016138d2565b81518110612fef57612fef6138a6565b60200101906001600160f81b031916908160001a90535080613010816138ea565b915050612f3e565b5092915050565b600060208251101561303357506020015190565b8180602001905181019061109f9190613847565b600060606020836000015110156130685761306183613153565b9050613074565b61307183612305565b90505b612ede8161301f565b606061109f61309c8360200151600081518110612421576124216138a6565b612ee5565b6060825182106130c0575060408051602081019091526000815261109f565b612ede83838486516130d29190613f35565b61315e565b6000805b8084511180156130eb5750808351115b801561313c5750828181518110613104576131046138a6565b602001015160f81c60f81b6001600160f81b03191684828151811061312b5761312b6138a6565b01602001516001600160f81b031916145b15612ede578061314b816138ea565b9150506130db565b606061109f826132b4565b60608161316c81601f6138d2565b10156131ab5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016103fe565b826131b683826138d2565b10156131f55760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016103fe565b6131ff82846138d2565b845110156132435760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016103fe565b6060821580156132625760405191506000825260208201604052610962565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561329b578051835260209283019201613283565b5050858452601f01601f19166040525050949350505050565b606061109f826020015160008460000151612e0a565b600060c082840312156132dc57600080fd5b50919050565b60008060e083850312156132f557600080fd5b6132ff84846132ca565b915060c08301356001600160401b0381111561331a57600080fd5b8301610180818603121561332d57600080fd5b809150509250929050565b6001600160a01b038116811461052d57600080fd5b60006020828403121561335f57600080fd5b8135612ede81613338565b60006020828403121561337c57600080fd5b5035919050565b6000608082840312156132dc57600080fd5b60008060008061010085870312156133ac57600080fd5b6133b686866132ca565b935060c08501356001600160401b03808211156133d257600080fd5b6133de88838901613383565b945060e08701359150808211156133f457600080fd5b818701915087601f83011261340857600080fd5b81358181111561341757600080fd5b88602082850101111561342957600080fd5b95989497505060200194505050565b6020808252825182820181905260009190848201906040850190845b818110156134795783516001600160a01b031683529284019291840191600101613454565b50909695505050505050565b6000806040838503121561349857600080fd5b82356134a381613338565b9150602083013561332d81613338565b60ff8116811461052d57600080fd5b6000602082840312156134d457600080fd5b8135612ede816134b3565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613517576135176134df565b60405290565b60006001600160401b0380841115613537576135376134df565b604051601f8501601f19908116603f0116810190828211818310171561355f5761355f6134df565b8160405280935085815286868601111561357857600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156135a557600080fd5b82356135b081613338565b915060208301356001600160401b03808211156135cc57600080fd5b90840190606082870312156135e057600080fd5b6135e86134f5565b8235828111156135f757600080fd5b83019150601f8201871361360a57600080fd5b6136198783356020850161351d565b815260208301356020820152604083013560408201528093505050509250929050565b60006020828403121561364e57600080fd5b81356001600160401b0381111561366457600080fd5b8201601f8101841361367557600080fd5b6112d28482356020840161351d565b63ffffffff8116811461052d57600080fd5b80356001600160401b03811681146136ad57600080fd5b919050565b600080604083850312156136c557600080fd5b82356136d081613684565b91506136de60208401613696565b90509250929050565b60008060e083850312156136fa57600080fd5b61370484846132ca565b915060c08301356001600160401b0381111561371f57600080fd5b61372b85828601613383565b9150509250929050565b60006020828403121561374757600080fd5b8135612ede81613684565b60006020828403121561376457600080fd5b612ede82613696565b60006020828403121561377f57600080fd5b8151612ede81613338565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b805180151581146136ad57600080fd5b6000602082840312156137f657600080fd5b612ede826137d4565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561385957600080fd5b5051919050565b60006020828403121561387257600080fd5b81516001600160c01b0381168114612ede57600080fd5b60006020828403121561389b57600080fd5b8151612ede816134b3565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156138e5576138e56138bc565b500190565b60006000198214156138fe576138fe6138bc565b5060010190565b60006040828403121561391757600080fd5b604051604081018181106001600160401b0382111715613939576139396134df565b604052825161394781613338565b815260208301516bffffffffffffffffffffffff8116811461396857600080fd5b60208201529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613a6057602081850181015186830182015201613a44565b81811115613a72576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152613ab160a0840182613a3a565b90506020840151606084015260408401516080840152809150509392505050565b602081526000612ede6020830184613a3a565b6000808335601e19843603018112613afc57600080fd5b8301803591506001600160401b03821115613b1657600080fd5b602001915036819003821315613b2b57600080fd5b9250929050565b600060208284031215613b4457600080fd5b8151612ede81613684565b600063ffffffff80831681851681830481118215151615613b7257613b726138bc565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680613ba857613ba8613b7b565b92169190910492915050565b6000808335601e19843603018112613bcb57600080fd5b83016020810192503590506001600160401b03811115613bea57600080fd5b8060051b3603831315613b2b57600080fd5b8183526000602080850194508260005b85811015613c37578135613c1f81613684565b63ffffffff1687529582019590820190600101613c0c565b509495945050505050565b6000808335601e19843603018112613c5957600080fd5b83016020810192503590506001600160401b03811115613c7857600080fd5b8060061b3603831315613b2b57600080fd5b81835260208301925060008160005b84811015613cc157813586526020808301359087015260409586019590910190600101613c99565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b60008383855260208086019550808560051b8301018460005b87811015610c5857848303601f19018952613d1f8288613bb4565b613d2a858284613bfc565b9a86019a9450505090830190600101613d04565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e060608201526000613d758485613bb4565b61018060e0850152613d8c61026085018284613bfc565b915050613d9c6020860186613c42565b60df198086850301610100870152613db5848385613c8a565b9350613dc46040890189613c42565b93509150610120818786030181880152613ddf858585613c8a565b94506101409350613df584880160608b01613ccb565b60e08901356101c08801526101008901356101e0880152613e18818a018a613bb4565b935090508187860301610200880152613e32858483613bfc565b945050613e4183890189613bb4565b935091508086850301610220870152613e5b848484613bfc565b9350613e6b610160890189613bb4565b93509150808685030161024087015250613e86838383613ceb565b9350505050611f09608083018463ffffffff169052565b60008060408385031215613eb057600080fd5b613eb9836137d4565b9150602083015190509250929050565b60c081018235613ed881613684565b63ffffffff168252613eec60208401613696565b6001600160401b03808216602085015280613f0960408701613696565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b600082821015613f4757613f476138bc565b500390565b600061ffff80831681811415613f6457613f646138bc565b6001019392505050565b634e487b7160e01b600052602160045260246000fd5b600060ff831680613f9757613f97613b7b565b8060ff84160691505092915050565b600060ff821660ff841680821015613fc057613fc06138bc565b90039392505050565b600082613fd857613fd8613b7b565b500490565b6000816000190483118215151615613ff757613ff76138bc565b50029056fea26469706673582212206b49f44a732073e27c3a9e378dc6ca5f71dbb87cad49c70ab565d3ea98612a5f64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_taskManager\",\"type\":\"address\",\"internalType\":\"contractSFFLTaskManager\"},{\"name\":\"_operatorSetUpdateRegistry\",\"type\":\"address\",\"internalType\":\"contractSFFLOperatorSetUpdateRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"PAUSED_UPDATE_STATE_ROOT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"operatorAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStateRoot\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"operatorSetUpdateRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSFFLOperatorSetUpdateRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"taskManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSFFLTaskManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAndGetStorageValue\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proofParams\",\"type\":\"tuple\",\"internalType\":\"structSFFLRegistryBase.ProofParams\",\"components\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"storageKey\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"storageTrieWitness\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"agreement\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateStateRoot\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StateRootUpdated\",\"inputs\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101206040523480156200001257600080fd5b506040516200439e3803806200439e833981016040819052620000359162000156565b6001600160a01b0380861660c052808516608052831660a0528484846200005b6200007b565b5050506001600160a01b0391821660e052166101005250620001d6915050565b603354610100900460ff1615620000e85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff90811610156200013b576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200015357600080fd5b50565b600080600080600060a086880312156200016f57600080fd5b85516200017c816200013d565b60208701519095506200018f816200013d565b6040870151909450620001a2816200013d565b6060870151909350620001b5816200013d565b6080870151909250620001c8816200013d565b809150509295509295909350565b60805160a05160c05160e051610100516140fe620002a0600039600081816101d20152610ee201526000818161032801528181610c71015281816118b901526118ff0152600081816102ad015281816110030152818161108c0152611e0001526000818161099101528181610aec01528181610b83015281816113e601528181611569015261160801526000818161079801528181610847015281816108c701528181610e8e01528181610faf01528181611324015281816114c40152611dac01526140fe6000f3fe608060405234801561001057600080fd5b506004361061016e5760003560e01c8063715018a6116100ce578063a98fb35511610087578063a98fb3551461034a578063b3a9e53b1461035d578063c4d66de814610370578063d5d4bb5a14610383578063e481af9d14610396578063f2fde38b1461039e578063fabc1cbc146103b157600080fd5b8063715018a6146102d1578063886f1195146102d95780638da5cb5b146102ec5780639926ee7d146102fd578063a364f4da14610310578063a50a640e1461032357600080fd5b806333cfb7b71161012b57806333cfb7b71461022257806338c8ee6414610242578063485cc95514610255578063595c6a67146102685780635ac86ab7146102705780635c975abb146102a35780636b3aa72e146102ab57600080fd5b80630510c191146101735780630f5af14a1461019257806310d67a2f146101a7578063136439dd146101ba578063268f06e0146101cd5780632f65284e14610201575b600080fd5b61017b600081565b60405160ff90911681526020015b60405180910390f35b6101a56101a0366004613311565b6103c4565b005b6101a56101b536600461337c565b610494565b6101a56101c8366004613399565b610547565b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b60405161018991906133b2565b61021461020f3660046133d8565b610674565b604051908152602001610189565b61023561023036600461337c565b610792565b604051610189919061347b565b6101a561025036600461337c565b610c66565b6101a56102633660046134c8565b610cde565b6101a5610db5565b61029361027e366004613505565b60cb54600160ff9092169190911b9081161490565b6040519015158152602001610189565b60cb54610214565b7f00000000000000000000000000000000000000000000000000000000000000006101f4565b6101a5610e6f565b60ca546101f4906001600160a01b031681565b6066546001600160a01b03166101f4565b6101a561030b3660046135d5565b610e83565b6101a561031e36600461337c565b610fa4565b6101f47f000000000000000000000000000000000000000000000000000000000000000081565b6101a561035836600461367f565b61106d565b61021461036b3660046136f5565b6110c1565b6101a561037e36600461337c565b6110f0565b61021461039136600461372a565b6111c6565b61023561131e565b6101a56103ac36600461337c565b6116e7565b6101a56103bf366004613399565b61175d565b60cb546000906001908116141561041e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064015b60405180910390fd5b61042883836118b4565b6104655760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610415565b61048f6104756020850185613778565b6104856040860160208701613795565b8560a001356119f3565b505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050b91906137b0565b6001600160a01b0316336001600160a01b03161461053b5760405162461bcd60e51b8152600401610415906137cd565b61054481611a57565b50565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906105779033906004016133b2565b602060405180830381865afa158015610594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b89190613827565b6105d45760405162461bcd60e51b815260040161041590613842565b60cb54818116146106485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233906000805160206140a9833981519152906020015b60405180910390a250565b600060608501351580159061068c5750608085013515155b6106d35760405162461bcd60e51b8152602060048201526018602482015277115b5c1d1e48139150548811104818dbdb5b5a5d1b595b9d60421b6044820152606401610415565b600080806106e46020890189613778565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906107139190613795565b6001600160401b0316815260208101919091526040016000205490508061077e57826107735760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b6044820152606401610415565b61077e868585611b4e565b61078886866111c6565b9695505050505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166313542a4e846040518263ffffffff1660e01b81526004016107e291906133b2565b602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610823919061388a565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906138a3565b90506001600160c01b038116158061094c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094791906138cc565b60ff16155b1561096c5760408051600080825260208201909252905b50949350505050565b6000610980826001600160c01b0316611b5f565b90506000805b8251811015610a56577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106109d0576109d06138e9565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a38919061388a565b610a429083613915565b915080610a4e8161392d565b915050610986565b506000816001600160401b03811115610a7157610a71613522565b604051908082528060200260200182016040528015610a9a578160200160208202803683370190505b5090506000805b8451811015610c59576000858281518110610abe57610abe6138e9565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b57919061388a565b905060005b81811015610c43576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190613948565b60000151868681518110610c0b57610c0b6138e9565b6001600160a01b039092166020928302919091019091015284610c2d8161392d565b9550508080610c3b9061392d565b915050610b5c565b5050508080610c519061392d565b915050610aa1565b5090979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105445760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c6572006044820152606401610415565b603354610100900460ff1615808015610cfe5750603354600160ff909116105b80610d185750303b158015610d18575060335460ff166001145b610d345760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015610d57576033805461ff0019166101001790555b610d6083611c21565b610d6b826000611c73565b801561048f576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e90610de59033906004016133b2565b602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190613827565b610e425760405162461bcd60e51b815260040161041590613842565b60001960cb81905560405190815233906000805160206140a98339815191529060200160405180910390a2565b610e77611d47565b610e816000611c21565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ecb5760405162461bcd60e51b815260040161041590613a05565b604051632e8da82960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e8da82990610f179085906004016133b2565b602060405180830381865afa158015610f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f589190613827565b610f965760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610415565b610fa08282611da1565b5050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fec5760405162461bcd60e51b815260040161041590613a05565b6040516351b27a6d60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906110389084906004016133b2565b600060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b5050505050565b611075611d47565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590611038908490600401613aca565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b603354610100900460ff16158080156111105750603354600160ff909116105b8061112a5750303b15801561112a575060335460ff166001145b6111465760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015611169576033805461ff0019166101001790555b61117282611e6d565b61117d600080611c73565b8015610fa0576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008080806111d86020870187613778565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906112079190613795565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a0013581146112775760405162461bcd60e51b81526020600482015260176024820152764d69736d61746368696e6720737461746520726f6f747360481b6044820152606401610415565b611316611287602085018561337c565b60208501358361129a6040880188613add565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112dc925050506060890189613add565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ed892505050565b949350505050565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a491906138cc565b60ff169050806113c257505060408051600081526020810190915290565b6000805b8281101561147757604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611459919061388a565b6114639083613915565b91508061146f8161392d565b9150506113c6565b506000816001600160401b0381111561149257611492613522565b6040519080825280602002602001820160405280156114bb578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906138cc565b60ff168110156116dd57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc919061388a565b905060005b818110156116c8576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613948565b60000151858581518110611690576116906138e9565b6001600160a01b0390921660209283029190910190910152836116b28161392d565b94505080806116c09061392d565b9150506115e1565b505080806116d59061392d565b9150506114c2565b5090949350505050565b6116ef611d47565b6001600160a01b0381166117545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b61054481611c21565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d491906137b0565b6001600160a01b0316336001600160a01b0316146118045760405162461bcd60e51b8152600401610415906137cd565b60cb5419811960cb5419161461187d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610669565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663292f7a4e6118ef86612015565b6118fa600143613b2a565b8660037f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613b41565b61198a906002613b5e565b6119949190613ba0565b6040518563ffffffff1660e01b81526004016119b39493929190613d57565b6040805180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190613eb6565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6001600160a01b038116611ae55760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610415565b60ca54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160ca80546001600160a01b0319166001600160a01b0392909216919091179055565b81611b5984826103c4565b50505050565b6060600080611b6d84612045565b61ffff166001600160401b03811115611b8857611b88613522565b6040519080825280601f01601f191660200182016040528015611bb2576020820181803683370190505b5090506000805b825182108015611bca575061010081105b156116dd576001811b935085841615611c11578060f81b838381518110611bf357611bf36138e9565b60200101906001600160f81b031916908160001a9053508160010191505b611c1a8161392d565b9050611bb9565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60ca546001600160a01b0316158015611c9457506001600160a01b03821615155b611d165760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610415565b60cb81905560405181815233906000805160206140a98339815191529060200160405180910390a2610fa082611a57565b6066546001600160a01b03163314610e815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611de95760405162461bcd60e51b815260040161041590613a05565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90611e379085908590600401613ee2565b600060405180830381600087803b158015611e5157600080fd5b505af1158015611e65573d6000803e3d6000fd5b505050505050565b603354610100900460ff166117545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610415565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611f18906034016040516020818303038152906040528688612070565b9150915081611f625760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610415565b6000611f6d82612099565b9050600080611fa28a604051602001611f8891815260200190565b604051602081830303815290604052888560400151612070565b9150915081611ff35760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610415565b612004611fff8261215d565b612170565b955050505050505b95945050505050565b6000816040516020016120289190613f2d565b604051602081830303815290604052805190602001209050919050565b6000805b82156110ea5761205a600184613b2a565b909216918061206881613f99565b915050612049565b60006060600061207f8661219f565b905061208c8186866121d1565b9250925050935093915050565b6040805160808101825260008082526020820181905291810182905260608101829052906120c6836122ac565b905060405180608001604052806120f6836000815181106120e9576120e96138e9565b60200260200101516122bf565b8152602001612111836001815181106120e9576120e96138e9565b81526020016121398360028151811061212c5761212c6138e9565b60200260200101516122c6565b81526020016121548360038151811061212c5761212c6138e9565b90529392505050565b60606110ea61216b83612368565b612395565b6000806000602084511115612186576020612189565b83515b60209485015194036008029390931c9392505050565b606081805190602001206040516020016121bb91815260200190565b6040516020818303038152906040529050919050565b6000606060006121e085612417565b905060008060006121f2848a89612511565b815192955090935091501580806122065750815b6122525760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610415565b60008161226e576040518060200160405280600081525061229a565b61229a8661227d600188613b2a565b8151811061228d5761228d6138e9565b6020026020010151612935565b919b919a509098505050505050505050565b60606110ea6122ba83612368565b61295f565b60006110ea825b60006021826000015111156122ed5760405162461bcd60e51b815260040161041590613fbb565b60008060006122fb85612b45565b91945092509050600081600181111561231657612316613ff2565b146123335760405162461bcd60e51b815260040161041590613fbb565b60008386602001516123459190613915565b805190915060208410156107885760208490036101000a90049695505050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606060008060006123a585612b45565b9194509250905060008160018111156123c0576123c0613ff2565b146124085760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b21029262810313cba32b9903b30b63ab29760411b6044820152606401610415565b61200c85602001518484612e7b565b60606000612424836122ac565b9050600081516001600160401b0381111561244157612441613522565b60405190808252806020026020018201604052801561248657816020015b604080518082019091526060808252602082015281526020019060019003908161245f5790505b50905060005b82518110156125095760006124b98483815181106124ac576124ac6138e9565b6020026020010151612395565b905060405180604001604052808281526020016124d5836122ac565b8152508383815181106124ea576124ea6138e9565b60200260200101819052505080806125019061392d565b91505061248c565b509392505050565b6000606081808061252187612f56565b90506000869050600080612548604051806040016040528060608152602001606081525090565b60005b8c5181101561290d578c8181518110612566576125666138e9565b60200260200101519150828461257c9190613915565b9350612589600188613915565b9650836125e1578151805160209091012085146125dc5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610415565b61269e565b815151602011612643578151805160209091012085146125dc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610415565b846126518360000151613090565b1461269e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610415565b6126aa60106001613915565b82602001515114156127235785518414156126c45761290d565b60008685815181106126d8576126d86138e9565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110612703576127036138e9565b60200260200101519050612716816130b8565b96506001945050506128fb565b600282602001515114156128b357600061273c836130ee565b9050600081600081518110612753576127536138e9565b016020015160f81c9050600061276a600283614008565b61277590600261402a565b90506000612786848360ff16613112565b905060006127948b8a613112565b905060006127a28383613148565b905060ff8516600214806127b9575060ff85166003145b156127f3578083511480156127ce5750808251145b156127e0576127dd818b613915565b99505b50600160ff1b995061290d945050505050565b60ff85161580612806575060ff85166001145b1561285c57825181146128265750600160ff1b995061290d945050505050565b61284d8860200151600181518110612840576128406138e9565b60200260200101516130b8565b9a5097506128fb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610415565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610415565b806129058161392d565b91505061254b565b50600160ff1b8414866129208786613112565b909e909d50909b509950505050505050505050565b602081015180516060916110ea9161294f90600190613b2a565b815181106124ac576124ac6138e9565b606060008061296d84612b45565b9193509091506001905081600181111561298957612989613ff2565b146129d05760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b210292628103634b9ba103b30b63ab29760491b6044820152606401610415565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816129e95790505090506000835b8651811015612b3a5760208210612a825760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610415565b600080612abf6040518060400160405280858c60000151612aa39190613b2a565b8152602001858c60200151612ab89190613915565b9052612b45565b509150915060405180604001604052808383612adb9190613915565b8152602001848b60200151612af09190613915565b815250858581518110612b0557612b056138e9565b6020908102919091010152612b1b600185613915565b9350612b278183613915565b612b319084613915565b92505050612a16565b508152949350505050565b600080600080846000015111612b985760405162461bcd60e51b81526020600482015260186024820152772926281034ba32b69031b0b73737ba10313290373ab6361760411b6044820152606401610415565b6020840151805160001a607f8111612bbd576000600160009450945094505050612e74565b60b78111612c35576000612bd2608083613b2a565b905080876000015111612c235760405162461bcd60e51b815260206004820152601960248201527824b73b30b634b2102926281039b437b93a1039ba3934b7339760391b6044820152606401610415565b60019550935060009250612e74915050565b60bf8111612d1f576000612c4a60b783613b2a565b905080876000015111612c9f5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610415565b600183015160208290036101000a9004612cb98183613915565b885111612d035760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b210292628103637b7339039ba3934b7339760411b6044820152606401610415565b612d0e826001613915565b9650945060009350612e7492505050565b60f78111612d94576000612d3460c083613b2a565b905080876000015111612d835760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2102926281039b437b93a103634b9ba1760491b6044820152606401610415565b600195509350849250612e74915050565b6000612da160f783613b2a565b905080876000015111612df65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610415565b600183015160208290036101000a9004612e108183613915565b885111612e585760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610415565b612e63826001613915565b9650945060019350612e7492505050565b9193909250565b60606000826001600160401b03811115612e9757612e97613522565b6040519080825280601f01601f191660200182016040528015612ec1576020820181803683370190505b509050805160001415612ed5579050612f4f565b6000612ee18587613915565b90506020820160005b612ef560208761404d565b811015612f2c5782518252612f0b602084613915565b9250612f18602083613915565b915080612f248161392d565b915050612eea565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b6060600082516002612f689190614061565b6001600160401b03811115612f7f57612f7f613522565b6040519080825280601f01601f191660200182016040528015612fa9576020820181803683370190505b50905060005b8351811015613089576004848281518110612fcc57612fcc6138e9565b01602001516001600160f81b031916901c82612fe9836002614061565b81518110612ff957612ff96138e9565b60200101906001600160f81b031916908160001a9053506010848281518110613024576130246138e9565b0160200151613036919060f81c614008565b60f81b82613045836002614061565b613050906001613915565b81518110613060576130606138e9565b60200101906001600160f81b031916908160001a905350806130818161392d565b915050612faf565b5092915050565b60006020825110156130a457506020015190565b818060200190518101906110ea919061388a565b600060606020836000015110156130d9576130d2836131c4565b90506130e5565b6130e283612395565b90505b612f4f81613090565b60606110ea61310d83602001516000815181106124ac576124ac6138e9565b612f56565b60608251821061313157506040805160208101909152600081526110ea565b612f4f83838486516131439190613b2a565b6131cf565b6000805b80845111801561315c5750808351115b80156131ad5750828181518110613175576131756138e9565b602001015160f81c60f81b6001600160f81b03191684828151811061319c5761319c6138e9565b01602001516001600160f81b031916145b15612f4f57806131bc8161392d565b91505061314c565b60606110ea826132e3565b6060816131dd81601f613915565b10156131fb5760405162461bcd60e51b815260040161041590614080565b826132068382613915565b10156132245760405162461bcd60e51b815260040161041590614080565b61322e8284613915565b845110156132725760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610415565b6060821580156132915760405191506000825260208201604052610963565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156132ca5780518352602092830192016132b2565b5050858452601f01601f19166040525050949350505050565b60606110ea826020015160008460000151612e7b565b600060c0828403121561330b57600080fd5b50919050565b60008060e0838503121561332457600080fd5b61332e84846132f9565b915060c08301356001600160401b0381111561334957600080fd5b8301610180818603121561335c57600080fd5b809150509250929050565b6001600160a01b038116811461054457600080fd5b60006020828403121561338e57600080fd5b8135612f4f81613367565b6000602082840312156133ab57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60006080828403121561330b57600080fd5b60008060008061010085870312156133ef57600080fd5b6133f986866132f9565b935060c08501356001600160401b038082111561341557600080fd5b613421888389016133c6565b945060e087013591508082111561343757600080fd5b818701915087601f83011261344b57600080fd5b81358181111561345a57600080fd5b88602082850101111561346c57600080fd5b95989497505060200194505050565b6020808252825182820181905260009190848201906040850190845b818110156134bc5783516001600160a01b031683529284019291840191600101613497565b50909695505050505050565b600080604083850312156134db57600080fd5b82356134e681613367565b9150602083013561335c81613367565b60ff8116811461054457600080fd5b60006020828403121561351757600080fd5b8135612f4f816134f6565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561355a5761355a613522565b60405290565b60006001600160401b038084111561357a5761357a613522565b604051601f8501601f19908116603f011681019082821181831017156135a2576135a2613522565b816040528093508581528686860111156135bb57600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156135e857600080fd5b82356135f381613367565b915060208301356001600160401b038082111561360f57600080fd5b908401906060828703121561362357600080fd5b61362b613538565b82358281111561363a57600080fd5b83019150601f8201871361364d57600080fd5b61365c87833560208501613560565b815260208301356020820152604083013560408201528093505050509250929050565b60006020828403121561369157600080fd5b81356001600160401b038111156136a757600080fd5b8201601f810184136136b857600080fd5b61131684823560208401613560565b63ffffffff8116811461054457600080fd5b80356001600160401b03811681146136f057600080fd5b919050565b6000806040838503121561370857600080fd5b8235613713816136c7565b9150613721602084016136d9565b90509250929050565b60008060e0838503121561373d57600080fd5b61374784846132f9565b915060c08301356001600160401b0381111561376257600080fd5b61376e858286016133c6565b9150509250929050565b60006020828403121561378a57600080fd5b8135612f4f816136c7565b6000602082840312156137a757600080fd5b612f4f826136d9565b6000602082840312156137c257600080fd5b8151612f4f81613367565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b805180151581146136f057600080fd5b60006020828403121561383957600080fd5b612f4f82613817565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561389c57600080fd5b5051919050565b6000602082840312156138b557600080fd5b81516001600160c01b0381168114612f4f57600080fd5b6000602082840312156138de57600080fd5b8151612f4f816134f6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613928576139286138ff565b500190565b6000600019821415613941576139416138ff565b5060010190565b60006040828403121561395a57600080fd5b604051604081018181106001600160401b038211171561397c5761397c613522565b604052825161398a81613367565b815260208301516bffffffffffffffffffffffff811681146139ab57600080fd5b60208201529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613aa357602081850181015186830182015201613a87565b81811115613ab5576000602083870101525b50601f01601f19169290920160200192915050565b602081526000612f4f6020830184613a7d565b6000808335601e19843603018112613af457600080fd5b8301803591506001600160401b03821115613b0e57600080fd5b602001915036819003821315613b2357600080fd5b9250929050565b600082821015613b3c57613b3c6138ff565b500390565b600060208284031215613b5357600080fd5b8151612f4f816136c7565b600063ffffffff80831681851681830481118215151615613b8157613b816138ff565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680613bb757613bb7613b8a565b92169190910492915050565b6000808335601e19843603018112613bda57600080fd5b83016020810192503590506001600160401b03811115613bf957600080fd5b8060051b3603831315613b2357600080fd5b8183526000602080850194508260005b85811015613c46578135613c2e816136c7565b63ffffffff1687529582019590820190600101613c1b565b509495945050505050565b6000808335601e19843603018112613c6857600080fd5b83016020810192503590506001600160401b03811115613c8757600080fd5b8060061b3603831315613b2357600080fd5b81835260208301925060008160005b84811015613cd057813586526020808301359087015260409586019590910190600101613ca8565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b81835260006020808501808196508560051b810191508460005b87811015613d4a578284038952613d2b8288613bc3565b613d36868284613c0b565b9a87019a9550505090840190600101613d14565b5091979650505050505050565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e060608201526000613d8e8485613bc3565b61018060e0850152613da561026085018284613c0b565b915050613db56020860186613c51565b60df198086850301610100870152613dce848385613c99565b9350613ddd6040890189613c51565b93509150610120818786030181880152613df8858585613c99565b94506101409350613e0e84880160608b01613cda565b60e08901356101c08801526101008901356101e0880152613e31818a018a613bc3565b935090508187860301610200880152613e4b858483613c0b565b945050613e5a83890189613bc3565b935091508086850301610220870152613e74848484613c0b565b9350613e84610160890189613bc3565b93509150808685030161024087015250613e9f838383613cfa565b935050505061200c608083018463ffffffff169052565b60008060408385031215613ec957600080fd5b613ed283613817565b9150602083015190509250929050565b60018060a01b0383168152604060208201526000825160606040840152613f0c60a0840182613a7d565b90506020840151606084015260408401516080840152809150509392505050565b60c081018235613f3c816136c7565b63ffffffff168252613f50602084016136d9565b6001600160401b03808216602085015280613f6d604087016136d9565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b600061ffff80831681811415613fb157613fb16138ff565b6001019392505050565b6020808252601a908201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600060ff83168061401b5761401b613b8a565b8060ff84160691505092915050565b600060ff821660ff841680821015614044576140446138ff565b90039392505050565b60008261405c5761405c613b8a565b500490565b600081600019048311821515161561407b5761407b6138ff565b500290565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b60408201526060019056feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3da264697066735822122098c1921f6dcbcaffb47f186a92732749ef2999e46630e18c811cfa8923a64b6664736f6c634300080c0033", } // ContractSFFLServiceManagerABI is the input ABI used to generate the binding from. @@ -93,7 +93,7 @@ var ContractSFFLServiceManagerABI = ContractSFFLServiceManagerMetaData.ABI var ContractSFFLServiceManagerBin = ContractSFFLServiceManagerMetaData.Bin // DeployContractSFFLServiceManager deploys a new Ethereum contract, binding an instance of ContractSFFLServiceManager to it. -func DeployContractSFFLServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, _avsDirectory common.Address, _registryCoordinator common.Address, _stakeRegistry common.Address, _taskManager common.Address) (common.Address, *types.Transaction, *ContractSFFLServiceManager, error) { +func DeployContractSFFLServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, _avsDirectory common.Address, _registryCoordinator common.Address, _stakeRegistry common.Address, _taskManager common.Address, _operatorSetUpdateRegistry common.Address) (common.Address, *types.Transaction, *ContractSFFLServiceManager, error) { parsed, err := ContractSFFLServiceManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -102,7 +102,7 @@ func DeployContractSFFLServiceManager(auth *bind.TransactOpts, backend bind.Cont return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractSFFLServiceManagerBin), backend, _avsDirectory, _registryCoordinator, _stakeRegistry, _taskManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractSFFLServiceManagerBin), backend, _avsDirectory, _registryCoordinator, _stakeRegistry, _taskManager, _operatorSetUpdateRegistry) if err != nil { return common.Address{}, nil, nil, err } @@ -437,6 +437,37 @@ func (_ContractSFFLServiceManager *ContractSFFLServiceManagerCallerSession) GetS return _ContractSFFLServiceManager.Contract.GetStorageValue(&_ContractSFFLServiceManager.CallOpts, message, proofParams) } +// OperatorSetUpdateRegistry is a free data retrieval call binding the contract method 0x268f06e0. +// +// Solidity: function operatorSetUpdateRegistry() view returns(address) +func (_ContractSFFLServiceManager *ContractSFFLServiceManagerCaller) OperatorSetUpdateRegistry(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractSFFLServiceManager.contract.Call(opts, &out, "operatorSetUpdateRegistry") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// OperatorSetUpdateRegistry is a free data retrieval call binding the contract method 0x268f06e0. +// +// Solidity: function operatorSetUpdateRegistry() view returns(address) +func (_ContractSFFLServiceManager *ContractSFFLServiceManagerSession) OperatorSetUpdateRegistry() (common.Address, error) { + return _ContractSFFLServiceManager.Contract.OperatorSetUpdateRegistry(&_ContractSFFLServiceManager.CallOpts) +} + +// OperatorSetUpdateRegistry is a free data retrieval call binding the contract method 0x268f06e0. +// +// Solidity: function operatorSetUpdateRegistry() view returns(address) +func (_ContractSFFLServiceManager *ContractSFFLServiceManagerCallerSession) OperatorSetUpdateRegistry() (common.Address, error) { + return _ContractSFFLServiceManager.Contract.OperatorSetUpdateRegistry(&_ContractSFFLServiceManager.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) diff --git a/contracts/bindings/SFFLTaskManager/binding.go b/contracts/bindings/SFFLTaskManager/binding.go index dc6be173..54d6d709 100644 --- a/contracts/bindings/SFFLTaskManager/binding.go +++ b/contracts/bindings/SFFLTaskManager/binding.go @@ -88,21 +88,6 @@ type OperatorSetUpdateMessage struct { Operators []RollupOperatorsOperator } -// OperatorStateRetrieverCheckSignaturesIndices is an auto generated low-level Go binding around an user-defined struct. -type OperatorStateRetrieverCheckSignaturesIndices struct { - NonSignerQuorumBitmapIndices []uint32 - QuorumApkIndices []uint32 - TotalStakeIndices []uint32 - NonSignerStakeIndices [][]uint32 -} - -// OperatorStateRetrieverOperator is an auto generated low-level Go binding around an user-defined struct. -type OperatorStateRetrieverOperator struct { - Operator common.Address - OperatorId [32]byte - Stake *big.Int -} - // RollupOperatorsOperator is an auto generated low-level Go binding around an user-defined struct. type RollupOperatorsOperator struct { Pubkey BN254G1Point @@ -132,8 +117,8 @@ type StateRootUpdateMessage struct { // ContractSFFLTaskManagerMetaData contains all meta data concerning the ContractSFFLTaskManager contract. var ContractSFFLTaskManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"taskResponseWindowBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"PAUSED_CHALLENGE_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSED_CREATE_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSED_RESPOND_TO_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_CHALLENGE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_RESPONSE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"aggregator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allCheckpointTaskHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allCheckpointTaskResponses\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkQuorum\",\"inputs\":[{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointTaskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointTaskSuccesfullyChallenged\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createCheckpointTask\",\"inputs\":[{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCheckSignaturesIndices\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorStateRetriever.CheckSignaturesIndices\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapsAtBlockNumber\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_aggregator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"nextCheckpointTaskNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"raiseAndResolveCheckpointChallenge\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"pubkeysOfNonSigningOperators\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"respondToCheckpointTask\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyMessageInclusionState\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structOperatorSetUpdate.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"operators\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structSparseMerkleTree.Proof\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bitMask\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sideNodes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"numSideNodes\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonMembershipLeafPath\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nonMembershipLeafValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyMessageInclusionState\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structSparseMerkleTree.Proof\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bitMask\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sideNodes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"numSideNodes\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonMembershipLeafPath\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nonMembershipLeafValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"CheckpointTaskChallengedSuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskChallengedUnsuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskCreated\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"task\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskResponded\",\"inputs\":[{\"name\":\"taskResponse\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101206040523480156200001257600080fd5b506040516200668c3803806200668c8339810160408190526200003591620002c5565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200030c565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013391906200030c565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b391906200030c565b6001600160a01b031660e052506097805460ff1916600117905563ffffffff811661010052620001e2620001ea565b505062000333565b600054610100900460ff1615620002575760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620002aa576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002c257600080fd5b50565b60008060408385031215620002d957600080fd5b8251620002e681620002ac565b602084015190925063ffffffff811681146200030157600080fd5b809150509250929050565b6000602082840312156200031f57600080fd5b81516200032c81620002ac565b9392505050565b60805160a05160c05160e051610100516162d5620003b7600039600081816102bf015261319d01526000818161061601526124bd015260008181610471015261269f015260008181610498015281816128750152612a370152600081816104bf01528181610f78015281816121a701528181612320015261255a01526162d56000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80636fe9b41a11610146578063b98fba4f116100c3578063ef02445811610087578063ef02445814610638578063efcf4edb14610640578063f2fde38b14610653578063f63c5bab14610638578063f8c8765e14610666578063fabc1cbc1461067957600080fd5b8063b98fba4f146105c2578063cefdc1d4146105d5578063cf4b1710146105f6578063da16491f146105fe578063df5cf7231461061157600080fd5b80638da5cb5b1161010a5780638da5cb5b1461055957806395eebee61461056a578063a168e3c01461058d578063a35d2e05146105ad578063b98d0908146105b557600080fd5b80636fe9b41a14610502578063715018a6146105155780637afa1eed1461051d578063886f1195146105385780638cbc379a1461054b57600080fd5b80634f19ade7116101df5780635c155662116101a35780635c155662146104445780635c975abb146104645780635df459461461046c57806368304835146104935780636d14a987146104ba5780636efb4636146104e157600080fd5b80634f19ade7146103a85780634f739f74146103d6578063595c6a67146103f65780635ac86ab7146103fe5780635ace2df71461043157600080fd5b8063292f7a4e11610226578063292f7a4e146103215780632e44b3491461034b57806332a8ad1e1461035b5780633563b0d114610375578063416c7e5e1461039557600080fd5b806310d67a2f14610263578063136439dd14610278578063171f1d5b1461028b5780631ad43189146102ba578063245a7bfc146102f6575b600080fd5b61027661027136600461499e565b61068c565b005b6102766102863660046149bb565b610748565b61029e610299366004614b39565b610887565b6040805192151583529015156020830152015b60405180910390f35b6102e17f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102b1565b60ca54610309906001600160a01b031681565b6040516001600160a01b0390911681526020016102b1565b61033461032f366004614e93565b610a11565b6040805192151583526020830191909152016102b1565b60c9546102e19063ffffffff1681565b610363600281565b60405160ff90911681526020016102b1565b610388610383366004614f2d565b610ade565b6040516102b19190615088565b6102766103a33660046150a9565b610f76565b6103c86103b63660046150c6565b60cb6020526000908152604090205481565b6040519081526020016102b1565b6103e96103e43660046150e3565b6110eb565b6040516102b191906151e7565b610276611811565b61042161040c3660046152b1565b606654600160ff9092169190911b9081161490565b60405190151581526020016102b1565b61027661043f3660046152f8565b6118d8565b610457610452366004615389565b611c2c565b6040516102b19190615435565b6066546103c8565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6104f46104ef366004615479565b611df4565b6040516102b1929190615539565b610421610510366004615594565b612cec565b610276612da5565b60c9546103099064010000000090046001600160a01b031681565b606554610309906001600160a01b031681565b60c95463ffffffff166102e1565b6033546001600160a01b0316610309565b6104216105783660046150c6565b60cd6020526000908152604090205460ff1681565b6103c861059b3660046150c6565b60cc6020526000908152604090205481565b610363600181565b6097546104219060ff1681565b6104216105d0366004615608565b612db9565b6105e86105e3366004615666565b612e62565b6040516102b19291906156a8565b610363600081565b61027661060c3660046156c1565b612ff4565b6103097f000000000000000000000000000000000000000000000000000000000000000081565b6102e1606481565b61027661064e366004615742565b61331f565b61027661066136600461499e565b613536565b6102766106743660046157b9565b6135ac565b6102766106873660046149bb565b613711565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107039190615815565b6001600160a01b0316336001600160a01b03161461073c5760405162461bcd60e51b815260040161073390615832565b60405180910390fd5b6107458161386d565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b4919061587c565b6107d05760405162461bcd60e51b815260040161073390615899565b606654818116146108495760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610733565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106108cf576108cf6158e1565b60200201518951600160200201518a602001516000600281106108f4576108f46158e1565b60200201518b60200151600160028110610910576109106158e1565b602090810291909101518c518d83015160405161096d9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c61099091906158f7565b9050610a036109a96109a28884613964565b86906139fb565b6109b1613a8f565b6109f96109ea856109e4604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613964565b6109f38c613b4f565b906139fb565b886201d4c0613bdf565b909890975095505050505050565b600080600080610a248a8a8a8a8a611df4565b9150915060005b88811015610aca578563ffffffff1683602001518281518110610a5057610a506158e1565b6020026020010151610a62919061592f565b6001600160601b0316606463ffffffff1684600001518381518110610a8957610a896158e1565b6020026020010151610a9b919061592f565b6001600160601b03161015610ab85750600093509150610ad39050565b80610ac28161595e565b915050610a2b565b50600193509150505b965096945050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190615815565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190615815565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c109190615815565b9050600086516001600160401b03811115610c2d57610c2d6149d4565b604051908082528060200260200182016040528015610c6057816020015b6060815260200190600190039081610c4b5790505b50905060005b8751811015610f68576000888281518110610c8357610c836158e1565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d0c9190810190615979565b905080516001600160401b03811115610d2757610d276149d4565b604051908082528060200260200182016040528015610d7257816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d455790505b50848481518110610d8557610d856158e1565b602002602001018190525060005b8151811015610f52576040518060600160405280876001600160a01b03166347b314e8858581518110610dc857610dc86158e1565b60200260200101516040518263ffffffff1660e01b8152600401610dee91815260200190565b602060405180830381865afa158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2f9190615815565b6001600160a01b03168152602001838381518110610e4f57610e4f6158e1565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610e7d57610e7d6158e1565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd9190615a09565b6001600160601b0316815250858581518110610f1b57610f1b6158e1565b60200260200101518281518110610f3457610f346158e1565b60200260200101819052508080610f4a9061595e565b915050610d93565b5050508080610f609061595e565b915050610c66565b5093505050505b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff89190615815565b6001600160a01b0316336001600160a01b0316146110a45760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610733565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6111166040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015611156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117a9190615815565b90506111a76040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906111d7908b9089908990600401615a32565b600060405180830381865afa1580156111f4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261121c9190810190615a7c565b81526040516340e03a8160e11b81526001600160a01b038316906381c075029061124e908b908b908b90600401615b33565b600060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112939190810190615a7c565b6040820152856001600160401b038111156112b0576112b06149d4565b6040519080825280602002602001820160405280156112e357816020015b60608152602001906001900390816112ce5790505b50606082015260005b60ff8116871115611722576000856001600160401b03811115611311576113116149d4565b60405190808252806020026020018201604052801561133a578160200160208202803683370190505b5083606001518360ff1681518110611354576113546158e1565b602002602001018190525060005b868110156116225760008c6001600160a01b03166304ec63518a8a8581811061138d5761138d6158e1565b905060200201358e886000015186815181106113ab576113ab6158e1565b60200260200101516040518463ffffffff1660e01b81526004016113e89392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114299190615b5c565b90506001600160c01b0381166114cd5760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610733565b8a8a8560ff168181106114e2576114e26158e1565b6001600160c01b03841692013560f81c9190911c60019081161415905061160f57856001600160a01b031663dd9846b98a8a85818110611524576115246158e1565b905060200201358d8d8860ff16818110611540576115406158e1565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015611596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ba9190615b85565b85606001518560ff16815181106115d3576115d36158e1565b602002602001015184815181106115ec576115ec6158e1565b63ffffffff909216602092830291909101909101528261160b8161595e565b9350505b508061161a8161595e565b915050611362565b506000816001600160401b0381111561163d5761163d6149d4565b604051908082528060200260200182016040528015611666578160200160208202803683370190505b50905060005b828110156116e75784606001518460ff168151811061168d5761168d6158e1565b602002602001015181815181106116a6576116a66158e1565b60200260200101518282815181106116c0576116c06158e1565b63ffffffff90921660209283029190910190910152806116df8161595e565b91505061166c565b508084606001518460ff1681518110611702576117026158e1565b60200260200101819052505050808061171a90615ba2565b9150506112ec565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117879190615815565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c906117ba908b908b908e90600401615bc2565b600060405180830381865afa1580156117d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117ff9190810190615a7c565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187d919061587c565b6118995760405162461bcd60e51b815260040161073390615899565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b606654600290600490811614156119015760405162461bcd60e51b815260040161073390615bec565b600061191060208601866150c6565b63ffffffff8116600090815260cc602052604090205490915061196a5760405162461bcd60e51b815260206004820152601260248201527115185cdac81b9bdd081c995cdc1bdb99195960721b6044820152606401610733565b6119748585613e03565b63ffffffff8216600090815260cc6020526040902054146119cd5760405162461bcd60e51b815260206004820152601360248201527257726f6e67207461736b20726573706f6e736560681b6044820152606401610733565b63ffffffff8116600090815260cd602052604090205460ff1615611a335760405162461bcd60e51b815260206004820152601760248201527f416c7265616479206265656e206368616c6c656e6765640000000000000000006044820152606401610733565b6064611a4260208601866150c6565b611a4c9190615c23565b63ffffffff164363ffffffff161115611aa75760405162461bcd60e51b815260206004820152601860248201527f4368616c6c656e676520706572696f64206578706972656400000000000000006044820152606401610733565b604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350611c25565b8451811015611b4c57611b1d858281518110611afe57611afe6158e1565b6020026020010151805160009081526020918201519091526040902090565b828281518110611b2f57611b2f6158e1565b602090810291909101015280611b448161595e565b915050611ae0565b506000611b5c60208901896150c6565b82604051602001611b6e929190615c4b565b60405160208183030381529060405280519060200120905085602001358114611bd95760405162461bcd60e51b815260206004820152601860248201527f57726f6e67206e6f6e2d7369676e6572207075626b65797300000000000000006044820152606401610733565b63ffffffff8316600081815260cd6020526040808220805460ff19166001179055513392917fff48388ad5e2a6d1845a7672040fba7d9b14b22b9e0eecd37046e5313d3aebc291a35050505b5050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401611c5e929190615c93565b600060405180830381865afa158015611c7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ca39190810190615a7c565b9050600084516001600160401b03811115611cc057611cc06149d4565b604051908082528060200260200182016040528015611ce9578160200160208202803683370190505b50905060005b8551811015611dea57866001600160a01b03166304ec6351878381518110611d1957611d196158e1565b602002602001015187868581518110611d3457611d346158e1565b60200260200101516040518463ffffffff1660e01b8152600401611d719392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db29190615b5c565b6001600160c01b0316828281518110611dcd57611dcd6158e1565b602090810291909101015280611de28161595e565b915050611cef565b5095945050505050565b6040805180820190915260608082526020820152600084611e6b5760405162461bcd60e51b8152602060048201526037602482015260008051602061628083398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610733565b60408301515185148015611e83575060a08301515185145b8015611e93575060c08301515185145b8015611ea3575060e08301515185145b611f0d5760405162461bcd60e51b8152602060048201526041602482015260008051602061628083398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610733565b82515160208401515114611f855760405162461bcd60e51b815260206004820152604460248201819052600080516020616280833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610733565b4363ffffffff168463ffffffff1610611ff45760405162461bcd60e51b815260206004820152603c602482015260008051602061628083398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610733565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115612035576120356149d4565b60405190808252806020026020018201604052801561205e578160200160208202803683370190505b506020820152866001600160401b0381111561207c5761207c6149d4565b6040519080825280602002602001820160405280156120a5578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156120d9576120d96149d4565b604051908082528060200260200182016040528015612102578160200160208202803683370190505b5081526020860151516001600160401b03811115612122576121226149d4565b60405190808252806020026020018201604052801561214b578160200160208202803683370190505b508160200181905250600061221d8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122189190615ce7565b613e37565b905060005b8760200151518110156124995761224888602001518281518110611afe57611afe6158e1565b8360200151828151811061225e5761225e6158e1565b6020908102919091010152801561231e57602083015161227f600183615d04565b8151811061228f5761228f6158e1565b602002602001015160001c836020015182815181106122b0576122b06158e1565b602002602001015160001c1161231e576040805162461bcd60e51b815260206004820152602481019190915260008051602061628083398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610733565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110612363576123636158e1565b60200260200101518b8b600001518581518110612382576123826158e1565b60200260200101516040518463ffffffff1660e01b81526004016123bf9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124009190615b5c565b6001600160c01b03168360000151828151811061241f5761241f6158e1565b6020026020010181815250506124856109a2612459848660000151858151811061244b5761244b6158e1565b602002602001015116613ec1565b8a60200151848151811061246f5761246f6158e1565b6020026020010151613eec90919063ffffffff16565b9450806124918161595e565b915050612222565b50506124a483613fd0565b60975490935060ff166000816124bb57600061253d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d9190615d1b565b905060005b8a811015612bbb57821561269d578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110612599576125996158e1565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156125d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fd9190615d1b565b6126079190615d34565b1161269d5760405162461bcd60e51b8152602060048201526066602482015260008051602061628083398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610733565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106126de576126de6158e1565b9050013560f81c60f81b60f81c8c8c60a001518581518110612702576127026158e1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561275e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127829190615d4c565b6001600160401b0319166127a58a604001518381518110611afe57611afe6158e1565b67ffffffffffffffff1916146128415760405162461bcd60e51b8152602060048201526061602482015260008051602061628083398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610733565b6128718960400151828151811061285a5761285a6158e1565b6020026020010151876139fb90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106128b4576128b46158e1565b9050013560f81c60f81b60f81c8c8c60c0015185815181106128d8576128d86158e1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129589190615a09565b8560200151828151811061296e5761296e6158e1565b6001600160601b0390921660209283029190910182015285015180518290811061299a5761299a6158e1565b6020026020010151856000015182815181106129b8576129b86158e1565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015612ba657612a3086600001518281518110612a0257612a026158e1565b60200260200101518f8f86818110612a1c57612a1c6158e1565b600192013560f81c9290921c811614919050565b15612b94577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110612a7657612a766158e1565b9050013560f81c60f81b60f81c8e89602001518581518110612a9a57612a9a6158e1565b60200260200101518f60e001518881518110612ab857612ab86158e1565b60200260200101518781518110612ad157612ad16158e1565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015612b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b599190615a09565b8751805185908110612b6d57612b6d6158e1565b60200260200101818151612b819190615d77565b6001600160601b03169052506001909101905b80612b9e8161595e565b9150506129dc565b50508080612bb39061595e565b915050612542565b505050600080612bd58c868a606001518b60800151610887565b9150915081612c465760405162461bcd60e51b8152602060048201526043602482015260008051602061628083398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610733565b80612ca75760405162461bcd60e51b8152602060048201526039602482015260008051602061628083398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610733565b50506000878260200151604051602001612cc2929190615c4b565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6000612cf78461406b565b823514612d3c5760405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40dacae6e6c2ceca40d2dcc8caf606b1b6044820152606401610733565b612d4a836040013583614089565b612d8a5760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21029a6aa10383937b7b360791b6044820152606401610733565b6000612d958561410f565b6020840135149150509392505050565b612dad61413f565b612db76000614199565b565b6000612dc4846141eb565b823514612e095760405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40dacae6e6c2ceca40d2dcc8caf606b1b6044820152606401610733565b612e17836020013583614089565b612e575760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21029a6aa10383937b7b360791b6044820152606401610733565b6000612d9585614224565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110612e9d57612e9d6158e1565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90612ed99088908690600401615c93565b600060405180830381865afa158015612ef6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f1e9190810190615a7c565b600081518110612f3057612f306158e1565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015612f9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc09190615b5c565b6001600160c01b031690506000612fd682614237565b905081612fe48a838a610ade565b9550955050505050935093915050565b60ca546001600160a01b0316331461304e5760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610733565b606654600190600290811614156130775760405162461bcd60e51b815260040161073390615bec565b600061308660208601866150c6565b90503660006130986080880188615d9f565b909250905060006130af6080890160608a016150c6565b905060cb60006130c260208a018a6150c6565b63ffffffff1663ffffffff168152602001908152602001600020546130e689614303565b146131255760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b6044820152606401610733565b600060cc8161313760208b018b6150c6565b63ffffffff1663ffffffff16815260200190815260200160002054146131985760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b6044820152606401610733565b6131c27f000000000000000000000000000000000000000000000000000000000000000085615c23565b63ffffffff164363ffffffff1611156132165760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b6044820152606401610733565b600061322188614316565b90506000806132348387878a8d89610a11565b91509150816132765760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610733565b6040805180820190915263ffffffff43168152602081018290526132a9816132a3368e90038e018e615de5565b90614329565b60cc60006132ba60208f018f6150c6565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8b82604051613309929190615e6e565b60405180910390a1505050505050505050505050565b60c95464010000000090046001600160a01b0316331461338b5760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610733565b606654600090600190811614156133b45760405162461bcd60e51b815260040161073390615bec565b606463ffffffff8516111561341d5760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401610733565b60006040518060a001604052804363ffffffff168152602001886001600160401b03168152602001876001600160401b031681526020018663ffffffff16815260200185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525090506134a38161433e565b60c9805463ffffffff908116600090815260cb60205260409081902093909355905491519116907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c33225906134f7908490615e98565b60405180910390a260c9546135139063ffffffff166001615c23565b60c9805463ffffffff191663ffffffff9290921691909117905550505050505050565b61353e61413f565b6001600160a01b0381166135a35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610733565b61074581614199565b600054610100900460ff16158080156135cc5750600054600160ff909116105b806135e65750303b1580156135e6575060005460ff166001145b6136495760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610733565b6000805460ff19166001179055801561366c576000805461ff0019166101001790555b613677856000614351565b61368084614199565b60ca80546001600160a01b0319166001600160a01b038581169190911790915560c98054640100000000600160c01b031916640100000000928516929092029190911790558015611c25576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613764573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137889190615815565b6001600160a01b0316336001600160a01b0316146137b85760405162461bcd60e51b815260040161073390615832565b6066541981196066541916146138365760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610733565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161087c565b6001600160a01b0381166138fb5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610733565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526139806148af565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156139b3576139b5565bfe5b50806139f35760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610733565b505092915050565b6040805180820190915260008082526020820152613a176148cd565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156139b35750806139f35760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610733565b613a976148eb565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613b7f600080516020616260833981519152866158f7565b90505b613b8b8161443b565b9093509150600080516020616260833981519152828309831415613bc5576040805180820190915290815260208101919091529392505050565b600080516020616260833981519152600182089050613b82565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613c11614910565b60005b6002811015613dd6576000613c2a826006615f36565b9050848260028110613c3e57613c3e6158e1565b60200201515183613c50836000615d34565b600c8110613c6057613c606158e1565b6020020152848260028110613c7757613c776158e1565b60200201516020015183826001613c8e9190615d34565b600c8110613c9e57613c9e6158e1565b6020020152838260028110613cb557613cb56158e1565b6020020151515183613cc8836002615d34565b600c8110613cd857613cd86158e1565b6020020152838260028110613cef57613cef6158e1565b6020020151516001602002015183613d08836003615d34565b600c8110613d1857613d186158e1565b6020020152838260028110613d2f57613d2f6158e1565b602002015160200151600060028110613d4a57613d4a6158e1565b602002015183613d5b836004615d34565b600c8110613d6b57613d6b6158e1565b6020020152838260028110613d8257613d826158e1565b602002015160200151600160028110613d9d57613d9d6158e1565b602002015183613dae836005615d34565b600c8110613dbe57613dbe6158e1565b60200201525080613dce8161595e565b915050613c14565b50613ddf61492f565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60008282604051602001613e18929190615f55565b6040516020818303038152906040528051906020012090505b92915050565b600080613e43846144bd565b9050808360ff166001901b11610f6f5760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610733565b6000805b8215613e3157613ed6600184615d04565b9092169180613ee481615f8b565b915050613ec5565b60408051808201909152600080825260208201526102008261ffff1610613f485760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610733565b8161ffff1660011415613f5c575081613e31565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613fc557600161ffff871660ff83161c81161415613fa857613fa584846139fb565b93505b613fb283846139fb565b92506201fffe600192831b169101613f78565b509195945050505050565b60408051808201909152600080825260208201528151158015613ff557506020820151155b15614013575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020616260833981519152846020015161404691906158f7565b61405e90600080516020616260833981519152615d04565b905292915050565b919050565b600061407a6020830183615fad565b6001600160401b031692915050565b600061010061409b6060840184615fc8565b9050111580156140b15750610100826080013511155b6140fd5760405162461bcd60e51b815260206004820152601760248201527f53696465206e6f646573206578636565642064657074680000000000000000006044820152606401610733565b6141068261464a565b90921492915050565b6000816040516020016141229190616011565b604051602081830303815290604052805190602001209050919050565b6033546001600160a01b03163314612db75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610733565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060406141fc60208401846150c6565b63ffffffff16901b6142146040840160208501615fad565b6001600160401b03161792915050565b60008160405160200161412291906160ea565b606060008061424584613ec1565b61ffff166001600160401b03811115614260576142606149d4565b6040519080825280601f01601f19166020018201604052801561428a576020820181803683370190505b5090506000805b8251821080156142a2575061010081105b156142f9576001811b9350858416156142e9578060f81b8383815181106142cb576142cb6158e1565b60200101906001600160f81b031916908160001a9053508160010191505b6142f28161595e565b9050614291565b5090949350505050565b6000816040516020016141229190616156565b6000816040516020016141229190616212565b60008282604051602001613e18929190616220565b6000816040516020016141229190615e98565b6065546001600160a01b031615801561437257506001600160a01b03821615155b6143f45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610733565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26144378261386d565b5050565b600080806000805160206162608339815191526003600080516020616260833981519152866000805160206162608339815191528889090908905060006144b1827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020616260833981519152614747565b91959194509092505050565b6000610100825111156145465760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610733565b815161455457506000919050565b6000808360008151811061456a5761456a6158e1565b0160200151600160f89190911c81901b92505b845181101561464157848181518110614598576145986158e1565b0160200151600160f89190911c1b915082821161462d5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610733565b9181179161463a8161595e565b905061457d565b50909392505050565b60006146546148af565b60408051843560208201526000910160405160208183030381529060405280519060200120905060006146888383876147ef565b9050600061469c6080870135610100615d04565b83901c90506000805b876080013581101561473b57600060408901356001831b166146f5576146ce60608a018a615fc8565b846146d88161595e565b95508181106146e9576146e96158e1565b905060200201356146f8565b60005b90506001821b8416614718576147118760018784614894565b9450614728565b6147258760018388614894565b94505b50806147338161595e565b9150506146a5565b50919695505050505050565b60008061475261492f565b61475a61494d565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156139b35750826147e45760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610733565b505195945050505050565b6000602082013561487b5760a082013561480b57506000610f6f565b828260a00135141561485f5760405162461bcd60e51b815260206004820152601f60248201527f6e6f6e4d656d626572736869704c656166206e6f7420756e72656c61746564006044820152606401610733565b6148748460008460a001358560c00135614894565b9050610f6f565b61488c846000858560200135614894565b949350505050565b60008385535060018401919091526021830152506041902090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806148fe61496b565b815260200161490b61496b565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461074557600080fd5b6000602082840312156149b057600080fd5b8135610f6f81614989565b6000602082840312156149cd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614a0c57614a0c6149d4565b60405290565b60405161010081016001600160401b0381118282101715614a0c57614a0c6149d4565b604051601f8201601f191681016001600160401b0381118282101715614a5d57614a5d6149d4565b604052919050565b600060408284031215614a7757600080fd5b614a7f6149ea565b9050813581526020820135602082015292915050565b600082601f830112614aa657600080fd5b604051604081018181106001600160401b0382111715614ac857614ac86149d4565b8060405250806040840185811115614adf57600080fd5b845b81811015613fc5578035835260209283019201614ae1565b600060808284031215614b0b57600080fd5b614b136149ea565b9050614b1f8383614a95565b8152614b2e8360408401614a95565b602082015292915050565b6000806000806101208587031215614b5057600080fd5b84359350614b618660208701614a65565b9250614b708660608701614af9565b9150614b7f8660e08701614a65565b905092959194509250565b60008083601f840112614b9c57600080fd5b5081356001600160401b03811115614bb357600080fd5b602083019150836020828501011115614bcb57600080fd5b9250929050565b63ffffffff8116811461074557600080fd5b803561406681614bd2565b60006001600160401b03821115614c0857614c086149d4565b5060051b60200190565b600082601f830112614c2357600080fd5b81356020614c38614c3383614bef565b614a35565b82815260059290921b84018101918181019086841115614c5757600080fd5b8286015b84811015614c7b578035614c6e81614bd2565b8352918301918301614c5b565b509695505050505050565b600082601f830112614c9757600080fd5b81356020614ca7614c3383614bef565b82815260069290921b84018101918181019086841115614cc657600080fd5b8286015b84811015614c7b57614cdc8882614a65565b835291830191604001614cca565b600082601f830112614cfb57600080fd5b81356020614d0b614c3383614bef565b82815260059290921b84018101918181019086841115614d2a57600080fd5b8286015b84811015614c7b5780356001600160401b03811115614d4d5760008081fd5b614d5b8986838b0101614c12565b845250918301918301614d2e565b60006101808284031215614d7c57600080fd5b614d84614a12565b905081356001600160401b0380821115614d9d57600080fd5b614da985838601614c12565b83526020840135915080821115614dbf57600080fd5b614dcb85838601614c86565b60208401526040840135915080821115614de457600080fd5b614df085838601614c86565b6040840152614e028560608601614af9565b6060840152614e148560e08601614a65565b6080840152610120840135915080821115614e2e57600080fd5b614e3a85838601614c12565b60a0840152610140840135915080821115614e5457600080fd5b614e6085838601614c12565b60c0840152610160840135915080821115614e7a57600080fd5b50614e8784828501614cea565b60e08301525092915050565b60008060008060008060a08789031215614eac57600080fd5b8635955060208701356001600160401b0380821115614eca57600080fd5b614ed68a838b01614b8a565b909750955060408901359150614eeb82614bd2565b90935060608801359080821115614f0157600080fd5b50614f0e89828a01614d69565b9250506080870135614f1f81614bd2565b809150509295509295509295565b600080600060608486031215614f4257600080fd5b8335614f4d81614989565b92506020848101356001600160401b0380821115614f6a57600080fd5b818701915087601f830112614f7e57600080fd5b813581811115614f9057614f906149d4565b614fa2601f8201601f19168501614a35565b91508082528884828501011115614fb857600080fd5b8084840185840137600084828401015250809450505050614fdb60408501614be4565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b8681101561507a578385038a52825180518087529087019087870190845b8181101561506557835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101615021565b50509a87019a95505091850191600101615003565b509298975050505050505050565b602081526000610f6f6020830184614fe4565b801515811461074557600080fd5b6000602082840312156150bb57600080fd5b8135610f6f8161509b565b6000602082840312156150d857600080fd5b8135610f6f81614bd2565b600080600080600080608087890312156150fc57600080fd5b863561510781614989565b9550602087013561511781614bd2565b945060408701356001600160401b038082111561513357600080fd5b61513f8a838b01614b8a565b9096509450606089013591508082111561515857600080fd5b818901915089601f83011261516c57600080fd5b81358181111561517b57600080fd5b8a60208260051b850101111561519057600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b838110156151dc57815163ffffffff16875295820195908201906001016151ba565b509495945050505050565b60006020808352835160808285015261520360a08501826151a6565b905081850151601f198086840301604087015261522083836151a6565b9250604087015191508086840301606087015261523d83836151a6565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561529457848783030184526152828287516151a6565b95880195938801939150600101615268565b509998505050505050505050565b60ff8116811461074557600080fd5b6000602082840312156152c357600080fd5b8135610f6f816152a2565b600060a082840312156152e057600080fd5b50919050565b6000606082840312156152e057600080fd5b60008060008084860360e081121561530f57600080fd5b85356001600160401b038082111561532657600080fd5b61533289838a016152ce565b96506153418960208a016152e6565b95506040607f198401121561535557600080fd5b60808801945060c088013592508083111561536f57600080fd5b505061537d87828801614c86565b91505092959194509250565b60008060006060848603121561539e57600080fd5b83356153a981614989565b92506020848101356001600160401b038111156153c557600080fd5b8501601f810187136153d657600080fd5b80356153e4614c3382614bef565b81815260059190911b8201830190838101908983111561540357600080fd5b928401925b8284101561542157833582529284019290840190615408565b8096505050505050614fdb60408501614be4565b6020808252825182820181905260009190848201906040850190845b8181101561546d57835183529284019291840191600101615451565b50909695505050505050565b60008060008060006080868803121561549157600080fd5b8535945060208601356001600160401b03808211156154af57600080fd5b6154bb89838a01614b8a565b9096509450604088013591506154d082614bd2565b909250606087013590808211156154e657600080fd5b506154f388828901614d69565b9150509295509295909350565b600081518084526020808501945080840160005b838110156151dc5781516001600160601b031687529582019590820190600101615514565b60408152600083516040808401526155546080840182615500565b90506020850151603f198483030160608501526155718282615500565b925050508260208301529392505050565b600060e082840312156152e057600080fd5b600080600060a084860312156155a957600080fd5b83356001600160401b03808211156155c057600080fd5b6155cc878388016152e6565b94506155db87602088016152e6565b935060808601359150808211156155f157600080fd5b506155fe86828701615582565b9150509250925092565b600080600083850361014081121561561f57600080fd5b60c081121561562d57600080fd5b5083925061563e8560c086016152e6565b91506101208401356001600160401b0381111561565a57600080fd5b6155fe86828701615582565b60008060006060848603121561567b57600080fd5b833561568681614989565b925060208401359150604084013561569d81614bd2565b809150509250925092565b82815260406020820152600061488c6040830184614fe4565b600080600060a084860312156156d657600080fd5b83356001600160401b03808211156156ed57600080fd5b6156f9878388016152ce565b945061570887602088016152e6565b9350608086013591508082111561571e57600080fd5b506155fe86828701614d69565b80356001600160401b038116811461406657600080fd5b60008060008060006080868803121561575a57600080fd5b6157638661572b565b94506157716020870161572b565b9350604086013561578181614bd2565b925060608601356001600160401b0381111561579c57600080fd5b6157a888828901614b8a565b969995985093965092949392505050565b600080600080608085870312156157cf57600080fd5b84356157da81614989565b935060208501356157ea81614989565b925060408501356157fa81614989565b9150606085013561580a81614989565b939692955090935050565b60006020828403121561582757600080fd5b8151610f6f81614989565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561588e57600080fd5b8151610f6f8161509b565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261591457634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038083168185168183048111821515161561595557615955615919565b02949350505050565b600060001982141561597257615972615919565b5060010190565b6000602080838503121561598c57600080fd5b82516001600160401b038111156159a257600080fd5b8301601f810185136159b357600080fd5b80516159c1614c3382614bef565b81815260059190911b820183019083810190878311156159e057600080fd5b928401925b828410156159fe578351825292840192908401906159e5565b979650505050505050565b600060208284031215615a1b57600080fd5b81516001600160601b0381168114610f6f57600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115615a5f57600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215615a8f57600080fd5b82516001600160401b03811115615aa557600080fd5b8301601f81018513615ab657600080fd5b8051615ac4614c3382614bef565b81815260059190911b82018301908381019087831115615ae357600080fd5b928401925b828410156159fe578351615afb81614bd2565b82529284019290840190615ae8565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000615b53604083018486615b0a565b95945050505050565b600060208284031215615b6e57600080fd5b81516001600160c01b0381168114610f6f57600080fd5b600060208284031215615b9757600080fd5b8151610f6f81614bd2565b600060ff821660ff811415615bb957615bb9615919565b60010192915050565b604081526000615bd6604083018587615b0a565b905063ffffffff83166020830152949350505050565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b600063ffffffff808316818516808303821115615c4257615c42615919565b01949350505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015615c8657815185529382019390820190600101615c6a565b5092979650505050505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b81811015615cda57845183529383019391830191600101615cbe565b5090979650505050505050565b600060208284031215615cf957600080fd5b8151610f6f816152a2565b600082821015615d1657615d16615919565b500390565b600060208284031215615d2d57600080fd5b5051919050565b60008219821115615d4757615d47615919565b500190565b600060208284031215615d5e57600080fd5b815167ffffffffffffffff1981168114610f6f57600080fd5b60006001600160601b0383811690831681811015615d9757615d97615919565b039392505050565b6000808335601e19843603018112615db657600080fd5b8301803591506001600160401b03821115615dd057600080fd5b602001915036819003821315614bcb57600080fd5b600060608284031215615df757600080fd5b604051606081018181106001600160401b0382111715615e1957615e196149d4565b6040528235615e2781614bd2565b8152602083810135908201526040928301359281019290925250919050565b8035615e5181614bd2565b63ffffffff16825260208181013590830152604090810135910152565b60a08101615e7c8285615e46565b825163ffffffff16606083015260208301516080830152610f6f565b6000602080835263ffffffff8085511682850152818501516001600160401b038082166040870152806040880151166060870152505080606086015116608085015250608084015160a08085015280518060c086015260005b81811015615f0d5782810184015186820160e001528301615ef1565b81811115615f1f57600060e083880101525b50601f01601f19169390930160e001949350505050565b6000816000190483118215151615615f5057615f50615919565b500290565b60a08101615f638285615e46565b8235615f6e81614bd2565b63ffffffff16606083015260209290920135608090910152919050565b600061ffff80831681811415615fa357615fa3615919565b6001019392505050565b600060208284031215615fbf57600080fd5b610f6f8261572b565b6000808335601e19843603018112615fdf57600080fd5b8301803591506001600160401b03821115615ff957600080fd5b6020019150600581901b3603821315614bcb57600080fd5b60006020808352608083016001600160401b038061602e8761572b565b168386015261603e83870161572b565b604082821681880152808801359150601e1988360301821261605f57600080fd5b9087019081358381111561607257600080fd5b60609350838102360389131561608757600080fd5b87840184905293849052908401926000919060a08801835b8281101561529457863582528787013588830152838701356fffffffffffffffffffffffffffffffff81168082146160d5578687fd5b8386015250958501959085019060010161609f565b60c0810182356160f981614bd2565b63ffffffff16825261610d6020840161572b565b6001600160401b0380821660208501528061612a6040870161572b565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b602081526000823561616781614bd2565b63ffffffff80821660208501526161806020860161572b565b91506001600160401b0380831660408601528061619f6040880161572b565b166060860152606086013592506161b583614bd2565b818316608086015260808601359250601e198636030183126161d657600080fd5b9185019182359150808211156161eb57600080fd5b508036038513156161fb57600080fd5b60a080850152615b5360c085018260208501615b0a565b60608101613e318284615e46565b825163ffffffff168152602080840151908201526040808401519082015260a08101610f6f6060830184805163ffffffff16825260209081015191015256fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122051eccbd441d93fe15ce6f6b26d23520fa693070e179a7d096ed0e8d6f2ada55164736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"taskResponseWindowBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"PAUSED_CHALLENGE_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSED_CREATE_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"PAUSED_RESPOND_TO_CHECKPOINT_TASK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_CHALLENGE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_RESPONSE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"aggregator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allCheckpointTaskHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allCheckpointTaskResponses\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkQuorum\",\"inputs\":[{\"name\":\"messageHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointTaskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpointTaskSuccesfullyChallenged\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createCheckpointTask\",\"inputs\":[{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_aggregator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastCheckpointToTimestamp\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextCheckpointTaskNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"raiseAndResolveCheckpointChallenge\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"pubkeysOfNonSigningOperators\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"respondToCheckpointTask\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"verifyMessageInclusionState\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structOperatorSetUpdate.Message\",\"components\":[{\"name\":\"id\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"operators\",\"type\":\"tuple[]\",\"internalType\":\"structRollupOperators.Operator[]\",\"components\":[{\"name\":\"pubkey\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"weight\",\"type\":\"uint128\",\"internalType\":\"uint128\"}]}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structSparseMerkleTree.Proof\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bitMask\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sideNodes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"numSideNodes\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonMembershipLeafPath\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nonMembershipLeafValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyMessageInclusionState\",\"inputs\":[{\"name\":\"message\",\"type\":\"tuple\",\"internalType\":\"structStateRootUpdate.Message\",\"components\":[{\"name\":\"rollupId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blockHeight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"nearDaTransactionId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nearDaCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structSparseMerkleTree.Proof\",\"components\":[{\"name\":\"key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"value\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"bitMask\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sideNodes\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"numSideNodes\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nonMembershipLeafPath\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"nonMembershipLeafValue\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"CheckpointTaskChallengedSuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskChallengedUnsuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskCreated\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"task\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.Task\",\"components\":[{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"fromTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"toTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumThreshold\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointTaskResponded\",\"inputs\":[{\"name\":\"taskResponse\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"stateRootUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"operatorSetUpdatesRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structCheckpoint.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162004d8d38038062004d8d8339810160408190526200003591620002c5565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200030c565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013391906200030c565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b391906200030c565b6001600160a01b031660e052506097805460ff1916600117905563ffffffff811661010052620001e2620001ea565b505062000333565b600054610100900460ff1615620002575760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620002aa576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002c257600080fd5b50565b60008060408385031215620002d957600080fd5b8251620002e681620002ac565b602084015190925063ffffffff811681146200030157600080fd5b809150509250929050565b6000602082840312156200031f57600080fd5b81516200032c81620002ac565b9392505050565b60805160a05160c05160e051610100516149d6620003b76000396000818161028e0152611e9301526000818161058b01526113dc01526000818161040801526115be01526000818161042f01528181611794015261195601526000818161045601528181610a43015281816110a70152818161123f015261147901526149d66000f3fe608060405234801561001057600080fd5b506004361061022d5760003560e01c80636fe9b41a1161013b578063b98fba4f116100b8578063efcf4edb1161007c578063efcf4edb146105b5578063f2fde38b146105c8578063f63c5bab146105ad578063f8c8765e146105db578063fabc1cbc146105ee57600080fd5b8063b98fba4f14610558578063cf4b17101461056b578063da16491f14610573578063df5cf72314610586578063ef024458146105ad57600080fd5b80638da5cb5b116100ff5780638da5cb5b146104ef57806395eebee614610500578063a168e3c014610523578063a35d2e0514610543578063b98d09081461054b57600080fd5b80636fe9b41a14610499578063715018a6146104ac5780637afa1eed146104b4578063886f1195146104ce5780638cbc379a146104e157600080fd5b8063416c7e5e116101c95780635c975abb1161018d5780635c975abb146103fb5780635df4594614610403578063683048351461042a5780636d14a987146104515780636efb46361461047857600080fd5b8063416c7e5e1461036c5780634f19ade71461037f578063595c6a67146103ad5780635ac86ab7146103b55780635ace2df7146103e857600080fd5b806310d67a2f14610232578063136439dd14610247578063171f1d5b1461025a5780631ad4318914610289578063245a7bfc146102c5578063292f7a4e146102e55780632e44b3491461030f57806332a8ad1e1461031f5780633df4c86614610339575b600080fd5b6102456102403660046136fc565b610601565b005b610245610255366004613719565b6106bd565b61026d610268366004613897565b6107ea565b6040805192151583529015156020830152015b60405180910390f35b6102b07f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610280565b60ca546102d8906001600160a01b031681565b60405161028091906138e8565b6102f86102f3366004613bfa565b610974565b604080519215158352602083019190915201610280565b60c9546102b09063ffffffff1681565b610327600281565b60405160ff9091168152602001610280565b60c9546103549064010000000090046001600160401b031681565b6040516001600160401b039091168152602001610280565b61024561037a366004613c9d565b610a41565b61039f61038d366004613cba565b60cb6020526000908152604090205481565b604051908152602001610280565b610245610bb6565b6103d86103c3366004613ce4565b606654600160ff9092169190911b9081161490565b6040519015158152602001610280565b6102456103f6366004613d2b565b610c70565b60665461039f565b6102d87f000000000000000000000000000000000000000000000000000000000000000081565b6102d87f000000000000000000000000000000000000000000000000000000000000000081565b6102d87f000000000000000000000000000000000000000000000000000000000000000081565b61048b610486366004613dbc565b610cfa565b604051610280929190613e86565b6103d86104a7366004613ee1565b611c07565b610245611c77565b60c9546102d890600160601b90046001600160a01b031681565b6065546102d8906001600160a01b031681565b60c95463ffffffff166102b0565b6033546001600160a01b03166102d8565b6103d861050e366004613cba565b60cd6020526000908152604090205460ff1681565b61039f610531366004613cba565b60cc6020526000908152604090205481565b610327600181565b6097546103d89060ff1681565b6103d8610566366004613f55565b611c8b565b610327600081565b610245610581366004613fb3565b611cea565b6102d87f000000000000000000000000000000000000000000000000000000000000000081565b6102b0606481565b6102456105c3366004614034565b612015565b6102456105d63660046136fc565b6123c6565b6102456105e93660046140a9565b61243c565b6102456105fc366004613719565b61259b565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106789190614105565b6001600160a01b0316336001600160a01b0316146106b15760405162461bcd60e51b81526004016106a890614122565b60405180910390fd5b6106ba816126f2565b50565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906106ed9033906004016138e8565b602060405180830381865afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e919061416c565b61074a5760405162461bcd60e51b81526004016106a890614189565b606654818116146107be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b60648201526084016106a8565b60668190556040518181523390600080516020614921833981519152906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610832576108326141d1565b60200201518951600160200201518a60200151600060028110610857576108576141d1565b60200201518b60200151600160028110610873576108736141d1565b602090810291909101518c518d8301516040516108d09a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6108f391906141e7565b905061096661090c61090588846127e9565b8690612880565b610914612914565b61095c61094d85610947604080518082018252600080825260209182015281518083019092526001825260029082015290565b906127e9565b6109568c6129d4565b90612880565b886201d4c0612a64565b909890975095505050505050565b6000806000806109878a8a8a8a8a610cfa565b9150915060005b88811015610a2d578563ffffffff16836020015182815181106109b3576109b36141d1565b60200260200101516109c5919061421f565b6001600160601b0316606463ffffffff16846000015183815181106109ec576109ec6141d1565b60200260200101516109fe919061421f565b6001600160601b03161015610a1b5750600093509150610a369050565b80610a258161424e565b91505061098e565b50600193509150505b965096945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190614105565b6001600160a01b0316336001600160a01b031614610b6f5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016106a8565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e90610be69033906004016138e8565b602060405180830381865afa158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c27919061416c565b610c435760405162461bcd60e51b81526004016106a890614189565b600019606681905560405190815233906000805160206149218339815191529060200160405180910390a2565b60665460029060049081161415610c995760405162461bcd60e51b81526004016106a890614269565b6000610ca86020860186613cba565b9050610cb48686612c88565b610cf157604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350610cf3565b505b5050505050565b6040805180820190915260608082526020820152600084610d6b5760405162461bcd60e51b815260206004820152603760248201526000805160206149818339815191526044820152761c995cce88195b5c1d1e481c5d5bdc9d5b481a5b9c1d5d604a1b60648201526084016106a8565b60408301515185148015610d83575060a08301515185145b8015610d93575060c08301515185145b8015610da3575060e08301515185145b610e0d5760405162461bcd60e51b8152602060048201526041602482015260008051602061498183398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016106a8565b82515160208401515114610e855760405162461bcd60e51b815260206004820152604460248201819052600080516020614981833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016106a8565b4363ffffffff168463ffffffff1610610ef45760405162461bcd60e51b815260206004820152603c602482015260008051602061498183398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016106a8565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610f3557610f35613732565b604051908082528060200260200182016040528015610f5e578160200160208202803683370190505b506020820152866001600160401b03811115610f7c57610f7c613732565b604051908082528060200260200182016040528015610fa5578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610fd957610fd9613732565b604051908082528060200260200182016040528015611002578160200160208202803683370190505b5081526020860151516001600160401b0381111561102257611022613732565b60405190808252806020026020018201604052801561104b578160200160208202803683370190505b508160200181905250600061111d8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611118919061429c565b612c91565b905060005b8760200151518110156113b85761116788602001518281518110611148576111486141d1565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061117d5761117d6141d1565b6020908102919091010152801561123d57602083015161119e6001836142b9565b815181106111ae576111ae6141d1565b602002602001015160001c836020015182815181106111cf576111cf6141d1565b602002602001015160001c1161123d576040805162461bcd60e51b815260206004820152602481019190915260008051602061498183398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016106a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110611282576112826141d1565b60200260200101518b8b6000015185815181106112a1576112a16141d1565b60200260200101516040518463ffffffff1660e01b81526004016112de9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906142d0565b6001600160c01b03168360000151828151811061133e5761133e6141d1565b6020026020010181815250506113a4610905611378848660000151858151811061136a5761136a6141d1565b602002602001015116612d09565b8a60200151848151811061138e5761138e6141d1565b6020026020010151612d3490919063ffffffff16565b9450806113b08161424e565b915050611122565b50506113c383612e18565b60975490935060ff166000816113da57600061145c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906142f9565b905060005b8a811015611ada5782156115bc578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f868181106114b8576114b86141d1565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c91906142f9565b6115269190614312565b116115bc5760405162461bcd60e51b8152602060048201526066602482015260008051602061498183398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016106a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106115fd576115fd6141d1565b9050013560f81c60f81b60f81c8c8c60a001518581518110611621576116216141d1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a1919061432a565b6001600160401b0319166116c48a604001518381518110611148576111486141d1565b67ffffffffffffffff1916146117605760405162461bcd60e51b8152602060048201526061602482015260008051602061498183398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016106a8565b61179089604001518281518110611779576117796141d1565b60200260200101518761288090919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d848181106117d3576117d36141d1565b9050013560f81c60f81b60f81c8c8c60c0015185815181106117f7576117f76141d1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190614355565b8560200151828151811061188d5761188d6141d1565b6001600160601b039092166020928302919091018201528501518051829081106118b9576118b96141d1565b6020026020010151856000015182815181106118d7576118d76141d1565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015611ac55761194f86600001518281518110611921576119216141d1565b60200260200101518f8f8681811061193b5761193b6141d1565b600192013560f81c9290921c811614919050565b15611ab3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f86818110611995576119956141d1565b9050013560f81c60f81b60f81c8e896020015185815181106119b9576119b96141d1565b60200260200101518f60e0015188815181106119d7576119d76141d1565b602002602001015187815181106119f0576119f06141d1565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614355565b8751805185908110611a8c57611a8c6141d1565b60200260200101818151611aa0919061437e565b6001600160601b03169052506001909101905b80611abd8161424e565b9150506118fb565b50508080611ad29061424e565b915050611461565b505050600080611af48c868a606001518b608001516107ea565b9150915081611b655760405162461bcd60e51b8152602060048201526043602482015260008051602061498183398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016106a8565b80611bc25760405162461bcd60e51b815260206004820152603960248201526000805160206149818339815191526044820152781c995cce881cda59db985d1d5c99481a5cc81a5b9d985b1a59603a1b60648201526084016106a8565b50506000878260200151604051602001611bdd9291906143a6565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6000611c1284612eb3565b823514611c315760405162461bcd60e51b81526004016106a8906143ee565b611c3f836040013583612ed1565b611c5b5760405162461bcd60e51b81526004016106a89061441b565b6000611c6685612f51565b6020840135149150505b9392505050565b611c7f612f81565b611c896000612fdb565b565b6000611c968461302d565b823514611cb55760405162461bcd60e51b81526004016106a8906143ee565b611cc3836020013583612ed1565b611cdf5760405162461bcd60e51b81526004016106a89061441b565b6000611c6685613066565b60ca546001600160a01b03163314611d445760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c657200000060448201526064016106a8565b60665460019060029081161415611d6d5760405162461bcd60e51b81526004016106a890614269565b6000611d7c6020860186613cba565b9050366000611d8e6080880188614446565b90925090506000611da56080890160608a01613cba565b905060cb6000611db860208a018a613cba565b63ffffffff1663ffffffff16815260200190815260200160002054611ddc89613079565b14611e1b5760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b60448201526064016106a8565b600060cc81611e2d60208b018b613cba565b63ffffffff1663ffffffff1681526020019081526020016000205414611e8e5760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b60448201526064016106a8565b611eb87f00000000000000000000000000000000000000000000000000000000000000008561448c565b63ffffffff164363ffffffff161115611f0c5760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b60448201526064016106a8565b6000611f178861308c565b9050600080611f2a8387878a8d89610974565b9150915081611f6c5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016106a8565b6040805180820190915263ffffffff4316815260208101829052611f9f81611f99368e90038e018e6144b4565b9061309f565b60cc6000611fb060208f018f613cba565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8b82604051611fff92919061453a565b60405180910390a1505050505050505050505050565b60c954600160601b90046001600160a01b031633146120805760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b60648201526084016106a8565b606654600090600190811614156120a95760405162461bcd60e51b81526004016106a890614269565b606463ffffffff851611156121125760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b60648201526084016106a8565b856001600160401b0316856001600160401b031610156121835760405162461bcd60e51b815260206004820152602660248201527f66726f6d54696d657374616d702067726561746572207468616e20746f54696d6044820152650657374616d760d41b60648201526084016106a8565b42856001600160401b031611156121ef5760405162461bcd60e51b815260206004820152602a60248201527f746f54696d657374616d702067726561746572207468616e2063757272656e7460448201526902074696d657374616d760b41b60648201526084016106a8565b6001600160401b038616158061221b575060c9546001600160401b036401000000009091048116908716115b61228d5760405162461bcd60e51b815260206004820152603a60248201527f66726f6d54696d657374616d70206e6f742067726561746572207468616e206c60448201527f61737420636865636b706f696e7420746f54696d657374616d7000000000000060648201526084016106a8565b60006040518060a001604052804363ffffffff168152602001886001600160401b03168152602001876001600160401b031681526020018663ffffffff16815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050612313816130d2565b60c9805463ffffffff908116600090815260cb60205260409081902093909355905491519116907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c3322590612367908490614564565b60405180910390a260c9546123839063ffffffff16600161448c565b60c980546001600160401b03909816640100000000026bffffffffffffffffffffffff1990981663ffffffff929092169190911796909617909555505050505050565b6123ce612f81565b6001600160a01b0381166124335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a8565b6106ba81612fdb565b600054610100900460ff161580801561245c5750600054600160ff909116105b806124765750303b158015612476575060005460ff166001145b6124d95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a8565b6000805460ff1916600117905580156124fc576000805461ff0019166101001790555b6125078560006130e5565b61251084612fdb565b60ca80546001600160a01b0319166001600160a01b038581169190911790915560c980546001600160601b0316600160601b928516929092029190911790558015610cf3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190614105565b6001600160a01b0316336001600160a01b0316146126425760405162461bcd60e51b81526004016106a890614122565b6066541981196066541916146126bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b60648201526084016106a8565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107df565b6001600160a01b0381166127805760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a8565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015261280561360d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156128385761283a565bfe5b50806128785760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016106a8565b505092915050565b604080518082019091526000808252602082015261289c61362b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156128385750806128785760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016106a8565b61291c613649565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080612a04600080516020614941833981519152866141e7565b90505b612a10816131bd565b9093509150600080516020614941833981519152828309831415612a4a576040805180820190915290815260208101919091529392505050565b600080516020614941833981519152600182089050612a07565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190612a9661366e565b60005b6002811015612c5b576000612aaf826006614602565b9050848260028110612ac357612ac36141d1565b60200201515183612ad5836000614312565b600c8110612ae557612ae56141d1565b6020020152848260028110612afc57612afc6141d1565b60200201516020015183826001612b139190614312565b600c8110612b2357612b236141d1565b6020020152838260028110612b3a57612b3a6141d1565b6020020151515183612b4d836002614312565b600c8110612b5d57612b5d6141d1565b6020020152838260028110612b7457612b746141d1565b6020020151516001602002015183612b8d836003614312565b600c8110612b9d57612b9d6141d1565b6020020152838260028110612bb457612bb46141d1565b602002015160200151600060028110612bcf57612bcf6141d1565b602002015183612be0836004614312565b600c8110612bf057612bf06141d1565b6020020152838260028110612c0757612c076141d1565b602002015160200151600160028110612c2257612c226141d1565b602002015183612c33836005614312565b600c8110612c4357612c436141d1565b60200201525080612c538161424e565b915050612a99565b50612c6461368d565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60005b92915050565b600080612c9d8461323f565b9050808360ff166001901b11611c705760405162461bcd60e51b815260206004820152603f602482015260008051602061496183398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016106a8565b6000805b8215612c8b57612d1e6001846142b9565b9092169180612d2c81614621565b915050612d0d565b60408051808201909152600080825260208201526102008261ffff1610612d905760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016106a8565b8161ffff1660011415612da4575081612c8b565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612e0d57600161ffff871660ff83161c81161415612df057612ded8484612880565b93505b612dfa8384612880565b92506201fffe600192831b169101612dc0565b509195945050505050565b60408051808201909152600080825260208201528151158015612e3d57506020820151155b15612e5b575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206149418339815191528460200151612e8e91906141e7565b612ea6906000805160206149418339815191526142b9565b905292915050565b919050565b6000612ec26020830183614643565b6001600160401b031692915050565b6000610100612ee3606084018461465e565b905011158015612ef95750610100826080013511155b612f3f5760405162461bcd60e51b81526020600482015260176024820152760a6d2c8ca40dcdec8cae640caf0c6cacac840c8cae0e8d604b1b60448201526064016106a8565b612f48826133a8565b90921492915050565b600081604051602001612f6491906146a7565b604051602081830303815290604052805190602001209050919050565b6033546001600160a01b03163314611c895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604061303e6020840184613cba565b63ffffffff16901b6130566040840160208501614643565b6001600160401b03161792915050565b600081604051602001612f649190614785565b600081604051602001612f649190614818565b600081604051602001612f6491906148d3565b600082826040516020016130b49291906148e1565b60405160208183030381529060405280519060200120905092915050565b600081604051602001612f649190614564565b6065546001600160a01b031615801561310657506001600160a01b03821615155b6131885760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a8565b606681905560405181815233906000805160206149218339815191529060200160405180910390a26131b9826126f2565b5050565b60008080600080516020614941833981519152600360008051602061494183398151915286600080516020614941833981519152888909090890506000613233827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206149418339815191526134a5565b91959194509092505050565b6000610100825111156132b65760405162461bcd60e51b815260206004820152604460248201819052600080516020614961833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016106a8565b81516132c457506000919050565b600080836000815181106132da576132da6141d1565b0160200151600160f89190911c81901b92505b845181101561339f57848181518110613308576133086141d1565b0160200151600160f89190911c1b915082821161338b5760405162461bcd60e51b8152602060048201526047602482015260008051602061496183398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016106a8565b918117916133988161424e565b90506132ed565b50909392505050565b60006133b261360d565b60408051843560208201526000910160405160208183030381529060405280519060200120905060006133e683838761354d565b905060006133fa60808701356101006142b9565b83901c90506000805b876080013581101561349957600060408901356001831b166134535761342c60608a018a61465e565b846134368161424e565b9550818110613447576134476141d1565b90506020020135613456565b60005b90506001821b84166134765761346f87600187846135f2565b9450613486565b61348387600183886135f2565b94505b50806134918161424e565b915050613403565b50919695505050505050565b6000806134b061368d565b6134b86136ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156128385750826135425760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016106a8565b505195945050505050565b600060208201356135d95760a082013561356957506000611c70565b828260a0013514156135bd5760405162461bcd60e51b815260206004820152601f60248201527f6e6f6e4d656d626572736869704c656166206e6f7420756e72656c617465640060448201526064016106a8565b6135d28460008460a001358560c001356135f2565b9050611c70565b6135ea8460008585602001356135f2565b949350505050565b60008385535060018401919091526021830152506041902090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061365c6136c9565b81526020016136696136c9565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146106ba57600080fd5b60006020828403121561370e57600080fd5b8135611c70816136e7565b60006020828403121561372b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561376a5761376a613732565b60405290565b60405161010081016001600160401b038111828210171561376a5761376a613732565b604051601f8201601f191681016001600160401b03811182821017156137bb576137bb613732565b604052919050565b6000604082840312156137d557600080fd5b6137dd613748565b9050813581526020820135602082015292915050565b600082601f83011261380457600080fd5b604051604081018181106001600160401b038211171561382657613826613732565b806040525080604084018581111561383d57600080fd5b845b81811015612e0d57803583526020928301920161383f565b60006080828403121561386957600080fd5b613871613748565b905061387d83836137f3565b815261388c83604084016137f3565b602082015292915050565b60008060008061012085870312156138ae57600080fd5b843593506138bf86602087016137c3565b92506138ce8660608701613857565b91506138dd8660e087016137c3565b905092959194509250565b6001600160a01b0391909116815260200190565b60008083601f84011261390e57600080fd5b5081356001600160401b0381111561392557600080fd5b60208301915083602082850101111561393d57600080fd5b9250929050565b803563ffffffff81168114612eae57600080fd5b60006001600160401b0382111561397157613971613732565b5060051b60200190565b600082601f83011261398c57600080fd5b813560206139a161399c83613958565b613793565b82815260059290921b840181019181810190868411156139c057600080fd5b8286015b848110156139e2576139d581613944565b83529183019183016139c4565b509695505050505050565b600082601f8301126139fe57600080fd5b81356020613a0e61399c83613958565b82815260069290921b84018101918181019086841115613a2d57600080fd5b8286015b848110156139e257613a4388826137c3565b835291830191604001613a31565b600082601f830112613a6257600080fd5b81356020613a7261399c83613958565b82815260059290921b84018101918181019086841115613a9157600080fd5b8286015b848110156139e25780356001600160401b03811115613ab45760008081fd5b613ac28986838b010161397b565b845250918301918301613a95565b60006101808284031215613ae357600080fd5b613aeb613770565b905081356001600160401b0380821115613b0457600080fd5b613b108583860161397b565b83526020840135915080821115613b2657600080fd5b613b32858386016139ed565b60208401526040840135915080821115613b4b57600080fd5b613b57858386016139ed565b6040840152613b698560608601613857565b6060840152613b7b8560e086016137c3565b6080840152610120840135915080821115613b9557600080fd5b613ba18583860161397b565b60a0840152610140840135915080821115613bbb57600080fd5b613bc78583860161397b565b60c0840152610160840135915080821115613be157600080fd5b50613bee84828501613a51565b60e08301525092915050565b60008060008060008060a08789031215613c1357600080fd5b8635955060208701356001600160401b0380821115613c3157600080fd5b613c3d8a838b016138fc565b9097509550859150613c5160408a01613944565b94506060890135915080821115613c6757600080fd5b50613c7489828a01613ad0565b925050613c8360808801613944565b90509295509295509295565b80151581146106ba57600080fd5b600060208284031215613caf57600080fd5b8135611c7081613c8f565b600060208284031215613ccc57600080fd5b611c7082613944565b60ff811681146106ba57600080fd5b600060208284031215613cf657600080fd5b8135611c7081613cd5565b600060a08284031215613d1357600080fd5b50919050565b600060608284031215613d1357600080fd5b60008060008084860360e0811215613d4257600080fd5b85356001600160401b0380821115613d5957600080fd5b613d6589838a01613d01565b9650613d748960208a01613d19565b95506040607f1984011215613d8857600080fd5b60808801945060c0880135925080831115613da257600080fd5b5050613db0878288016139ed565b91505092959194509250565b600080600080600060808688031215613dd457600080fd5b8535945060208601356001600160401b0380821115613df257600080fd5b613dfe89838a016138fc565b9096509450849150613e1260408901613944565b93506060880135915080821115613e2857600080fd5b50613e3588828901613ad0565b9150509295509295909350565b600081518084526020808501945080840160005b83811015613e7b5781516001600160601b031687529582019590820190600101613e56565b509495945050505050565b6040815260008351604080840152613ea16080840182613e42565b90506020850151603f19848303016060850152613ebe8282613e42565b925050508260208301529392505050565b600060e08284031215613d1357600080fd5b600080600060a08486031215613ef657600080fd5b83356001600160401b0380821115613f0d57600080fd5b613f1987838801613d19565b9450613f288760208801613d19565b93506080860135915080821115613f3e57600080fd5b50613f4b86828701613ecf565b9150509250925092565b6000806000838503610140811215613f6c57600080fd5b60c0811215613f7a57600080fd5b50839250613f8b8560c08601613d19565b91506101208401356001600160401b03811115613fa757600080fd5b613f4b86828701613ecf565b600080600060a08486031215613fc857600080fd5b83356001600160401b0380821115613fdf57600080fd5b613feb87838801613d01565b9450613ffa8760208801613d19565b9350608086013591508082111561401057600080fd5b50613f4b86828701613ad0565b80356001600160401b0381168114612eae57600080fd5b60008060008060006080868803121561404c57600080fd5b6140558661401d565b94506140636020870161401d565b935061407160408701613944565b925060608601356001600160401b0381111561408c57600080fd5b614098888289016138fc565b969995985093965092949392505050565b600080600080608085870312156140bf57600080fd5b84356140ca816136e7565b935060208501356140da816136e7565b925060408501356140ea816136e7565b915060608501356140fa816136e7565b939692955090935050565b60006020828403121561411757600080fd5b8151611c70816136e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561417e57600080fd5b8151611c7081613c8f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261420457634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038083168185168183048111821515161561424557614245614209565b02949350505050565b600060001982141561426257614262614209565b5060010190565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6000602082840312156142ae57600080fd5b8151611c7081613cd5565b6000828210156142cb576142cb614209565b500390565b6000602082840312156142e257600080fd5b81516001600160c01b0381168114611c7057600080fd5b60006020828403121561430b57600080fd5b5051919050565b6000821982111561432557614325614209565b500190565b60006020828403121561433c57600080fd5b815167ffffffffffffffff1981168114611c7057600080fd5b60006020828403121561436757600080fd5b81516001600160601b0381168114611c7057600080fd5b60006001600160601b038381169083168181101561439e5761439e614209565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156143e1578151855293820193908201906001016143c5565b5092979650505050505050565b6020808252601390820152720aee4dedcce40dacae6e6c2ceca40d2dcc8caf606b1b604082015260600190565b60208082526011908201527024b73b30b634b21029a6aa10383937b7b360791b604082015260600190565b6000808335601e1984360301811261445d57600080fd5b8301803591506001600160401b0382111561447757600080fd5b60200191503681900382131561393d57600080fd5b600063ffffffff8083168185168083038211156144ab576144ab614209565b01949350505050565b6000606082840312156144c657600080fd5b604051606081018181106001600160401b03821117156144e8576144e8613732565b6040526144f483613944565b815260208301356020820152604083013560408201528091505092915050565b63ffffffff61452282613944565b16825260208181013590830152604090810135910152565b60a081016145488285614514565b825163ffffffff16606083015260208301516080830152611c70565b6000602080835263ffffffff8085511682850152818501516001600160401b038082166040870152806040880151166060870152505080606086015116608085015250608084015160a08085015280518060c086015260005b818110156145d95782810184015186820160e0015283016145bd565b818111156145eb57600060e083880101525b50601f01601f19169390930160e001949350505050565b600081600019048311821515161561461c5761461c614209565b500290565b600061ffff8083168181141561463957614639614209565b6001019392505050565b60006020828403121561465557600080fd5b611c708261401d565b6000808335601e1984360301811261467557600080fd5b8301803591506001600160401b0382111561468f57600080fd5b6020019150600581901b360382131561393d57600080fd5b60006020808352608083016001600160401b03806146c48761401d565b16838601526146d483870161401d565b604082821681880152808801359150601e198836030182126146f557600080fd5b9087019081358381111561470857600080fd5b60609350838102360389131561471d57600080fd5b87840184905293849052908401926000919060a08801835b8281101561477757863582528787013588830152838701356001600160801b038116808214614762578687fd5b83860152509585019590850190600101614735565b509998505050505050505050565b60c0810163ffffffff61479784613944565b1682526147a66020840161401d565b6001600160401b038082166020850152806147c36040870161401d565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600063ffffffff8061482d85613944565b16602084015261483f6020850161401d565b6001600160401b0380821660408601528061485c6040880161401d565b1660608601528261486f60608801613944565b16608086015260808601359250601e1986360301831261488e57600080fd5b9185019182359150808211156148a357600080fd5b508036038513156148b357600080fd5b60a0808501526148ca60c0850182602085016147ef565b95945050505050565b60608101612c8b8284614514565b825163ffffffff168152602080840151908201526040808401519082015260a08101611c706060830184805163ffffffff16825260209081015191015256feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd474269746d61705574696c732e6f72646572656442797465734172726179546f42424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212209faf97f29eb662e279c65d2456120e7cf4fe7f7cfbe637d2dffff638424b608564736f6c634300080c0033", } // ContractSFFLTaskManagerABI is the input ABI used to generate the binding from. @@ -801,129 +786,35 @@ func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) Generator( return _ContractSFFLTaskManager.Contract.Generator(&_ContractSFFLTaskManager.CallOpts) } -// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. -// -// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCaller) GetCheckSignaturesIndices(opts *bind.CallOpts, registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { - var out []interface{} - err := _ContractSFFLTaskManager.contract.Call(opts, &out, "getCheckSignaturesIndices", registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) - - if err != nil { - return *new(OperatorStateRetrieverCheckSignaturesIndices), err - } - - out0 := *abi.ConvertType(out[0], new(OperatorStateRetrieverCheckSignaturesIndices)).(*OperatorStateRetrieverCheckSignaturesIndices) - - return out0, err - -} - -// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. -// -// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerSession) GetCheckSignaturesIndices(registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { - return _ContractSFFLTaskManager.Contract.GetCheckSignaturesIndices(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) -} - -// GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. -// -// Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) GetCheckSignaturesIndices(registryCoordinator common.Address, referenceBlockNumber uint32, quorumNumbers []byte, nonSignerOperatorIds [][32]byte) (OperatorStateRetrieverCheckSignaturesIndices, error) { - return _ContractSFFLTaskManager.Contract.GetCheckSignaturesIndices(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, referenceBlockNumber, quorumNumbers, nonSignerOperatorIds) -} - -// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCaller) GetOperatorState(opts *bind.CallOpts, registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { - var out []interface{} - err := _ContractSFFLTaskManager.contract.Call(opts, &out, "getOperatorState", registryCoordinator, quorumNumbers, blockNumber) - - if err != nil { - return *new([][]OperatorStateRetrieverOperator), err - } - - out0 := *abi.ConvertType(out[0], new([][]OperatorStateRetrieverOperator)).(*[][]OperatorStateRetrieverOperator) - - return out0, err - -} - -// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerSession) GetOperatorState(registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { - return _ContractSFFLTaskManager.Contract.GetOperatorState(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, quorumNumbers, blockNumber) -} - -// GetOperatorState is a free data retrieval call binding the contract method 0x3563b0d1. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes quorumNumbers, uint32 blockNumber) view returns((address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) GetOperatorState(registryCoordinator common.Address, quorumNumbers []byte, blockNumber uint32) ([][]OperatorStateRetrieverOperator, error) { - return _ContractSFFLTaskManager.Contract.GetOperatorState(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, quorumNumbers, blockNumber) -} - -// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCaller) GetOperatorState0(opts *bind.CallOpts, registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { - var out []interface{} - err := _ContractSFFLTaskManager.contract.Call(opts, &out, "getOperatorState0", registryCoordinator, operatorId, blockNumber) - - if err != nil { - return *new(*big.Int), *new([][]OperatorStateRetrieverOperator), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - out1 := *abi.ConvertType(out[1], new([][]OperatorStateRetrieverOperator)).(*[][]OperatorStateRetrieverOperator) - - return out0, out1, err - -} - -// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerSession) GetOperatorState0(registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { - return _ContractSFFLTaskManager.Contract.GetOperatorState0(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, operatorId, blockNumber) -} - -// GetOperatorState0 is a free data retrieval call binding the contract method 0xcefdc1d4. -// -// Solidity: function getOperatorState(address registryCoordinator, bytes32 operatorId, uint32 blockNumber) view returns(uint256, (address,bytes32,uint96)[][]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) GetOperatorState0(registryCoordinator common.Address, operatorId [32]byte, blockNumber uint32) (*big.Int, [][]OperatorStateRetrieverOperator, error) { - return _ContractSFFLTaskManager.Contract.GetOperatorState0(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, operatorId, blockNumber) -} - -// GetQuorumBitmapsAtBlockNumber is a free data retrieval call binding the contract method 0x5c155662. +// LastCheckpointToTimestamp is a free data retrieval call binding the contract method 0x3df4c866. // -// Solidity: function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] operatorIds, uint32 blockNumber) view returns(uint256[]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCaller) GetQuorumBitmapsAtBlockNumber(opts *bind.CallOpts, registryCoordinator common.Address, operatorIds [][32]byte, blockNumber uint32) ([]*big.Int, error) { +// Solidity: function lastCheckpointToTimestamp() view returns(uint64) +func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCaller) LastCheckpointToTimestamp(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ContractSFFLTaskManager.contract.Call(opts, &out, "getQuorumBitmapsAtBlockNumber", registryCoordinator, operatorIds, blockNumber) + err := _ContractSFFLTaskManager.contract.Call(opts, &out, "lastCheckpointToTimestamp") if err != nil { - return *new([]*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// GetQuorumBitmapsAtBlockNumber is a free data retrieval call binding the contract method 0x5c155662. +// LastCheckpointToTimestamp is a free data retrieval call binding the contract method 0x3df4c866. // -// Solidity: function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] operatorIds, uint32 blockNumber) view returns(uint256[]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerSession) GetQuorumBitmapsAtBlockNumber(registryCoordinator common.Address, operatorIds [][32]byte, blockNumber uint32) ([]*big.Int, error) { - return _ContractSFFLTaskManager.Contract.GetQuorumBitmapsAtBlockNumber(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, operatorIds, blockNumber) +// Solidity: function lastCheckpointToTimestamp() view returns(uint64) +func (_ContractSFFLTaskManager *ContractSFFLTaskManagerSession) LastCheckpointToTimestamp() (uint64, error) { + return _ContractSFFLTaskManager.Contract.LastCheckpointToTimestamp(&_ContractSFFLTaskManager.CallOpts) } -// GetQuorumBitmapsAtBlockNumber is a free data retrieval call binding the contract method 0x5c155662. +// LastCheckpointToTimestamp is a free data retrieval call binding the contract method 0x3df4c866. // -// Solidity: function getQuorumBitmapsAtBlockNumber(address registryCoordinator, bytes32[] operatorIds, uint32 blockNumber) view returns(uint256[]) -func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) GetQuorumBitmapsAtBlockNumber(registryCoordinator common.Address, operatorIds [][32]byte, blockNumber uint32) ([]*big.Int, error) { - return _ContractSFFLTaskManager.Contract.GetQuorumBitmapsAtBlockNumber(&_ContractSFFLTaskManager.CallOpts, registryCoordinator, operatorIds, blockNumber) +// Solidity: function lastCheckpointToTimestamp() view returns(uint64) +func (_ContractSFFLTaskManager *ContractSFFLTaskManagerCallerSession) LastCheckpointToTimestamp() (uint64, error) { + return _ContractSFFLTaskManager.Contract.LastCheckpointToTimestamp(&_ContractSFFLTaskManager.CallOpts) } // NextCheckpointTaskNum is a free data retrieval call binding the contract method 0x2e44b349. diff --git a/contracts/bindings/TransparentUpgradeableProxy/binding.go b/contracts/bindings/TransparentUpgradeableProxy/binding.go index 5ce09ff2..4e903eee 100644 --- a/contracts/bindings/TransparentUpgradeableProxy/binding.go +++ b/contracts/bindings/TransparentUpgradeableProxy/binding.go @@ -32,7 +32,7 @@ var ( // ContractTransparentUpgradeableProxyMetaData contains all meta data concerning the ContractTransparentUpgradeableProxy contract. var ContractTransparentUpgradeableProxyMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_logic\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"payable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"admin\",\"inputs\":[],\"outputs\":[{\"name\":\"admin_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"changeAdmin\",\"inputs\":[{\"name\":\"newAdmin\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"implementation\",\"inputs\":[],\"outputs\":[{\"name\":\"implementation_\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeTo\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"upgradeToAndCall\",\"inputs\":[{\"name\":\"newImplementation\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AdminChanged\",\"inputs\":[{\"name\":\"previousAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newAdmin\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BeaconUpgraded\",\"inputs\":[{\"name\":\"beacon\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Upgraded\",\"inputs\":[{\"name\":\"implementation\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x608060405260405162000e8138038062000e81833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5a60279139620002f8565b9392505050565b60006200018060008051602062000e3a83398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3a83398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086780620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209bc59b801d4e109c2a0a1e4183a3394317968afb68ebed01e8334d252fedca7d64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + Bin: "0x608060405260405162000e7d38038062000e7d833981016040819052620000269162000490565b828162000036828260006200004d565b50620000449050826200008a565b505050620005c3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000e5660279139620002f8565b9392505050565b60006200018060008051602062000e3683398151915260001b620003de60201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e3683398151915260001b620003de60201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200028c1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620002081760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000570565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f191906200058e565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b83811115620000835750506000910152565b600080600060608486031215620004a657600080fd5b620004b1846200042e565b9250620004c1602085016200042e565b60408501519092506001600160401b0380821115620004df57600080fd5b818601915086601f830112620004f457600080fd5b8151818111156200050957620005096200044b565b604051601f8201601f19908116603f011681019083821181831017156200053457620005346200044b565b816040528281528960208487010111156200054e57600080fd5b6200056183602083016020880162000461565b80955050505050509250925092565b600082516200058481846020870162000461565b9190910192915050565b6020815260008251806020840152620005af81604085016020870162000461565b601f01601f19169190910160400192915050565b61086380620005d36000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", } // ContractTransparentUpgradeableProxyABI is the input ABI used to generate the binding from. diff --git a/contracts/evm/src/eth/SFFLTaskManager.sol b/contracts/evm/src/eth/SFFLTaskManager.sol index 2c0b5c6b..63f9d18f 100644 --- a/contracts/evm/src/eth/SFFLTaskManager.sol +++ b/contracts/evm/src/eth/SFFLTaskManager.sol @@ -6,7 +6,6 @@ import {OwnableUpgradeable} from "@openzeppelin-upgrades/contracts/access/Ownabl import {Pausable} from "@eigenlayer/contracts/permissions/Pausable.sol"; import {BLSApkRegistry} from "eigenlayer-middleware/src/BLSApkRegistry.sol"; import {BLSSignatureChecker} from "eigenlayer-middleware/src/BLSSignatureChecker.sol"; -import {OperatorStateRetriever} from "eigenlayer-middleware/src/OperatorStateRetriever.sol"; import {IPauserRegistry} from "@eigenlayer/contracts/interfaces/IPauserRegistry.sol"; import {IRegistryCoordinator} from "eigenlayer-middleware/src/interfaces/IRegistryCoordinator.sol"; import {BN254} from "eigenlayer-middleware/src/libraries/BN254.sol"; @@ -21,7 +20,7 @@ import {Checkpoint} from "./task/Checkpoint.sol"; * @notice Manages task submissions and resolving, as well as verifies * agreements */ -contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSignatureChecker, OperatorStateRetriever { +contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSignatureChecker { using BN254 for BN254.G1Point; using Checkpoint for Checkpoint.Task; using Checkpoint for Checkpoint.TaskResponse; @@ -61,6 +60,10 @@ contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSign * @notice Next checkpoint task number */ uint32 public nextCheckpointTaskNum; + /** + * @notice Last checkpoint toTimestamp + */ + uint64 public lastCheckpointToTimestamp; /** * @notice Task generator whitelisted address */ @@ -149,8 +152,8 @@ contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSign /** * @notice Creates a new checkpoint task * @dev Only callable by the task generator - * @param fromTimestamp NEAR block range start - * @param toTimestamp NEAR block range end + * @param fromTimestamp Timestamp range start + * @param toTimestamp Timestamp range end (inclusive) * @param quorumThreshold Necessary quorum, based on THRESHOLD_DENOMINATOR * @param quorumNumbers Byte array of quorum numbers */ @@ -161,6 +164,12 @@ contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSign bytes calldata quorumNumbers ) external onlyTaskGenerator onlyWhenNotPaused(PAUSED_CREATE_CHECKPOINT_TASK) { require(quorumThreshold <= THRESHOLD_DENOMINATOR, "Quorum threshold greater than denominator"); + require(toTimestamp >= fromTimestamp, "fromTimestamp greater than toTimestamp"); + require(toTimestamp <= block.timestamp, "toTimestamp greater than current timestamp"); + require( + fromTimestamp == 0 || fromTimestamp > lastCheckpointToTimestamp, + "fromTimestamp not greater than last checkpoint toTimestamp" + ); Checkpoint.Task memory newTask = Checkpoint.Task({ taskCreatedBlock: uint32(block.number), @@ -172,7 +181,9 @@ contract SFFLTaskManager is Initializable, OwnableUpgradeable, Pausable, BLSSign allCheckpointTaskHashes[nextCheckpointTaskNum] = newTask.hash(); emit CheckpointTaskCreated(nextCheckpointTaskNum, newTask); + nextCheckpointTaskNum = nextCheckpointTaskNum + 1; + lastCheckpointToTimestamp = toTimestamp; } /** diff --git a/contracts/evm/test/SFFLTaskManager.t.sol b/contracts/evm/test/SFFLTaskManager.t.sol index 4be92be7..a6fddeeb 100644 --- a/contracts/evm/test/SFFLTaskManager.t.sol +++ b/contracts/evm/test/SFFLTaskManager.t.sol @@ -16,6 +16,16 @@ import {OperatorSetUpdate, RollupOperators} from "../src/base/message/OperatorSe import {TestUtils} from "./utils/TestUtils.sol"; +contract SFFLTaskManagerHarness is SFFLTaskManager { + constructor(IRegistryCoordinator registryCoordinator, uint32 taskResponseWindowBlock) + SFFLTaskManager(registryCoordinator, taskResponseWindowBlock) + {} + + function setLastCheckpointToTimestamp(uint64 timestamp) public { + lastCheckpointToTimestamp = timestamp; + } +} + contract SFFLTaskManagerTest is TestUtils { using BN254 for BN254.G1Point; using Checkpoint for Checkpoint.Task; @@ -23,7 +33,7 @@ contract SFFLTaskManagerTest is TestUtils { using StateRootUpdate for StateRootUpdate.Message; using OperatorSetUpdate for OperatorSetUpdate.Message; - SFFLTaskManager public taskManager; + SFFLTaskManagerHarness public taskManager; uint32 public constant TASK_RESPONSE_WINDOW_BLOCK = 30; address public aggregator; @@ -43,9 +53,9 @@ contract SFFLTaskManagerTest is TestUtils { aggregator = addr("aggregator"); generator = addr("generator"); - address impl = address(new SFFLTaskManager(registryCoordinator, TASK_RESPONSE_WINDOW_BLOCK)); + address impl = address(new SFFLTaskManagerHarness(registryCoordinator, TASK_RESPONSE_WINDOW_BLOCK)); - taskManager = SFFLTaskManager( + taskManager = SFFLTaskManagerHarness( deployProxy( impl, address(proxyAdmin), @@ -90,6 +100,57 @@ contract SFFLTaskManagerTest is TestUtils { taskManager.createCheckpointTask(task.fromTimestamp, task.toTimestamp, task.quorumThreshold, task.quorumNumbers); } + function test_createCheckpointTask_RevertWhen_FromTimestampGreaterThanToTimestamp() public { + Checkpoint.Task memory task = Checkpoint.Task({ + taskCreatedBlock: 100, + fromTimestamp: 2, + toTimestamp: 1, + quorumThreshold: quorumThreshold(thresholdDenominator, 1), + quorumNumbers: hex"00" + }); + + vm.expectRevert("fromTimestamp greater than toTimestamp"); + + vm.prank(generator); + taskManager.createCheckpointTask(task.fromTimestamp, task.toTimestamp, task.quorumThreshold, task.quorumNumbers); + } + + function test_createCheckpointTask_RevertWhen_ToTimestampGreaterThanCurrentTimestamp() public { + vm.warp(10); + + Checkpoint.Task memory task = Checkpoint.Task({ + taskCreatedBlock: 100, + fromTimestamp: 1, + toTimestamp: 20, + quorumThreshold: quorumThreshold(thresholdDenominator, 1), + quorumNumbers: hex"00" + }); + + vm.expectRevert("toTimestamp greater than current timestamp"); + + vm.prank(generator); + taskManager.createCheckpointTask(task.fromTimestamp, task.toTimestamp, task.quorumThreshold, task.quorumNumbers); + } + + function test_createCheckpointTask_RevertWhen_FromTimestampNotGreaterThanLastCheckpointToTimestamp() public { + taskManager.setLastCheckpointToTimestamp(1); + + vm.warp(2); + + Checkpoint.Task memory task = Checkpoint.Task({ + taskCreatedBlock: 100, + fromTimestamp: 1, + toTimestamp: 2, + quorumThreshold: quorumThreshold(thresholdDenominator, 1), + quorumNumbers: hex"00" + }); + + vm.expectRevert("fromTimestamp not greater than last checkpoint toTimestamp"); + + vm.prank(generator); + taskManager.createCheckpointTask(task.fromTimestamp, task.toTimestamp, task.quorumThreshold, task.quorumNumbers); + } + function test_createCheckpointTask() public { Checkpoint.Task memory task = Checkpoint.Task({ taskCreatedBlock: 100, diff --git a/core/chainio/avs_reader.go b/core/chainio/avs_reader.go index b6596a3f..46050ce5 100644 --- a/core/chainio/avs_reader.go +++ b/core/chainio/avs_reader.go @@ -33,6 +33,7 @@ type AvsReaderer interface { GetOperatorSetById(ctx context.Context, id uint64) ([]opsetupdatereg.RollupOperatorsOperator, error) GetOperatorSetUpdateBlock(ctx context.Context, id uint64) (uint32, error) GetNextOperatorSetUpdateId(ctx context.Context) (uint64, error) + GetLastCheckpointToTimestamp(ctx context.Context) (uint64, error) } type AvsReader struct { @@ -165,3 +166,11 @@ func (r *AvsReader) GetNextOperatorSetUpdateId(ctx context.Context) (uint64, err } return count, nil } + +func (r *AvsReader) GetLastCheckpointToTimestamp(ctx context.Context) (uint64, error) { + lastCheckpointToTimestamp, err := r.AvsServiceBindings.TaskManager.LastCheckpointToTimestamp(&bind.CallOpts{}) + if err != nil { + return 0, err + } + return lastCheckpointToTimestamp, nil +} diff --git a/core/chainio/mocks/avs_reader.go b/core/chainio/mocks/avs_reader.go index f82b8ab9..ccab9e1f 100644 --- a/core/chainio/mocks/avs_reader.go +++ b/core/chainio/mocks/avs_reader.go @@ -92,6 +92,21 @@ func (mr *MockAvsReadererMockRecorder) GetErc20Mock(arg0, arg1 any) *gomock.Call return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetErc20Mock", reflect.TypeOf((*MockAvsReaderer)(nil).GetErc20Mock), arg0, arg1) } +// GetLastCheckpointToTimestamp mocks base method. +func (m *MockAvsReaderer) GetLastCheckpointToTimestamp(arg0 context.Context) (uint64, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetLastCheckpointToTimestamp", arg0) + ret0, _ := ret[0].(uint64) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLastCheckpointToTimestamp indicates an expected call of GetLastCheckpointToTimestamp. +func (mr *MockAvsReadererMockRecorder) GetLastCheckpointToTimestamp(arg0 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLastCheckpointToTimestamp", reflect.TypeOf((*MockAvsReaderer)(nil).GetLastCheckpointToTimestamp), arg0) +} + // GetNextOperatorSetUpdateId mocks base method. func (m *MockAvsReaderer) GetNextOperatorSetUpdateId(arg0 context.Context) (uint64, error) { m.ctrl.T.Helper() diff --git a/core/config/config.go b/core/config/config.go index 80ef20b4..48173a50 100644 --- a/core/config/config.go +++ b/core/config/config.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "os" + "time" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" @@ -31,6 +32,7 @@ type Config struct { AggregatorServerIpPortAddr string AggregatorRestServerIpPortAddr string AggregatorDatabasePath string + AggregatorCheckpointInterval time.Duration RegisterOperatorOnStartup bool // json:"-" skips this field when marshaling (only used for logging to stdout), since SignerFn doesnt implement marshalJson AggregatorAddress common.Address @@ -44,6 +46,7 @@ type ConfigRaw struct { AggregatorServerIpPortAddr string `yaml:"aggregator_server_ip_port_address"` AggregatorRestServerIpPortAddr string `yaml:"aggregator_rest_server_ip_port_address"` AggregatorDatabasePath string `yaml:"aggregator_database_path"` + AggregatorCheckpointInterval uint32 `yaml:"aggregator_checkpoint_interval"` RegisterOperatorOnStartup bool `yaml:"register_operator_on_startup"` RollupIdsToRpcUrls map[uint32]string `yaml:"rollup_ids_to_rpc_urls"` } @@ -168,6 +171,7 @@ func NewConfig(ctx *cli.Context, configRaw ConfigRaw, logger sdklogging.Logger) RegisterOperatorOnStartup: configRaw.RegisterOperatorOnStartup, AggregatorRestServerIpPortAddr: configRaw.AggregatorRestServerIpPortAddr, AggregatorDatabasePath: configRaw.AggregatorDatabasePath, + AggregatorCheckpointInterval: time.Duration(configRaw.AggregatorCheckpointInterval) * time.Millisecond, AggregatorAddress: aggregatorAddr, RollupsInfo: rollupsInfo, } diff --git a/tests/anvil/data/avs-and-eigenlayer-deployed-anvil-state.json b/tests/anvil/data/avs-and-eigenlayer-deployed-anvil-state.json index 94f6503a..657f4992 100644 --- a/tests/anvil/data/avs-and-eigenlayer-deployed-anvil-state.json +++ b/tests/anvil/data/avs-and-eigenlayer-deployed-anvil-state.json @@ -1 +1 @@ -{"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x2960eaeaeab1400","code":"0x","storage":{}},"0x000000000000000000636f6e736f6c652e6c6f67":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a2646970667358221220f4142d31b19c8d9ca756fceb11e0a14c189743e7b456cda04629fad4f5e08cf164736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000426846141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea264697066735822122040c065692c9e8827dec1688569c977abcb17999af2e58d54d2ef89bc1ff6f5dc64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0e801d84fa97b50751dbf25036d067dcf18858bf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","0x66":"0x0","0xc9":"0xa0ee7a142d267c1f36714e4a8f75612f20a7972000000000","0xca":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x1291be112d480055dafd8a610b7d1e203891c274":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101a55760003560e01c80639f3ccf65116100ef578063c8294c5611610092578063c8294c561461048b578063d5eccc051461049e578063dd9846b9146104b1578063df5cf723146104d9578063f2be94ae14610500578063f851e19814610513578063fa28c62714610526578063ff694a771461053957600080fd5b80639f3ccf65146103a3578063ac6bfb03146103b6578063adc804da146103d6578063b6904b7814610416578063bc9a40c314610429578063bd29b8cd1461043c578063c46778a51461044f578063c601527d1461047857600080fd5b80634bd26e09116101575780634bd26e09146102a55780635401ed27146102d55780635e5a6775146102e85780635f1f2d77146102f757806366acfefe1461030a5780636d14a987146103355780637c1723471461036957806381c075021461038357600080fd5b80630491b41c146101aa57806308732461146101e05780631f9b74e01461020157806320b662981461022c57806325504777146102415780632cd95940146102625780633ca5a5f514610282575b600080fd5b6101cd6101b8366004612b78565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b6101f36101ee366004612b93565b61054c565b6040516101d7929190612bbd565b61021461020f366004612bf7565b610595565b6040516001600160601b0390911681526020016101d7565b61023f61023a366004612c72565b6105e5565b005b61025461024f366004612d33565b610900565b6040516101d7929190612dd2565b610275610270366004612df7565b610bcb565b6040516101d79190612e52565b6101cd610290366004612b78565b60ff1660009081526003602052604090205490565b6101cd6102b3366004612df7565b600091825260026020908152604080842060ff93909316845291905290205490565b6102146102e3366004612df7565b610c6a565b6101cd670de0b6b3a764000081565b61023f610305366004612f31565b610c83565b61031d610318366004612d33565b611095565b6040516001600160c01b0390911681526020016101d7565b61035c7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516101d79190612fd9565b610371602081565b60405160ff90911681526020016101d7565b610396610391366004613001565b6111ea565b6040516101d79190613053565b61035c6103b1366004612b93565b6114b4565b6103c96103c4366004613091565b6114ec565b6040516101d791906130c4565b6103e96103e4366004612b93565b611575565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016101d7565b6103c9610424366004612b93565b6115ef565b61023f6104373660046130e9565b61166d565b61023f61044a366004613113565b611766565b61021461045d366004612b78565b6000602081905290815260409020546001600160601b031681565b61023f6104863660046131df565b61188d565b61021461049936600461322c565b611981565b6102146104ac366004612b78565b6119ff565b6104c46104bf366004613268565b611a52565b60405163ffffffff90911681526020016101d7565b61035c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021461050e3660046132a4565b611a67565b6103c9610521366004612df7565b611afc565b610214610534366004613268565b611bc3565b61023f6105473660046132e6565b611c24565b6003602052816000526040600020818154811061056857600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906105cf5760405162461bcd60e51b81526004016105c690613343565b60405180910390fd5b60006105db8585611d8f565b5095945050505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106679190613394565b6001600160a01b0316336001600160a01b0316146106975760405162461bcd60e51b81526004016105c6906133b1565b846106b38160ff16600090815260016020526040902054151590565b6106cf5760405162461bcd60e51b81526004016105c690613343565b8380610745576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105c6565b8281146107b65760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f646966795374726174656779506172616044820152780dae67440d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d603b1b60648201526084016105c6565b60ff87166000908152600360205260408120905b828110156108f5578585828181106107e4576107e461342d565b90506020020160208101906107f99190613443565b8289898481811061080c5761080c61342d565b90506020020135815481106108235761082361342d565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff1660008051602061375d833981519152838a8a8581811061087a5761087a61342d565b90506020020135815481106108915761089161342d565b6000918252602090912001546001600160a01b03168888858181106108b8576108b861342d565b90506020020160208101906108cd9190613443565b6040516108db929190612bbd565b60405180910390a2806108ed81613474565b9150506107ca565b505050505050505050565b606080336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf161461094b5760405162461bcd60e51b81526004016105c69061348f565b6000836001600160401b0381111561096557610965612ea0565b60405190808252806020026020018201604052801561098e578160200160208202803683370190505b5090506000846001600160401b038111156109ab576109ab612ea0565b6040519080825280602002602001820160405280156109d4578160200160208202803683370190505b50905060005b85811015610bbd5760008787838181106109f6576109f661342d565b919091013560f81c60008181526001602052604090205490925015159050610a7e5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105c6565b600080610a8b838d611d8f565b9150915080610b285760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105c6565b6000610b358c8585611f92565b905082878681518110610b4a57610b4a61342d565b60200260200101906001600160601b031690816001600160601b031681525050610b748482612212565b868681518110610b8657610b8661342d565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610bb590613474565b9150506109da565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c5d576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c04565b5050505090505b92915050565b600080610c778484611afc565b60400151949350505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190613394565b6001600160a01b0316336001600160a01b031614610d355760405162461bcd60e51b81526004016105c6906133b1565b81610d518160ff16600090815260016020526040902054151590565b610d6d5760405162461bcd60e51b81526004016105c690613343565b815180610de25760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105c6565b60ff841660009081526003602090815260408083206004909252822090915b8381101561108c578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e4157610e4161342d565b602002602001015181548110610e5957610e5961342d565b600091825260209091200154604051610e7b916001600160a01b031690612fd9565b60405180910390a28660ff1660008051602061375d83398151915284888481518110610ea957610ea961342d565b602002602001015181548110610ec157610ec161342d565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f0190600190613501565b81548110610f1157610f1161342d565b9060005260206000200183878381518110610f2e57610f2e61342d565b602002602001015181548110610f4657610f4661342d565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610f9957610f99613518565b60008281526020812082016000199081019190915501905581548290610fc190600190613501565b81548110610fd157610fd161342d565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110025761100261342d565b60200260200101518154811061101a5761101a61342d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061105857611058613518565b600082815260209020810160001990810180546001600160a01b03191690550190558061108481613474565b915050610e01565b50505050505050565b6000336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146110df5760405162461bcd60e51b81526004016105c69061348f565b6000805b838110156105db5760008585838181106110ff576110ff61342d565b919091013560f81c6000818152600160205260409020549092501515905061118a5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b604482015277194e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd60421b60648201526084016105c6565b600080611197838b611d8f565b91509150806111b95760009150600160ff84161b6001600160c01b0386161794505b60006111c68a8585611f92565b90506111d28482612212565b505050505080806111e290613474565b9150506110e3565b60606000826001600160401b0381111561120657611206612ea0565b60405190808252806020026020018201604052801561122f578160200160208202803683370190505b50905060005b838110156114a95760008585838181106112515761125161342d565b919091013560f81c600081815260016020526040902054909250151590506112f05760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a4016105c6565b60ff81166000908152600160205260408120805463ffffffff8a1692906113195761131961342d565b60009182526020909120015463ffffffff1611156113c55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105c6565b60ff8116600090815260016020526040812054905b818110156114935760ff8316600090815260016020819052604090912063ffffffff8b16916114098486613501565b6114139190613501565b815481106114235761142361342d565b60009182526020909120015463ffffffff16116114815760016114468284613501565b6114509190613501565b8585815181106114625761146261342d565b602002602001019063ffffffff16908163ffffffff1681525050611493565b8061148b81613474565b9150506113da565b50505080806114a190613474565b915050611235565b5090505b9392505050565b600460205281600052604060002081815481106114d057600080fd5b6000918252602090912001546001600160a01b03169150829050565b6114f4612b42565b600083815260026020908152604080832060ff8816845290915290208054839081106115225761152261342d565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115ad576115ad61342d565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b6115f7612b42565b60ff8316600090815260016020526040902080548390811061161b5761161b61342d565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef9190613394565b6001600160a01b0316336001600160a01b03161461171f5760405162461bcd60e51b81526004016105c6906133b1565b8161173b8160ff16600090815260016020526040902054151590565b6117575760405162461bcd60e51b81526004016105c690613343565b611761838361238c565b505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146117ae5760405162461bcd60e51b81526004016105c69061348f565b60005b818110156118875760008383838181106117cd576117cd61342d565b919091013560f81c600081815260016020526040902054909250151590506118575760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f726044820152760e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd604a1b60648201526084016105c6565b600061186586836000611f92565b90506118718282612212565b505050808061187f90613474565b9150506117b1565b50505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f9190613394565b6001600160a01b0316336001600160a01b03161461193f5760405162461bcd60e51b81526004016105c6906133b1565b8161195b8160ff16600090815260016020526040902054151590565b6119775760405162461bcd60e51b81526004016105c690613343565b61176183836123f5565b60ff831660009081526001602052604081208054829190849081106119a8576119a861342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c77818561281c565b60ff81166000908152600160208190526040822080549091611a2091613501565b81548110611a3057611a3061342d565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611a5f848484612996565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611a9857611a9861342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611aef818661281c565b6040015195945050505050565b611b04612b42565b600083815260026020908152604080832060ff86168452909152902054611b29612b42565b81611b37579150610c649050565b600085815260026020908152604080832060ff881684529091529020611b5e600184613501565b81548110611b6e57611b6e61342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c64915050565b600083815260026020908152604080832060ff861684529091528120611bea858585612996565b63ffffffff1681548110611c0057611c0061342d565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614611c6c5760405162461bcd60e51b81526004016105c69061348f565b60ff831660009081526001602052604090205415611cea5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105c6565b611cf483826123f5565b611cfe838361238c565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611dae8660ff1660009081526003602052604090205490565b9050611dca604080518082019091526000808252602082015290565b60ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91692639004134792611e28928c920161352e565b600060405180830381865afa158015611e45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e6d919081019061358d565b905060005b83811015611f5e5760ff89166000908152600360205260409020805482908110611e9e57611e9e61342d565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611eec57611eec61342d565b60200260200101511115611f4c57670de0b6b3a764000083602001516001600160601b0316838381518110611f2357611f2361342d565b6020026020010151611f35919061361d565b611f3f919061363c565b611f49908661365e565b94505b80611f5681613474565b915050611e72565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061205657600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556121b8565b600086815260026020908152604080832060ff89168452909152812061207d600184613501565b8154811061208d5761208d61342d565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156120c657600093505050506114ad565b80544363ffffffff90811691161415612100578054600160401b600160a01b031916600160401b6001600160601b038716021781556121b6565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122088285612afc565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122369084613501565b815481106122465761224661342d565b90600052602060002001905083600014156122755754600160401b90046001600160601b03169150610c649050565b805460009061229490600160401b90046001600160601b031686612b14565b82549091504363ffffffff908116911614156122d1578154600160401b600160a01b031916600160401b6001600160601b03831602178255612383565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124555760405162461bcd60e51b8152602060048201526038602482015260008051602061373d8339815191526044820152770e881b9bc81cdd1c985d1959da595cc81c1c9bdd9a59195960421b60648201526084016105c6565b805160ff8316600090815260036020908152604090912054906124788383613689565b11156124e85760405162461bcd60e51b8152602060048201526045602482015260008051602061373d83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105c6565b60005b828110156128155760005b6125008284613689565b8110156125e1578482815181106125195761251961342d565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125585761255861342d565b6000918252602090912001546001600160a01b031614156125cf5760405162461bcd60e51b815260206004820152603d602482015260008051602061373d83398151915260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105c6565b806125d981613474565b9150506124f6565b5060008482815181106125f6576125f661342d565b6020026020010151602001516001600160601b03161161267b5760405162461bcd60e51b8152602060048201526046602482015260008051602061373d83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105c6565b60ff8516600090815260036020526040902084518590839081106126a1576126a161342d565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127065761270661342d565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061277d5761277d61342d565b6020026020010151600001516040516127969190612fd9565b60405180910390a28460ff1660008051602061375d8339815191528583815181106127c3576127c361342d565b6020026020010151600001518684815181106127e1576127e161342d565b6020026020010151602001516040516127fb929190612bbd565b60405180910390a28061280d81613474565b9150506124eb565b5050505050565b816000015163ffffffff168163ffffffff1610156128c15760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a4016105c6565b602082015163ffffffff1615806128e75750816020015163ffffffff168163ffffffff16105b6129925760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016105c6565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612a3757600086815260026020908152604080832060ff89168452909152902063ffffffff8516906129ea600184613501565b815481106129fa576129fa61342d565b60009182526020909120015463ffffffff1611612a2557612a1c600182613501565b925050506114ad565b80612a2f816136a1565b9150506129b5565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105c6565b60006114ad6001600160601b038085169084166136b8565b600080821215612b3857612b27826136f7565b612b319084613714565b9050610c64565b612b31828461365e565b604080516060810182526000808252602082018190529181019190915290565b803560ff81168114612b7357600080fd5b919050565b600060208284031215612b8a57600080fd5b6114ad82612b62565b60008060408385031215612ba657600080fd5b612baf83612b62565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612bf457600080fd5b50565b60008060408385031215612c0a57600080fd5b612c1383612b62565b91506020830135612c2381612bdf565b809150509250929050565b60008083601f840112612c4057600080fd5b5081356001600160401b03811115612c5757600080fd5b6020830191508360208260051b8501011115611f8b57600080fd5b600080600080600060608688031215612c8a57600080fd5b612c9386612b62565b945060208601356001600160401b0380821115612caf57600080fd5b612cbb89838a01612c2e565b90965094506040880135915080821115612cd457600080fd5b50612ce188828901612c2e565b969995985093965092949392505050565b60008083601f840112612d0457600080fd5b5081356001600160401b03811115612d1b57600080fd5b602083019150836020828501011115611f8b57600080fd5b60008060008060608587031215612d4957600080fd5b8435612d5481612bdf565b93506020850135925060408501356001600160401b03811115612d7657600080fd5b612d8287828801612cf2565b95989497509550505050565b600081518084526020808501945080840160005b83811015612dc75781516001600160601b031687529582019590820190600101612da2565b509495945050505050565b604081526000612de56040830185612d8e565b82810360208401526123838185612d8e565b60008060408385031215612e0a57600080fd5b82359150612e1a60208401612b62565b90509250929050565b63ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b6020808252825182820181905260009190848201906040850190845b81811015612e9457612e81838551612e23565b9284019260609290920191600101612e6e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612ed857612ed8612ea0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f0657612f06612ea0565b604052919050565b60006001600160401b03821115612f2757612f27612ea0565b5060051b60200190565b60008060408385031215612f4457600080fd5b612f4d83612b62565b91506020808401356001600160401b03811115612f6957600080fd5b8401601f81018613612f7a57600080fd5b8035612f8d612f8882612f0e565b612ede565b81815260059190911b82018301908381019088831115612fac57600080fd5b928401925b82841015612fca57833582529284019290840190612fb1565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b803563ffffffff81168114612b7357600080fd5b60008060006040848603121561301657600080fd5b61301f84612fed565b925060208401356001600160401b0381111561303a57600080fd5b61304686828701612cf2565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612e9457835163ffffffff168352928401929184019160010161306f565b6000806000606084860312156130a657600080fd5b6130af84612b62565b95602085013595506040909401359392505050565b60608101610c648284612e23565b80356001600160601b0381168114612b7357600080fd5b600080604083850312156130fc57600080fd5b61310583612b62565b9150612e1a602084016130d2565b60008060006040848603121561312857600080fd5b8335925060208401356001600160401b0381111561303a57600080fd5b600082601f83011261315657600080fd5b81356020613166612f8883612f0e565b82815260069290921b8401810191818101908684111561318557600080fd5b8286015b848110156131d457604081890312156131a25760008081fd5b6131aa612eb6565b81356131b581612bdf565b81526131c28286016130d2565b81860152835291830191604001613189565b509695505050505050565b600080604083850312156131f257600080fd5b6131fb83612b62565b915060208301356001600160401b0381111561321657600080fd5b61322285828601613145565b9150509250929050565b60008060006060848603121561324157600080fd5b61324a84612b62565b925061325860208501612fed565b9150604084013590509250925092565b60008060006060848603121561327d57600080fd5b8335925061328d60208501612b62565b915061329b60408501612fed565b90509250925092565b600080600080608085870312156132ba57600080fd5b6132c385612b62565b93506132d160208601612fed565b93969395505050506040820135916060013590565b6000806000606084860312156132fb57600080fd5b61330484612b62565b9250613312602085016130d2565b915060408401356001600160401b0381111561332d57600080fd5b61333986828701613145565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b6000602082840312156133a657600080fd5b81516114ad81612bdf565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561345557600080fd5b6114ad826130d2565b634e487b7160e01b600052601160045260246000fd5b60006000198214156134885761348861345e565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135135761351361345e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561357f578554851683526001958601959284019201613561565b509098975050505050505050565b600060208083850312156135a057600080fd5b82516001600160401b038111156135b657600080fd5b8301601f810185136135c757600080fd5b80516135d5612f8882612f0e565b81815260059190911b820183019083810190878311156135f457600080fd5b928401925b82841015613612578351825292840192908401906135f9565b979650505050505050565b60008160001904831182151516156136375761363761345e565b500290565b60008261365957634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156136805761368061345e565b01949350505050565b6000821982111561369c5761369c61345e565b500190565b6000816136b0576136b061345e565b506000190190565b60008083128015600160ff1b8501841216156136d6576136d661345e565b6001600160ff1b03840183138116156136f1576136f161345e565b50500390565b6000600160ff1b82141561370d5761370d61345e565b5060000390565b60006001600160601b03838116908316818110156137345761373461345e565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d7311a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75a26469706673582212207e9a41b6d5ac3a5e50f0af34dafa95ef4729aea2fa853040a635f382b7887cb964736f6c634300080c0033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0xc4e0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x322813fd9a801c5507c9de605d63cea4f2ce6c44":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a1366004611840565b6103ba565b005b6101a66101b636600461188a565b6104c1565b6101a66101c93660046118a7565b610574565b6101a66101dc3660046118c9565b610629565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b61024160335481565b604051908152602001610208565b61024160645481565b6102416102663660046118e2565b61076d565b6101a661027936600461190e565b610911565b61024161028c36600461188a565b6109df565b6101a66109f3565b6102b86102a7366004611947565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e73660046118c9565b610abf565b6000546101f4906201000090046001600160a01b031681565b6102416103133660046118c9565b610b0a565b61024161032636600461188a565b610b15565b610333610b23565b604051610208919061199a565b61024161034e36600461188a565b610b43565b6101a66103613660046119cd565b610bd8565b60645460655460408051928352602083019190915201610208565b61024161038f3660046118c9565b610da1565b6102416103a23660046118c9565b610dda565b6101a66103b53660046118c9565b610de5565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611a0e565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b610460604051806040016040528060038152602001623c30b160e91b815250610f41565b61046a8585610f84565b6104748383611091565b80156104ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190611a5c565b6001600160a01b0316336001600160a01b0316146105685760405162461bcd60e51b815260040161041090611a79565b61057181611122565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190611a5c565b6001600160a01b0316336001600160a01b03161461061b5760405162461bcd60e51b815260040161041090611a79565b6106258282610f84565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069a9190611ac3565b6106b65760405162461bcd60e51b815260040161041090611ae5565b6001548181161461072f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156107c25760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707161461083a5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b6108448484611227565b60335460006108556103e883611b43565b905060006103e8610864611309565b61086e9190611b43565b9050600061087c8783611b5b565b9050806108898489611b72565b6108939190611b91565b9550856108f95760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6109038685611b43565b603355505050505092915050565b600054610100900460ff16158080156109315750600054600160ff909116105b8061094b5750303b15801561094b575060005460ff166001145b6109675760405162461bcd60e51b815260040161041090611a0e565b6000805460ff19166001179055801561098a576000805461ff0019166101001790555b6109948383611091565b80156109da576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109ed6102e783610b43565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611ac3565b610a805760405162461bcd60e51b815260040161041090611ae5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ad29190611b43565b905060006103e8610ae1611309565b610aeb9190611b43565b905081610af88583611b72565b610b029190611b91565b949350505050565b60006109ed82610da1565b60006109ed6103a283610b43565b60606040518060800160405280604d8152602001611be9604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570790911690637a7e0d9290604401602060405180830381865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed9190611bb3565b6001805460029081161415610c2b5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614610ca35760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610cae84848461137b565b60335480831115610d3d5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d4b6103e883611b43565b905060006103e8610d5a611309565b610d649190611b43565b9050600082610d738784611b72565b610d7d9190611b91565b9050610d898685611b5b565b603355610d978888836113fe565b5050505050505050565b6000806103e8603354610db49190611b43565b905060006103e8610dc3611309565b610dcd9190611b43565b905080610af88386611b72565b60006109ed82610abf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190611a5c565b6001600160a01b0316336001600160a01b031614610e8c5760405162461bcd60e51b815260040161041090611a79565b600154198119600154191614610f0a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610762565b61057181604051602401610f55919061199a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052611412565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110865760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110fc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b038416179055610625816000611433565b6001600160a01b0381166111b05760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6064548111156112915760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b60655461129c611309565b11156112ff5760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b610625828261151f565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113769190611bb3565b905090565b6032546001600160a01b038381169116146109da5760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109da6001600160a01b038316848361159b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000546201000090046001600160a01b031615801561145a57506001600160a01b03821615155b6114dc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261062582611122565b6032546001600160a01b038381169116146106255760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109da9286929160009161162b9185169084906116a8565b8051909150156109da57808060200190518101906116499190611ac3565b6109da5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b60606116b784846000856116c1565b90505b9392505050565b6060824710156117225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6117795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b031685876040516117959190611bcc565b60006040518083038185875af1925050503d80600081146117d2576040519150601f19603f3d011682016040523d82523d6000602084013e6117d7565b606091505b50915091506117e78282866117f2565b979650505050505050565b606083156118015750816116ba565b8251156118115782518084602001fd5b8160405162461bcd60e51b8152600401610410919061199a565b6001600160a01b038116811461057157600080fd5b6000806000806080858703121561185657600080fd5b8435935060208501359250604085013561186f8161182b565b9150606085013561187f8161182b565b939692955090935050565b60006020828403121561189c57600080fd5b81356116ba8161182b565b600080604083850312156118ba57600080fd5b50508035926020909101359150565b6000602082840312156118db57600080fd5b5035919050565b600080604083850312156118f557600080fd5b82356119008161182b565b946020939093013593505050565b6000806040838503121561192157600080fd5b823561192c8161182b565b9150602083013561193c8161182b565b809150509250929050565b60006020828403121561195957600080fd5b813560ff811681146116ba57600080fd5b60005b8381101561198557818101518382015260200161196d565b83811115611994576000848401525b50505050565b60208152600082518060208401526119b981604085016020870161196a565b601f01601f19169190910160400192915050565b6000806000606084860312156119e257600080fd5b83356119ed8161182b565b925060208401356119fd8161182b565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215611a6e57600080fd5b81516116ba8161182b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611ad557600080fd5b815180151581146116ba57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611b5657611b56611b2d565b500190565b600082821015611b6d57611b6d611b2d565b500390565b6000816000190483118215151615611b8c57611b8c611b2d565b500290565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611bc557600080fd5b5051919050565b60008251611bde81846020870161196a565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220a89cdda625de6600f138ef9c77378533a2536b7715b55abf2eebb15ea238933f64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","0x3640069662c3880c0f70896f1ea7ab948dbe8edba5c22fb35137874584edfab7":"0x1","0x6fe317c46e5eb99b18a02254581a535777feba1137e4ab98748fd94c55e2f16f":"0x1","0x7d1c12449d2a49ce59962642fe4a8c74e48ad3f56a716a3bc12ada6bf75e155d":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xe02835104633dd65c916ccb9978ae220ed27db9f2ae0915bd6a5594cfbeedeb8":"0x1"}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4826533b4897376654bb4d4ad88b7fafd0c98528":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212208a1326bc5b69f9ecf1c6c0d757e50103bb848a7d9d4383fa44ee54e7b71a39a464736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0x4c5859f0f772848b2d91f1d83e2fe57935348029":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea2646970667358221220989e57de351772a7f933bb7234d90ef2f41b46d0a8e8b45b21148630c71d925e64736f6c634300080c0033","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x82e01223d51eb87e16a03e24687edf0f294da6f1","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x8"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122054cc08528c85698c827d34c7e7f3bb44ba8e6884f2ac3e1af765d47dbde707b664736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0x8142bc69583e169802e72d5824b8ed949e78cca596c0561765426c8c058957fd","0xcb":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xdcd1bf9a1b36ce34237eeafef220932846bcd82","0x69f9147759798decd1797da71845df896876bd17efcd483aa8482ae4658bf0a0":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0xe6ed2999f13697c9ffb91df2afc9d713c528d12f30b6022f27ccddb8723728d2":"0x0"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220a22223d3e2a2d861ad54e68b7bc44b4d82a5a12a0bcca5c3404502bb1b430c5c64736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x8a791620dd6260079bf849dc5567adc3f2fdc318"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x70e0ba845a1a0f2da3359c97e0285013525ffc49":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061006b5760003560e01c8063204e1c7a14610070578063715018a6146100a65780637eff275e146100bd5780638da5cb5b146100dd5780639623609d146100fb57806399a88ec41461010e578063f2fde38b1461012e578063f3b7dead1461014e575b600080fd5b34801561007c57600080fd5b5061009061008b366004610483565b61016e565b60405161009d91906104a7565b60405180910390f35b3480156100b257600080fd5b506100bb6101ff565b005b3480156100c957600080fd5b506100bb6100d83660046104bb565b610213565b3480156100e957600080fd5b506000546001600160a01b0316610090565b6100bb61010936600461050a565b61027d565b34801561011a57600080fd5b506100bb6101293660046104bb565b6102ec565b34801561013a57600080fd5b506100bb610149366004610483565b610320565b34801561015a57600080fd5b50610090610169366004610483565b61039e565b6000806000836001600160a01b031660405161019490635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101cf576040519150601f19603f3d011682016040523d82523d6000602084013e6101d4565b606091505b5091509150816101e357600080fd5b808060200190518101906101f791906105e0565b949350505050565b6102076103c4565b610211600061041e565b565b61021b6103c4565b6040516308f2839760e41b81526001600160a01b03831690638f283970906102479084906004016104a7565b600060405180830381600087803b15801561026157600080fd5b505af1158015610275573d6000803e3d6000fd5b505050505050565b6102856103c4565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b590869086906004016105fd565b6000604051808303818588803b1580156102ce57600080fd5b505af11580156102e2573d6000803e3d6000fd5b5050505050505050565b6102f46103c4565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe6906102479084906004016104a7565b6103286103c4565b6001600160a01b0381166103925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039b8161041e565b50565b6000806000836001600160a01b0316604051610194906303e1469160e61b815260040190565b6000546001600160a01b031633146102115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610389565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461039b57600080fd5b60006020828403121561049557600080fd5b81356104a08161046e565b9392505050565b6001600160a01b0391909116815260200190565b600080604083850312156104ce57600080fd5b82356104d98161046e565b915060208301356104e98161046e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561051f57600080fd5b833561052a8161046e565b9250602084013561053a8161046e565b9150604084013567ffffffffffffffff8082111561055757600080fd5b818601915086601f83011261056b57600080fd5b81358181111561057d5761057d6104f4565b604051601f8201601f19908116603f011681019083821181831017156105a5576105a56104f4565b816040528281528960208487010111156105be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f257600080fd5b81516104a08161046e565b60018060a01b038316815260006020604081840152835180604085015260005b818110156106395785810183015185820160600152820161061d565b8181111561064b576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212200eedf560ba2321bf32a2a337105c715afa9340aaee48022babd6824214e3416964736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x7969c5ed335650692bc04293b07f5bf2e7a673c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061006d5760003560e01c8063046a0654146100725780630ca192c71461009c5780632e8da829146100b15780636d14a987146100e457806389a652ce14610123578063af99fa0e1461013e578063bfe1073814610166575b600080fd5b610085610080366004610a21565b61016e565b604051610093929190610aaa565b60405180910390f35b6100af6100aa366004610af0565b610394565b005b6100d46100bf366004610b2e565b60026020526000908152604090205460ff1681565b6040519015158152602001610093565b61010b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516001600160a01b039091168152602001610093565b6001546040516001600160401b039091168152602001610093565b61015161014c366004610b4b565b610535565b60405163ffffffff9091168152602001610093565b6100af61056f565b60608060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610b64565b905060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027b9190610b64565b905060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190610b64565b90506001600160401b0386161561036b5761036860016103218189610b97565b6001600160401b03168154811061033a5761033a610bbf565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1684848461073a565b94505b61038a6001876001600160401b03168154811061033a5761033a610bbf565b9350505050915091565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104169190610b64565b6001600160a01b0316336001600160a01b0316146104d65760405162461bcd60e51b815260206004820152606660248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c79436f6f7264696e61746f724f776e65723a2063616c6c6572206973206e6f60648201527f7420746865206f776e6572206f6620746865207265676973747279436f6f726460848201526534b730ba37b960d11b60a482015260c4015b60405180910390fd5b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591519182527f2b83db0a8941bdf64ef44d95a1a397fdbcb6fd1b93ed421b73d00ddcecf5c793910160405180910390a25050565b6001818154811061054557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146106335760405162461bcd60e51b815260206004820152605d60248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c795265676973747279436f6f7264696e61746f723a2063616c6c657220697360648201527f206e6f742074686520726567697374727920636f6f7264696e61746f72000000608482015260a4016104cd565b6001546001600160401b0381161580159061069557504360016106568184610b97565b6001600160401b03168154811061066f5761066f610bbf565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16145b1561069d5750565b426001600160401b0316816001600160401b03167fc48e61b12810d368042f781cfb732d0abb725377d90b600f78e0cec7dbd0c28d60405160405180910390a3506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008820401805460079092166004026101000a63ffffffff818102199093164390931602919091179055565b604051638902624560e01b815260006004820181905263ffffffff861660248301526060916001600160a01b03851690638902624590604401600060405180830381865afa158015610790573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b89190810190610c1b565b9050600081516001600160401b038111156107d5576107d5610bd5565b60405190808252806020026020018201604052801561082957816020015b60408051608081018252600091810182815260608201839052815260208101919091528152602001906001900390816107f35790505b50905060005b8251811015610a1657600083828151811061084c5761084c610bbf565b602002602001015190506000866001600160a01b03166347b314e8836040518263ffffffff1660e01b815260040161088691815260200190565b602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190610b64565b604051637ff81a8760e01b81526001600160a01b038083166004830152919250600091891690637ff81a8790602401606060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190610cc0565b5060405163fa28c62760e01b81526004810185905260006024820181905263ffffffff8e1660448301529192506001600160a01b038c169063fa28c62790606401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190610d26565b90506040518060400160405280838152602001826001600160601b03166001600160801b03168152508686815181106109f4576109f4610bbf565b6020026020010181905250505050508080610a0e90610d4f565b91505061082f565b509695505050505050565b600060208284031215610a3357600080fd5b81356001600160401b0381168114610a4a57600080fd5b9392505050565b600081518084526020808501945080840160005b83811015610a9f578151805180518952840151848901528301516001600160801b0316604088015260609096019590820190600101610a65565b509495945050505050565b604081526000610abd6040830185610a51565b8281036020840152610acf8185610a51565b95945050505050565b6001600160a01b0381168114610aed57600080fd5b50565b60008060408385031215610b0357600080fd5b8235610b0e81610ad8565b915060208301358015158114610b2357600080fd5b809150509250929050565b600060208284031215610b4057600080fd5b8135610a4a81610ad8565b600060208284031215610b5d57600080fd5b5035919050565b600060208284031215610b7657600080fd5b8151610a4a81610ad8565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0383811690831681811015610bb757610bb7610b81565b039392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c1357610c13610bd5565b604052919050565b60006020808385031215610c2e57600080fd5b82516001600160401b0380821115610c4557600080fd5b818501915085601f830112610c5957600080fd5b815181811115610c6b57610c6b610bd5565b8060051b9150610c7c848301610beb565b8181529183018401918481019088841115610c9657600080fd5b938501935b83851015610cb457845182529385019390850190610c9b565b98975050505050505050565b6000808284036060811215610cd457600080fd5b6040811215610ce257600080fd5b50604051604081018181106001600160401b0382111715610d0557610d05610bd5565b60409081528451825260208086015190830152939093015192949293505050565b600060208284031215610d3857600080fd5b81516001600160601b0381168114610a4a57600080fd5b6000600019821415610d6357610d63610b81565b506001019056fea2646970667358221220c83f0a5dd73f6b3f404f29c9e8cf82d0c35e2eecbc2a5c48bee1657e98a06e1964736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x7322c24752f79c05ffd1e2a6fcb97020c1c264f1","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x809d550fca64d94bd9f66e60752a544199cfac3d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0xeb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x8","0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x95401dc811bb5740090279ba06cfa8fcf6113778","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x1291be112d480055dafd8a610b7d1e203891c274","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x1","0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5":"0x0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0xde0b6b3a764000095401dc811bb5740090279ba06cfa8fcf6113778"}},"0x82e01223d51eb87e16a03e24687edf0f294da6f1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea26469706673582212204ee73059b3b9231f5aa2b00ad155fdb9c8d95ffc311fc1a88b56d665dd79ce7764736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea2646970667358221220fd5e700a23418fb34398844556f26001a24356fb1d6fe8c5b0a6ddcc2940deb764736f6c634300080c0033","storage":{}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b54565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000bc16d674ec80000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b91565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c24565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561039b57600080fd5b506103af6103aa366004614d35565b610c05565b60405161020f9190614dae565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbc565b610c6a565b60405161020f9190614dd5565b34801561041557600080fd5b506103af610424366004614dbc565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1d565b610d17565b3480156104ba57600080fd5b5061022d6104c9366004614e90565b610ec4565b3480156104da57600080fd5b506103fc6104e9366004614d35565b611293565b3480156104fa57600080fd5b5061022d611386565b34801561050f57600080fd5b5061022d61051e366004614f3a565b6113f1565b34801561052f57600080fd5b5061022d61053e366004614f66565b61162e565b34801561054f57600080fd5b5061022d61055e366004615080565b611806565b34801561056f57600080fd5b5061022d61057e366004615151565b6119d9565b34801561058f57600080fd5b5061022d61059e366004614f3a565b611da4565b3480156105af57600080fd5b506102977f0000000000000000000000000000000000000000000000000000000065156ac081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524c565b156106ad5760405162461bcd60e51b81526004016106a49061526e565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615313565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f87565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524c565b156108375760405162461bcd60e51b81526004016106a49061526e565b60335489906001600160401b03600160a01b90910481169082161161086e5760405162461bcd60e51b81526004016106a490615362565b603454600160401b900460ff166108e65760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f457508483145b6109845760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099a613f486001600160401b038d16614b54565b1015610a235760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acc907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab891906153fd565b8a35610ac760208d018d615416565b611fbb565b6000805b88811015610b7057610b528c8c358c8c85818110610af057610af061545c565b9050602002016020810190610b059190615472565b8b8b86818110610b1757610b1761545c565b9050602002810190610b299190615416565b8b8b88818110610b3b57610b3b61545c565b9050602002810190610b4d9190615499565b612149565b610b5c9083614b54565b915080610b68816154e2565b915050610ad0565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8539091169063c2c51c4090604401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c926040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfd57610cfd614d76565b6002811115610d0e57610d0e614d76565b90525092915050565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8531614610d5f5760405162461bcd60e51b81526004016106a4906154fd565b346801bc16d674ec80000014610deb5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610e2e6126fd565b8888886040518863ffffffff1660e01b8152600401610e52969594939291906155cf565b6000604051808303818588803b158015610e6b57600080fd5b505af1158015610e7f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb592919061561e565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f50919061524c565b15610f6d5760405162461bcd60e51b81526004016106a49061526e565b8684148015610f7b57508382145b6110045760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101a613f486001600160401b038c16614b54565b101561109c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611140907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113191906153fd565b8735610ac760208a018a615416565b6000805b888110156111e4576111c68b8b8b848181106111625761116261545c565b90506020020160208101906111779190615472565b8a358a8a8681811061118b5761118b61545c565b905060200281019061119d9190615416565b8a8a888181106111af576111af61545c565b90506020028101906111c19190615499565b612742565b6111d09083615632565b9150806111dc816154e2565b915050611144565b506033546001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169163c2c51c409116611229633b9aca0085615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561126f57600080fd5b505af1158015611283573d6000803e3d6000fd5b5050505050505050505050505050565b6112bb6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112fe85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136b5761136b614d76565b600281111561137c5761137c614d76565b9052509392505050565b6033546001600160a01b031633146113b05760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156113da5760405162461bcd60e51b81526004016106a490615313565b6033546113ef906001600160a01b0316611f87565b565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316146114395760405162461bcd60e51b81526004016106a4906154fd565b611447633b9aca008261570e565b156114d15760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e1633b9aca0083615722565b6034549091506001600160401b03908116908216111561159a5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b89084906001600160401b0316615736565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161791815260200190565b60405180910390a26116298383612c20565b505050565b600054610100900460ff161580801561164e5750600054600160ff909116105b806116685750303b158015611668575060005460ff166001145b6116cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ee576000805461ff0019166101001790555b6001600160a01b0382166117615760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611802576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118305760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc919061524c565b156118d95760405162461bcd60e51b81526004016106a49061526e565b82518451146119645760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d2576119c0838583815181106119865761198661545c565b60200260200101518784815181106119a0576119a061545c565b60200260200101516001600160a01b0316612c2a9092919063ffffffff16565b806119ca816154e2565b915050611967565b5050505050565b604051635ac86ab760e01b81526004808201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a64919061524c565b15611a815760405162461bcd60e51b81526004016106a49061526e565b8386148015611a8f57508588145b8015611a9a57508782145b611b0e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb2907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906153fd565b8b35610ac760208e018e615416565b604080518082019091526000808252602082015260005b83811015611cb2576000611c6d8d358d8d85818110611bea57611bea61545c565b9050602002810190611bfc919061575e565b8c8c86818110611c0e57611c0e61545c565b9050602002810190611c209190615416565b8c8c88818110611c3257611c3261545c565b9050602002810190611c449190615499565b8c8c8a818110611c5657611c5661545c565b9050602002810190611c689190615499565b612c7c565b80518451919250908490611c82908390614b54565b9052506020808201519084018051611c9b908390615632565b905250819050611caa816154e2565b915050611bc9565b50805115611ce1576033548151611ce1916001600160a01b031690611cdc90633b9aca009061577f565b613167565b602081015115611d965760335460208201516001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169263c2c51c4092911690611d3790633b9aca0090615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7d57600080fd5b505af1158015611d91573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dce5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a919061524c565b15611e775760405162461bcd60e51b81526004016106a49061526e565b603754821115611f285760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3a919061579e565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116298383613167565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb88147613167565b50565b611fc76003602061577f565b81146120575760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209c82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f5565b6121435760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218884848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f7576121f7614d76565b600281111561220857612208614d76565b905250905060008160600151600281111561222557612225614d76565b146122ce5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d66126fd565b6122df906157b5565b61231b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323192505050565b146123a25760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e086868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b90506123f08a87878b8b8e61326b565b60398054906000612400836154e2565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000bc16d674ec80000081169082161115612486576001600160401b037f000000000000000000000000000000000000000000000000bc16d674ec800000166020830152612496565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253457612534614d76565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125cf9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f4919061577f565b9b9a5050505050505050505050565b6000815160301461268c5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a39084906000906020016157d9565b60408051601f19818403018152908290526126bd91615808565b602060405180830381855afa1580156126da573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6491906153fd565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b905060006127c185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283057612830614d76565b600281111561284157612841614d76565b8152505090508a6001600160401b031681604001516001600160401b0316106128f85760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291057612910614d76565b146129785760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129818b6134c2565b6001600160401b03166129c68787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b031611612a69576000836001600160401b031611612a695760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a778987878b8b8f61326b565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000bc16d674ec80000081169086161115612ad957507f000000000000000000000000000000000000000000000000bc16d674ec800000612adc565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8457612b84614d76565b0217905550905050816001600160401b0316816001600160401b031614612c10577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfb9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0d81836135c4565b95505b5050505050979650505050505050565b61180282826135e3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526116299084906136fc565b6040805180820190915260008082526020820152612ca1612c9c89615889565b6137ce565b6033546001600160401b03600160a01b909104811690821611612cd65760405162461bcd60e51b81526004016106a490615362565b6000612ce4612c9c8b615889565b90506000612d2488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5157612d51614d76565b1415612e085760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec75760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa48c87878e7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9f91906159c5565b6137de565b6000612fe28787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506141ff92505050565b9050612ff28d8a8a8e8e8661326b565b600061303088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421792505050565b905061306e8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b03166130886130838f615889565b61422f565b6001600160401b03161061314057603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313593869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311c5761311c614d76565b600281111561312d5761312d614d76565b905250614241565b95505050505061315a565b60335461313590839086906001600160a01b03168461447f565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c0db354c9083906044016000604051808303818588803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b50505050505050565b60008361320386858561455d565b1495945050505050565b6000816000815181106132225761322261545c565b60200260200101519050919050565b6000816001815181106132225761322261545c565b6000610c648260028151811061325e5761325e61545c565b60200260200101516146a9565b61327760036002615ac6565b84146133025760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331060286001614b54565b61331a9190614b54565b61332590602061577f565b82146133a55760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bb60286001614b54565b600b901b179050600061340087878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b905061344685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f5565b6134b85760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f0000000000000000000000000000000000000000000000000000000065156ac06001600160401b0316826001600160401b0316101561356c5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b613578600c6020615ad2565b6135a27f0000000000000000000000000000000000000000000000000000000065156ac084615736565b610c649190615b01565b6000610c648260078151811061325e5761325e61545c565b60006135dc6001600160401b03808416908516615b27565b9392505050565b804710156136335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b50509050806116295760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613751826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bd9092919063ffffffff16565b805190915015611629578080602001905181019061376f919061524c565b6116295760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c648261014001516146a9565b6137e9600280615ac6565b831461385d5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b613869600d6002615ac6565b61387960c0840160a08501615b66565b6001600160401b0316106138e35760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd983398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138ef60046002615ac6565b613900610100840160e08501615b66565b6001600160401b03161061396c576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd983398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397860186002615ac6565b61398860e0840160c08501615b66565b6001600160401b031610613a025760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1a612c9c85615889565b6001600160401b031610613a2f576005613a32565b60045b9050613a3f600482614b54565b613a4a906001614b54565b613a5590602061577f565b613a5f8480615416565b905014613ad35760405162461bcd60e51b81526020600482015260486024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613adf60046003614b54565b613aea90602061577f565b613af76040850185615416565b905014613b715760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd983398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7d6003602061577f565b613b8a6020850185615416565b905014613bf85760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c0381602061577f565b613c106060850185615416565b905014613c835760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9160186001614b54565b613c9c906005614b54565b613ca7906001614b54565b613cb19190614b54565b613cbc90602061577f565b613cc96080850185615416565b905014613d525760405162461bcd60e51b81526020600482015260586024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6460c0850160a08601615b66565b6001600160401b03166000613d7b600d6001614b54565b613d8b60e0880160c08901615b66565b6001600160401b0316901b600d613da460186001614b54565b613daf906001614b54565b613db99190614b54565b601b901b1717179050613e14613dd26080860186615416565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f5565b613e875760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ede613e976020860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f5565b613f3e5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f96613f506040870187615416565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f5565b6140085760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b506140606140196060860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f5565b6140cb5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140de610100860160e08701615b66565b6001600160401b03166140f360046001614b54565b600e901b179050600061413888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b90506141886141478780615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f5565b6141f45760405162461bcd60e51b81526020600482015260436024820152600080516020615bd983398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c648260018151811061325e5761325e61545c565b6000610c648260038151811061325e5761325e61545c565b600060206135a28361012001516146a9565b604080518082019091526000808252602082015260007f000000000000000000000000000000000000000000000000bc16d674ec8000006001600160401b0316846001600160401b031611156142b857507f000000000000000000000000000000000000000000000000bc16d674ec8000006142bb565b50825b60408051808201909152600080825260208201526142d98286615736565b6001600160401b0390811682526034805484926000916142fb91859116615b83565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432d8285602001516135c4565b602082015260028460600151600281111561434a5761434a614d76565b1461436c576039805490600061435f83615bae565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441157614411614d76565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145109084906001600160401b0316615b83565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457c57506020845161457a919061570e565b155b61460b5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b8551811161469f5761462f60028561570e565b614662578151600052808601516020526020826040600060026107d05a03fa61465757600080fd5b60028404935061468d565b8086015160005281516020526020826040600060026107d05a03fa61468657600080fd5b6002840493505b614698602082614b54565b905061461c565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b600080600283516147219190615722565b90506000816001600160401b0381111561473d5761473d614f83565b604051908082528060200260200182016040528015614766578160200160208202803683370190505b50905060005b8281101561486d57600285614781838361577f565b815181106147915761479161545c565b6020026020010151868360026147a7919061577f565b6147b2906001614b54565b815181106147c2576147c261545c565b60200260200101516040516020016147e4929190918252602082015260400190565b60408051601f19818403018152908290526147fe91615808565b602060405180830381855afa15801561481b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061483e91906153fd565b8282815181106148505761485061545c565b602090810291909101015280614865816154e2565b91505061476c565b50614879600283615722565b91505b81156149995760005b828110156149865760028261489a838361577f565b815181106148aa576148aa61545c565b6020026020010151838360026148c0919061577f565b6148cb906001614b54565b815181106148db576148db61545c565b60200260200101516040516020016148fd929190918252602082015260400190565b60408051601f198184030181529082905261491791615808565b602060405180830381855afa158015614934573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495791906153fd565b8282815181106149695761496961545c565b60209081029190910101528061497e816154e2565b915050614885565b50614992600283615722565b915061487c565b806000815181106149ac576149ac61545c565b602002602001015192505050919050565b60606149cc84846000856149d4565b949350505050565b606082471015614a355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aa89190615808565b60006040518083038185875af1925050503d8060008114614ae5576040519150601f19603f3d011682016040523d82523d6000602084013e614aea565b606091505b5091509150614afa828286614b05565b979650505050505050565b60608315614b145750816135dc565b825115614b245782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bc5565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6757614b67614b3e565b500190565b6001600160401b0381168114611fb857600080fd5b8035614b8c81614b6c565b919050565b60008060408385031215614ba457600080fd5b823591506020830135614bb681614b6c565b809150509250929050565b600060408284031215614bd357600080fd5b50919050565b60008083601f840112614beb57600080fd5b5081356001600160401b03811115614c0257600080fd5b6020830191508360208260051b8501011115614c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4057600080fd5b8835614c4b81614b6c565b975060208901356001600160401b0380821115614c6757600080fd5b614c738c838d01614bc1565b985060408b0135915080821115614c8957600080fd5b614c958c838d01614bd9565b909850965060608b0135915080821115614cae57600080fd5b614cba8c838d01614bd9565b909650945060808b0135915080821115614cd357600080fd5b50614ce08b828c01614bd9565b999c989b5096995094979396929594505050565b60008083601f840112614d0657600080fd5b5081356001600160401b03811115614d1d57600080fd5b602083019150836020828501011115614c1d57600080fd5b60008060208385031215614d4857600080fd5b82356001600160401b03811115614d5e57600080fd5b614d6a85828601614cf4565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614daa57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c648284614d8c565b600060208284031215614dce57600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e166060840182614d8c565b5092915050565b600080600080600060608688031215614e3557600080fd5b85356001600160401b0380821115614e4c57600080fd5b614e5889838a01614cf4565b90975095506020880135915080821115614e7157600080fd5b50614e7e88828901614cf4565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eac57600080fd5b8835614eb781614b6c565b975060208901356001600160401b0380821115614ed357600080fd5b614edf8c838d01614bd9565b909950975060408b0135915080821115614ef857600080fd5b614f048c838d01614bc1565b965060608b0135915080821115614cae57600080fd5b6001600160a01b0381168114611fb857600080fd5b8035614b8c81614f1a565b60008060408385031215614f4d57600080fd5b8235614f5881614f1a565b946020939093013593505050565b600060208284031215614f7857600080fd5b81356135dc81614f1a565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbc57614fbc614f83565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fea57614fea614f83565b604052919050565b60006001600160401b0382111561500b5761500b614f83565b5060051b60200190565b600082601f83011261502657600080fd5b8135602061503b61503683614ff2565b614fc2565b82815260059290921b8401810191818101908684111561505a57600080fd5b8286015b84811015615075578035835291830191830161505e565b509695505050505050565b60008060006060848603121561509557600080fd5b83356001600160401b03808211156150ac57600080fd5b818601915086601f8301126150c057600080fd5b813560206150d061503683614ff2565b82815260059290921b8401810191818101908a8411156150ef57600080fd5b948201945b8386101561511657853561510781614f1a565b825294820194908201906150f4565b9750508701359250508082111561512c57600080fd5b5061513986828701615015565b92505061514860408501614f2f565b90509250925092565b60008060008060008060008060008060c08b8d03121561517057600080fd5b6151798b614b81565b995060208b01356001600160401b038082111561519557600080fd5b6151a18e838f01614bc1565b9a5060408d01359150808211156151b757600080fd5b6151c38e838f01614bd9565b909a50985060608d01359150808211156151dc57600080fd5b6151e88e838f01614bd9565b909850965060808d013591508082111561520157600080fd5b61520d8e838f01614bd9565b909650945060a08d013591508082111561522657600080fd5b506152338d828e01614bd9565b915080935050809150509295989b9194979a5092959850565b60006020828403121561525e57600080fd5b815180151581146135dc57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6020808252606f908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520666f60608201527f722074696d657374616d70206166746572206d6f7374526563656e745769746860808201526e064726177616c54696d657374616d7608c1b60a082015260c00190565b60006020828403121561540f57600080fd5b5051919050565b6000808335601e1984360301811261542d57600080fd5b8301803591506001600160401b0382111561544757600080fd5b602001915036819003821315614c1d57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561548457600080fd5b813564ffffffffff811681146135dc57600080fd5b6000808335601e198436030181126154b057600080fd5b8301803591506001600160401b038211156154ca57600080fd5b6020019150600581901b3603821315614c1d57600080fd5b60006000198214156154f6576154f6614b3e565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561559257818101518382015260200161557a565b838111156121435750506000910152565b600081518084526155bb816020860160208601615577565b601f01601f19169290920160200192915050565b6080815260006155e360808301888a61554e565b82810360208401526155f581886155a3565b9050828103604084015261560a81868861554e565b915050826060830152979650505050505050565b6020815260006149cc60208301848661554e565b600080821280156001600160ff1b038490038513161561565457615654614b3e565b600160ff1b839003841281161561566d5761566d614b3e565b50500190565b60006001600160ff1b038184138284138082168684048611161561569957615699614b3e565b600160ff1b60008712828116878305891216156156b8576156b8614b3e565b600087129250878205871284841616156156d4576156d4614b3e565b878505871281841616156156ea576156ea614b3e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b60008261571d5761571d6156f8565b500690565b600082615731576157316156f8565b500490565b60006001600160401b038381169083168181101561575657615756614b3e565b039392505050565b6000823561017e1983360301811261577557600080fd5b9190910192915050565b600081600019048311821515161561579957615799614b3e565b500290565b6000828210156157b0576157b0614b3e565b500390565b80516020808301519190811015614bd35760001960209190910360031b1b16919050565b600083516157eb818460208801615577565b6001600160801b0319939093169190920190815260100192915050565b60008251615775818460208701615577565b600082601f83011261582b57600080fd5b81356001600160401b0381111561584457615844614f83565b615857601f8201601f1916602001614fc2565b81815284602083860101111561586c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589c57600080fd5b6158a4614f99565b82356001600160401b03808211156158bb57600080fd5b6158c73683870161581a565b835260208501359150808211156158dd57600080fd5b6158e93683870161581a565b6020840152604085013591508082111561590257600080fd5b61590e3683870161581a565b6040840152606085013591508082111561592757600080fd5b6159333683870161581a565b6060840152608085013591508082111561594c57600080fd5b506159593682860161581a565b60808301525061596b60a08401614b81565b60a082015261597c60c08401614b81565b60c082015261598d60e08401614b81565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d757600080fd5b81516135dc81614b6c565b600181815b80851115615a1d578160001904821115615a0357615a03614b3e565b80851615615a1057918102915b93841c93908002906159e7565b509250929050565b600082615a3457506001610c64565b81615a4157506000610c64565b8160018114615a575760028114615a6157615a7d565b6001915050610c64565b60ff841115615a7257615a72614b3e565b50506001821b610c64565b5060208310610133831016604e8410600b8410161715615aa0575081810a610c64565b615aaa83836159e2565b8060001904821115615abe57615abe614b3e565b029392505050565b60006135dc8383615a25565b60006001600160401b0380831681851681830481118215151615615af857615af8614b3e565b02949350505050565b60006001600160401b0380841680615b1b57615b1b6156f8565b92169190910492915050565b60008083128015600160ff1b850184121615615b4557615b45614b3e565b6001600160ff1b0384018313811615615b6057615b60614b3e565b50500390565b600060208284031215615b7857600080fd5b81356135dc81614b6c565b60006001600160401b03808316818516808303821115615ba557615ba5614b3e565b01949350505050565b600081615bbd57615bbd614b3e565b506000190190565b6020815260006135dc60208301846155a356fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220691dcd5f8d90539995d3bfd78ba8af9d2650b2da35d409dc1708e0da1fbdd66964736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x8f86403a4de0bb5791fa46b8e795c547942fe4cf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0x4826533b4897376654bb4d4ad88b7fafd0c985280001","0x1":"0x0","0x64":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x96":"0x1","0x9c":"0x3","0x9d":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x9e":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xc351628eb244ec633d5f21fbd6621e1a683b1181","0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7":"0x643a9800002710","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c":"0x809d550fca64d94bd9f66e60752a544199cfac3d","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d":"0x9d4454b023096f34b160d6b654540c56a1f81688","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0xf5059a5d33d5853360d16c683c16e67980206f36","0x64":"0xde0b6b3a7640000","0x65":"0x56bc75e2d63100000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b36600461196d565b6104b2565b005b34801561017e57600080fd5b5061017061018d366004611991565b61056e565b34801561019e57600080fd5b506101b26101ad36600461196d565b6106ad565b6040516101bf91906119c8565b60405180910390f35b3480156101d457600080fd5b506101b26101e336600461196d565b6108a8565b3480156101f457600080fd5b5061021c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f366004611991565b6109ee565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109ff565b34801561029957600080fd5b506102bd6102a8366004611a15565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610ac6565b34801561030357600080fd5b506102bd610312366004611a38565b610ada565b34801561032357600080fd5b50610337610332366004611a38565b610b5d565b6040516101bf9190611a64565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a72565b610bdd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c7366004611991565b610e9d565b3480156103d857600080fd5b5061026a6103e736600461196d565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a38565b610f31565b34801561043157600080fd5b50610170610440366004611aab565b610fc6565b34801561045157600080fd5b5061046561046036600461196d565b6110ee565b6040516101bf9190611af1565b34801561047e57600080fd5b5061017061048d36600461196d565b6111a8565b34801561049e57600080fd5b506101706104ad366004611991565b61121e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b47565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b64565b60405180910390fd5b61056b8161137a565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611bae565b6105f65760405162461bcd60e51b815260040161055990611bd0565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c2e565b90508060005b82811015610786576001600160a01b038716600090815260ca6020526040812060010161070d8388611c45565b8154811061071d5761071d611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c45565b4310156107735781925050610786565b508061077e81611c73565b9150506106e0565b508060008167ffffffffffffffff8111156107a3576107a3611c8e565b6040519080825280602002602001820160405280156107e857816020015b60408051808201909152600080825260208201528152602001906001900390816107c15790505b509050811561089d5760005b8281101561089b576001600160a01b038916600090815260ca602052604090206001016108218289611c45565b8154811061083157610831611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087d5761087d611c5d565b6020026020010181905250808061089390611c73565b9150506107f4565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108d58383611c2e565b905060008167ffffffffffffffff8111156108f2576108f2611c8e565b60405190808252806020026020018201604052801561093757816020015b60408051808201909152600080825260208201528152602001906001900390816109105790505b50905060005b828110156109e4576001600160a01b038716600090815260ca6020526040902060010161096a8287611c45565b8154811061097a5761097a611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109c6576109c6611c5d565b602002602001018190525080806109dc90611c73565b91505061093d565b5095945050505050565b6109f6611471565b61056b816114cb565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611bae565b610a875760405162461bcd60e51b815260040161055990611bd0565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ace611471565b610ad86000611593565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b54575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b2d57610b2d611c5d565b600091825260209091200154610b509190600160e01b900463ffffffff16611c45565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b9e57610b9e611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063a38406a390602401602060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190611b47565b6001600160a01b031614610ce75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b60985460009060019081161415610d105760405162461bcd60e51b815260040161055990611ca4565b6001600160a01b038316610da65760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e96576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e5791611c2e565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b60026065541415610ef05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610f1e5760405162461bcd60e51b815260040161055990611ca4565b610f2833836115e5565b50506001606555565b60026065541415610f845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610fb25760405162461bcd60e51b815260040161055990611ca4565b610fbc83836115e5565b5050600160655550565b600054610100900460ff1615808015610fe65750600054600160ff909116105b806110005750303b158015611000575060005460ff166001145b6110635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611086576000805461ff0019166101001790555b61108f85611593565b6110998484611750565b6110a2826114cb565b8015610e96576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561119a57600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff168183015282526001909201910161114e565b505050915250909392505050565b6111b0611471565b6001600160a01b0381166112155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b81611593565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190611b47565b6001600160a01b0316336001600160a01b0316146112c55760405162461bcd60e51b815260040161055990611b64565b6098541981196098541916146113435760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166114085760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ad85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc08111156115525760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b848110801561161e57508161161c8285611c45565b105b156116cb576001600160a01b038616600090815260ca602052604081206001016116488386611c45565b8154811061165857611658611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061169e91611c45565b4310156116ab57506116cb565b80516116c0906001600160e01b031686611c45565b945050600101611607565b6116d58184611c45565b6001600160a01b038716600090815260ca602052604090205583156116fe576116fe868561183a565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943868561172b8487611c45565b604080516001600160a01b039094168452602084019290925290820152606001610e8c565b6097546001600160a01b031615801561177157506001600160a01b03821615155b6117f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118368261137a565b5050565b8047101561188a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d7576040519150601f19603f3d011682016040523d82523d6000602084013e6118dc565b606091505b50509050806119535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561197f57600080fd5b813561198a81611958565b9392505050565b6000602082840312156119a357600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000919060409081850190868401855b82811015611a08576119f88483516119aa565b92840192908501906001016119e5565b5091979650505050505050565b600060208284031215611a2757600080fd5b813560ff8116811461198a57600080fd5b60008060408385031215611a4b57600080fd5b8235611a5681611958565b946020939093013593505050565b60408101610b5782846119aa565b60008060408385031215611a8557600080fd5b8235611a9081611958565b91506020830135611aa081611958565b809150509250929050565b60008060008060808587031215611ac157600080fd5b8435611acc81611958565b93506020850135611adc81611958565b93969395505050506040820135916060013590565b602080825282518282015282810151604080840181905281516060850181905260009392830191849160808701905b8084101561089b57611b338286516119aa565b938501936001939093019290820190611b20565b600060208284031215611b5957600080fd5b815161198a81611958565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611bc057600080fd5b8151801515811461198a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611c4057611c40611c18565b500390565b60008219821115611c5857611c58611c18565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c8757611c87611c18565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220a7b0cb3cf71cdb5256fb15bfe475d018f2b85f6e5dc28544afc2cd784e4aa59c64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x99bba657f2bbc93c02d617f8ba121cb8fc104acf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x33":"0x1","0x66":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xca":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","0xcb":"0x0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220b9a0b1d8df8cd92b847388841ab1f1297b81cc8e649136efd63d722bd4db6bc364736f6c634300080c0033","storage":{}},"0x9d4454b023096f34b160d6b654540c56a1f81688":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x8000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb7278a61aa25c888815afc32ad3cc52ff24fe575","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212209882247b872d905a05380b42c11d1716ad43e9b19643a0cf588a80c0958bf20d64736f6c634300080c0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":1,"balance":"0x21d8f1965d96a744598","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x4c116bb629bff7a8373c2378bbd919f8349b8f25","0x9c":"0x65c36ac0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614806110d05750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570716148061144c5750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000042684614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220d66f588615166c5a17b325e84a4667d637f2966626a1aabc3c0fecdfe833625064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xa85233c63b9ee964add6f2cffe00fd84eb32338f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x3f1c547b21f65e10480de3ad8e19faac46c95034","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061025e5760003560e01c80636fe9b41a11610146578063b98fba4f116100c3578063ef02445811610087578063ef0244581461062d578063efcf4edb14610635578063f2fde38b14610648578063f63c5bab1461062d578063f8c8765e1461065b578063fabc1cbc1461066e57600080fd5b8063b98fba4f146105b7578063cefdc1d4146105ca578063cf4b1710146105eb578063da16491f146105f3578063df5cf7231461060657600080fd5b80638da5cb5b1161010a5780638da5cb5b1461054e57806395eebee61461055f578063a168e3c014610582578063a35d2e05146105a2578063b98d0908146105aa57600080fd5b80636fe9b41a146104f7578063715018a61461050a5780637afa1eed14610512578063886f11951461052d5780638cbc379a1461054057600080fd5b80634f19ade7116101df5780635c155662116101a35780635c155662146104395780635c975abb146104595780635df459461461046157806368304835146104885780636d14a987146104af5780636efb4636146104d657600080fd5b80634f19ade71461039d5780634f739f74146103cb578063595c6a67146103eb5780635ac86ab7146103f35780635ace2df71461042657600080fd5b8063292f7a4e11610226578063292f7a4e146103165780632e44b3491461034057806332a8ad1e146103505780633563b0d11461036a578063416c7e5e1461038a57600080fd5b806310d67a2f14610263578063136439dd14610278578063171f1d5b1461028b5780631ad43189146102ba578063245a7bfc146102f6575b600080fd5b6102766102713660046145cb565b610681565b005b6102766102863660046145e8565b61073d565b61029e610299366004614766565b61086a565b6040805192151583529015156020830152015b60405180910390f35b6102e17f000000000000000000000000000000000000000000000000000000000000001e81565b60405163ffffffff90911681526020016102b1565b60ca54610309906001600160a01b031681565b6040516102b191906147b7565b610329610324366004614ad4565b6109f4565b6040805192151583526020830191909152016102b1565b60c9546102e19063ffffffff1681565b610358600281565b60405160ff90911681526020016102b1565b61037d610378366004614b6e565b610ac1565b6040516102b19190614cc9565b610276610398366004614cea565b610f59565b6103bd6103ab366004614d07565b60cb6020526000908152604090205481565b6040519081526020016102b1565b6103de6103d9366004614d24565b6110ce565b6040516102b19190614e28565b6102766117f4565b610416610401366004614ef2565b606654600160ff9092169190911b9081161490565b60405190151581526020016102b1565b610276610434366004614f39565b6118ae565b61044c610447366004614fca565b611938565b6040516102b19190615076565b6066546103bd565b6103097f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168881565b6103097f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81565b6103097f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6104e96104e43660046150ba565b611b00565b6040516102b192919061517a565b6104166105053660046151d5565b612a0d565b610276612a7c565b60c9546103099064010000000090046001600160a01b031681565b606554610309906001600160a01b031681565b60c95463ffffffff166102e1565b6033546001600160a01b0316610309565b61041661056d366004614d07565b60cd6020526000908152604090205460ff1681565b6103bd610590366004614d07565b60cc6020526000908152604090205481565b610358600181565b6097546104169060ff1681565b6104166105c5366004615249565b612a90565b6105dd6105d83660046152a7565b612aef565b6040516102b19291906152e9565b610358600081565b610276610601366004615302565b612c81565b6103097f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6102e1606481565b610276610643366004615383565b612fac565b6102766106563660046145cb565b6131c3565b6102766106693660046153fa565b613239565b61027661067c3660046145e8565b61339e565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f89190615456565b6001600160a01b0316336001600160a01b0316146107315760405162461bcd60e51b815260040161072890615473565b60405180910390fd5b61073a816134f5565b50565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e9061076d9033906004016147b7565b602060405180830381865afa15801561078a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ae91906154bd565b6107ca5760405162461bcd60e51b8152600401610728906154da565b6066548181161461083e5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b6064820152608401610728565b60668190556040518181523390600080516020615eb6833981519152906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106108b2576108b2615522565b60200201518951600160200201518a602001516000600281106108d7576108d7615522565b60200201518b602001516001600281106108f3576108f3615522565b602090810291909101518c518d8301516040516109509a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6109739190615538565b90506109e661098c61098588846135ec565b8690613683565b610994613717565b6109dc6109cd856109c7604080518082018252600080825260209182015281518083019092526001825260029082015290565b906135ec565b6109d68c6137d7565b90613683565b886201d4c0613867565b909890975095505050505050565b600080600080610a078a8a8a8a8a611b00565b9150915060005b88811015610aad578563ffffffff1683602001518281518110610a3357610a33615522565b6020026020010151610a459190615570565b6001600160601b0316606463ffffffff1684600001518381518110610a6c57610a6c615522565b6020026020010151610a7e9190615570565b6001600160601b03161015610a9b5750600093509150610ab69050565b80610aa58161559f565b915050610a0e565b50600193509150505b965096945050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190615456565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8d9190615456565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf39190615456565b9050600086516001600160401b03811115610c1057610c10614601565b604051908082528060200260200182016040528015610c4357816020015b6060815260200190600190039081610c2e5790505b50905060005b8751811015610f4b576000888281518110610c6657610c66615522565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610cc7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cef91908101906155ba565b905080516001600160401b03811115610d0a57610d0a614601565b604051908082528060200260200182016040528015610d5557816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d285790505b50848481518110610d6857610d68615522565b602002602001018190525060005b8151811015610f35576040518060600160405280876001600160a01b03166347b314e8858581518110610dab57610dab615522565b60200260200101516040518263ffffffff1660e01b8152600401610dd191815260200190565b602060405180830381865afa158015610dee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e129190615456565b6001600160a01b03168152602001838381518110610e3257610e32615522565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610e6057610e60615522565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee0919061564a565b6001600160601b0316815250858581518110610efe57610efe615522565b60200260200101518281518110610f1757610f17615522565b60200260200101819052508080610f2d9061559f565b915050610d76565b5050508080610f439061559f565b915050610c49565b5093505050505b9392505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb9190615456565b6001600160a01b0316336001600160a01b0316146110875760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610728565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6110f96040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190615456565b905061118a6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e906111ba908b9089908990600401615673565b600060405180830381865afa1580156111d7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111ff91908101906156bd565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290611231908b908b908b90600401615774565b600060405180830381865afa15801561124e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261127691908101906156bd565b6040820152856001600160401b0381111561129357611293614601565b6040519080825280602002602001820160405280156112c657816020015b60608152602001906001900390816112b15790505b50606082015260005b60ff8116871115611705576000856001600160401b038111156112f4576112f4614601565b60405190808252806020026020018201604052801561131d578160200160208202803683370190505b5083606001518360ff168151811061133757611337615522565b602002602001018190525060005b868110156116055760008c6001600160a01b03166304ec63518a8a8581811061137057611370615522565b905060200201358e8860000151868151811061138e5761138e615522565b60200260200101516040518463ffffffff1660e01b81526004016113cb9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156113e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140c919061579d565b90506001600160c01b0381166114b05760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610728565b8a8a8560ff168181106114c5576114c5615522565b6001600160c01b03841692013560f81c9190911c6001908116141590506115f257856001600160a01b031663dd9846b98a8a8581811061150757611507615522565b905060200201358d8d8860ff1681811061152357611523615522565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d91906157c6565b85606001518560ff16815181106115b6576115b6615522565b602002602001015184815181106115cf576115cf615522565b63ffffffff90921660209283029190910190910152826115ee8161559f565b9350505b50806115fd8161559f565b915050611345565b506000816001600160401b0381111561162057611620614601565b604051908082528060200260200182016040528015611649578160200160208202803683370190505b50905060005b828110156116ca5784606001518460ff168151811061167057611670615522565b6020026020010151818151811061168957611689615522565b60200260200101518282815181106116a3576116a3615522565b63ffffffff90921660209283029190910190910152806116c28161559f565b91505061164f565b508084606001518460ff16815181106116e5576116e5615522565b6020026020010181905250505080806116fd906157e3565b9150506112cf565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015611746573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176a9190615456565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c9061179d908b908b908e90600401615803565b600060405180830381865afa1580156117ba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117e291908101906156bd565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906118249033906004016147b7565b602060405180830381865afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186591906154bd565b6118815760405162461bcd60e51b8152600401610728906154da565b60001960668190556040519081523390600080516020615eb68339815191529060200160405180910390a2565b606654600290600490811614156118d75760405162461bcd60e51b81526004016107289061582d565b60006118e66020860186614d07565b90506118f28686613a8b565b61192f57604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350611931565b505b5050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b815260040161196a929190615860565b600060405180830381865afa158015611987573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119af91908101906156bd565b9050600084516001600160401b038111156119cc576119cc614601565b6040519080825280602002602001820160405280156119f5578160200160208202803683370190505b50905060005b8551811015611af657866001600160a01b03166304ec6351878381518110611a2557611a25615522565b602002602001015187868581518110611a4057611a40615522565b60200260200101516040518463ffffffff1660e01b8152600401611a7d9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abe919061579d565b6001600160c01b0316828281518110611ad957611ad9615522565b602090810291909101015280611aee8161559f565b9150506119fb565b5095945050505050565b6040805180820190915260608082526020820152600084611b715760405162461bcd60e51b81526020600482015260376024820152600080516020615f168339815191526044820152761c995cce88195b5c1d1e481c5d5bdc9d5b481a5b9c1d5d604a1b6064820152608401610728565b60408301515185148015611b89575060a08301515185145b8015611b99575060c08301515185145b8015611ba9575060e08301515185145b611c135760405162461bcd60e51b81526020600482015260416024820152600080516020615f1683398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610728565b82515160208401515114611c8b5760405162461bcd60e51b815260206004820152604460248201819052600080516020615f16833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610728565b4363ffffffff168463ffffffff1610611cfa5760405162461bcd60e51b815260206004820152603c6024820152600080516020615f1683398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610728565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115611d3b57611d3b614601565b604051908082528060200260200182016040528015611d64578160200160208202803683370190505b506020820152866001600160401b03811115611d8257611d82614601565b604051908082528060200260200182016040528015611dab578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115611ddf57611ddf614601565b604051908082528060200260200182016040528015611e08578160200160208202803683370190505b5081526020860151516001600160401b03811115611e2857611e28614601565b604051908082528060200260200182016040528015611e51578160200160208202803683370190505b5081602001819052506000611f238a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf169350639aa1653d925060048083019260209291908290030181865afa158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e91906158b4565b613a94565b905060005b8760200151518110156121be57611f6d88602001518281518110611f4e57611f4e615522565b6020026020010151805160009081526020918201519091526040902090565b83602001518281518110611f8357611f83615522565b60209081029190910101528015612043576020830151611fa46001836158d1565b81518110611fb457611fb4615522565b602002602001015160001c83602001518281518110611fd557611fd5615522565b602002602001015160001c11612043576040805162461bcd60e51b8152602060048201526024810191909152600080516020615f1683398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610728565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b03166304ec63518460200151838151811061208857612088615522565b60200260200101518b8b6000015185815181106120a7576120a7615522565b60200260200101516040518463ffffffff1660e01b81526004016120e49392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612125919061579d565b6001600160c01b03168360000151828151811061214457612144615522565b6020026020010181815250506121aa61098561217e848660000151858151811061217057612170615522565b602002602001015116613b0c565b8a60200151848151811061219457612194615522565b6020026020010151613b3790919063ffffffff16565b9450806121b68161559f565b915050611f28565b50506121c983613c1b565b60975490935060ff166000816121e0576000612262565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226291906158e8565b905060005b8a8110156128e05782156123c2578963ffffffff16827f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b031663249a0c428f8f868181106122be576122be615522565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156122fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232291906158e8565b61232c9190615901565b116123c25760405162461bcd60e51b81526020600482015260666024820152600080516020615f1683398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610728565b7f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b03166368bccaac8d8d8481811061240357612403615522565b9050013560f81c60f81b60f81c8c8c60a00151858151811061242757612427615522565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a79190615919565b6001600160401b0319166124ca8a604001518381518110611f4e57611f4e615522565b67ffffffffffffffff1916146125665760405162461bcd60e51b81526020600482015260616024820152600080516020615f1683398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610728565b6125968960400151828151811061257f5761257f615522565b60200260200101518761368390919063ffffffff16565b95507f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031663c8294c568d8d848181106125d9576125d9615522565b9050013560f81c60f81b60f81c8c8c60c0015185815181106125fd576125fd615522565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267d919061564a565b8560200151828151811061269357612693615522565b6001600160601b039092166020928302919091018201528501518051829081106126bf576126bf615522565b6020026020010151856000015182815181106126dd576126dd615522565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156128cb576127558660000151828151811061272757612727615522565b60200260200101518f8f8681811061274157612741615522565b600192013560f81c9290921c811614919050565b156128b9577f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031663f2be94ae8f8f8681811061279b5761279b615522565b9050013560f81c60f81b60f81c8e896020015185815181106127bf576127bf615522565b60200260200101518f60e0015188815181106127dd576127dd615522565b602002602001015187815181106127f6576127f6615522565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa15801561285a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287e919061564a565b875180518590811061289257612892615522565b602002602001018181516128a69190615944565b6001600160601b03169052506001909101905b806128c38161559f565b915050612701565b505080806128d89061559f565b915050612267565b5050506000806128fa8c868a606001518b6080015161086a565b915091508161296b5760405162461bcd60e51b81526020600482015260436024820152600080516020615f1683398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610728565b806129c85760405162461bcd60e51b81526020600482015260396024820152600080516020615f168339815191526044820152781c995cce881cda59db985d1d5c99481a5cc81a5b9d985b1a59603a1b6064820152608401610728565b505060008782602001516040516020016129e392919061596c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6000612a1884613cb6565b823514612a375760405162461bcd60e51b8152600401610728906159b4565b612a45836040013583613cd4565b612a615760405162461bcd60e51b8152600401610728906159e1565b6000612a6c85613d54565b6020840135149150509392505050565b612a84613d84565b612a8e6000613dde565b565b6000612a9b84613e30565b823514612aba5760405162461bcd60e51b8152600401610728906159b4565b612ac8836020013583613cd4565b612ae45760405162461bcd60e51b8152600401610728906159e1565b6000612a6c85613e69565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110612b2a57612b2a615522565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90612b669088908690600401615860565b600060405180830381865afa158015612b83573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bab91908101906156bd565b600081518110612bbd57612bbd615522565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015612c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4d919061579d565b6001600160c01b031690506000612c6382613e7c565b905081612c718a838a610ac1565b9550955050505050935093915050565b60ca546001600160a01b03163314612cdb5760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610728565b60665460019060029081161415612d045760405162461bcd60e51b81526004016107289061582d565b6000612d136020860186614d07565b9050366000612d256080880188615a0c565b90925090506000612d3c6080890160608a01614d07565b905060cb6000612d4f60208a018a614d07565b63ffffffff1663ffffffff16815260200190815260200160002054612d7389613f48565b14612db25760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b6044820152606401610728565b600060cc81612dc460208b018b614d07565b63ffffffff1663ffffffff1681526020019081526020016000205414612e255760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b6044820152606401610728565b612e4f7f000000000000000000000000000000000000000000000000000000000000001e85615a52565b63ffffffff164363ffffffff161115612ea35760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b6044820152606401610728565b6000612eae88613f5b565b9050600080612ec18387878a8d896109f4565b9150915081612f035760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610728565b6040805180820190915263ffffffff4316815260208101829052612f3681612f30368e90038e018e615a7a565b90613f6e565b60cc6000612f4760208f018f614d07565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8b82604051612f96929190615b03565b60405180910390a1505050505050505050505050565b60c95464010000000090046001600160a01b031633146130185760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610728565b606654600090600190811614156130415760405162461bcd60e51b81526004016107289061582d565b606463ffffffff851611156130aa5760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b6064820152608401610728565b60006040518060a001604052804363ffffffff168152602001886001600160401b03168152602001876001600160401b031681526020018663ffffffff16815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050915250905061313081613fa1565b60c9805463ffffffff908116600090815260cb60205260409081902093909355905491519116907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c3322590613184908490615b2d565b60405180910390a260c9546131a09063ffffffff166001615a52565b60c9805463ffffffff191663ffffffff9290921691909117905550505050505050565b6131cb613d84565b6001600160a01b0381166132305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610728565b61073a81613dde565b600054610100900460ff16158080156132595750600054600160ff909116105b806132735750303b158015613273575060005460ff166001145b6132d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610728565b6000805460ff1916600117905580156132f9576000805461ff0019166101001790555b613304856000613fb4565b61330d84613dde565b60ca80546001600160a01b0319166001600160a01b038581169190911790915560c98054640100000000600160c01b031916640100000000928516929092029190911790558015611931576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134159190615456565b6001600160a01b0316336001600160a01b0316146134455760405162461bcd60e51b815260040161072890615473565b6066541981196066541916146134be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b6064820152608401610728565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161085f565b6001600160a01b0381166135835760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610728565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526136086144dc565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561363b5761363d565bfe5b508061367b5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610728565b505092915050565b604080518082019091526000808252602082015261369f6144fa565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561363b57508061367b5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610728565b61371f614518565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613807600080516020615ed683398151915286615538565b90505b6138138161408c565b9093509150600080516020615ed683398151915282830983141561384d576040805180820190915290815260208101919091529392505050565b600080516020615ed683398151915260018208905061380a565b60408051808201825286815260208082018690528251808401909352868352820184905260009182919061389961453d565b60005b6002811015613a5e5760006138b2826006615bcb565b90508482600281106138c6576138c6615522565b602002015151836138d8836000615901565b600c81106138e8576138e8615522565b60200201528482600281106138ff576138ff615522565b602002015160200151838260016139169190615901565b600c811061392657613926615522565b602002015283826002811061393d5761393d615522565b6020020151515183613950836002615901565b600c811061396057613960615522565b602002015283826002811061397757613977615522565b6020020151516001602002015183613990836003615901565b600c81106139a0576139a0615522565b60200201528382600281106139b7576139b7615522565b6020020151602001516000600281106139d2576139d2615522565b6020020151836139e3836004615901565b600c81106139f3576139f3615522565b6020020152838260028110613a0a57613a0a615522565b602002015160200151600160028110613a2557613a25615522565b602002015183613a36836005615901565b600c8110613a4657613a46615522565b60200201525080613a568161559f565b91505061389c565b50613a6761455c565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60005b92915050565b600080613aa08461410e565b9050808360ff166001901b11610f525760405162461bcd60e51b815260206004820152603f6024820152600080516020615ef683398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610728565b6000805b8215613a8e57613b216001846158d1565b9092169180613b2f81615bea565b915050613b10565b60408051808201909152600080825260208201526102008261ffff1610613b935760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610728565b8161ffff1660011415613ba7575081613a8e565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613c1057600161ffff871660ff83161c81161415613bf357613bf08484613683565b93505b613bfd8384613683565b92506201fffe600192831b169101613bc3565b509195945050505050565b60408051808201909152600080825260208201528151158015613c4057506020820151155b15613c5e575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615ed68339815191528460200151613c919190615538565b613ca990600080516020615ed68339815191526158d1565b905292915050565b919050565b6000613cc56020830183615c0c565b6001600160401b031692915050565b6000610100613ce66060840184615c27565b905011158015613cfc5750610100826080013511155b613d425760405162461bcd60e51b81526020600482015260176024820152760a6d2c8ca40dcdec8cae640caf0c6cacac840c8cae0e8d604b1b6044820152606401610728565b613d4b82614277565b90921492915050565b600081604051602001613d679190615c70565b604051602081830303815290604052805190602001209050919050565b6033546001600160a01b03163314612a8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610728565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006040613e416020840184614d07565b63ffffffff16901b613e596040840160208501615c0c565b6001600160401b03161792915050565b600081604051602001613d679190615d40565b6060600080613e8a84613b0c565b61ffff166001600160401b03811115613ea557613ea5614601565b6040519080825280601f01601f191660200182016040528015613ecf576020820181803683370190505b5090506000805b825182108015613ee7575061010081105b15613f3e576001811b935085841615613f2e578060f81b838381518110613f1057613f10615522565b60200101906001600160f81b031916908160001a9053508160010191505b613f378161559f565b9050613ed6565b5090949350505050565b600081604051602001613d679190615dac565b600081604051602001613d679190615e68565b60008282604051602001613f83929190615e76565b60405160208183030381529060405280519060200120905092915050565b600081604051602001613d679190615b2d565b6065546001600160a01b0316158015613fd557506001600160a01b03821615155b6140575760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610728565b60668190556040518181523390600080516020615eb68339815191529060200160405180910390a2614088826134f5565b5050565b60008080600080516020615ed68339815191526003600080516020615ed683398151915286600080516020615ed6833981519152888909090890506000614102827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615ed6833981519152614374565b91959194509092505050565b6000610100825111156141855760405162461bcd60e51b815260206004820152604460248201819052600080516020615ef6833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610728565b815161419357506000919050565b600080836000815181106141a9576141a9615522565b0160200151600160f89190911c81901b92505b845181101561426e578481815181106141d7576141d7615522565b0160200151600160f89190911c1b915082821161425a5760405162461bcd60e51b81526020600482015260476024820152600080516020615ef683398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610728565b918117916142678161559f565b90506141bc565b50909392505050565b60006142816144dc565b60408051843560208201526000910160405160208183030381529060405280519060200120905060006142b583838761441c565b905060006142c960808701356101006158d1565b83901c90506000805b876080013581101561436857600060408901356001831b16614322576142fb60608a018a615c27565b846143058161559f565b955081811061431657614316615522565b90506020020135614325565b60005b90506001821b84166143455761433e87600187846144c1565b9450614355565b61435287600183886144c1565b94505b50806143608161559f565b9150506142d2565b50919695505050505050565b60008061437f61455c565b61438761457a565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561363b5750826144115760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610728565b505195945050505050565b600060208201356144a85760a082013561443857506000610f52565b828260a00135141561448c5760405162461bcd60e51b815260206004820152601f60248201527f6e6f6e4d656d626572736869704c656166206e6f7420756e72656c61746564006044820152606401610728565b6144a18460008460a001358560c001356144c1565b9050610f52565b6144b98460008585602001356144c1565b949350505050565b60008385535060018401919091526021830152506041902090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061452b614598565b8152602001614538614598565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461073a57600080fd5b6000602082840312156145dd57600080fd5b8135610f52816145b6565b6000602082840312156145fa57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561463957614639614601565b60405290565b60405161010081016001600160401b038111828210171561463957614639614601565b604051601f8201601f191681016001600160401b038111828210171561468a5761468a614601565b604052919050565b6000604082840312156146a457600080fd5b6146ac614617565b9050813581526020820135602082015292915050565b600082601f8301126146d357600080fd5b604051604081018181106001600160401b03821117156146f5576146f5614601565b806040525080604084018581111561470c57600080fd5b845b81811015613c1057803583526020928301920161470e565b60006080828403121561473857600080fd5b614740614617565b905061474c83836146c2565b815261475b83604084016146c2565b602082015292915050565b600080600080610120858703121561477d57600080fd5b8435935061478e8660208701614692565b925061479d8660608701614726565b91506147ac8660e08701614692565b905092959194509250565b6001600160a01b0391909116815260200190565b60008083601f8401126147dd57600080fd5b5081356001600160401b038111156147f457600080fd5b60208301915083602082850101111561480c57600080fd5b9250929050565b63ffffffff8116811461073a57600080fd5b8035613cb181614813565b60006001600160401b0382111561484957614849614601565b5060051b60200190565b600082601f83011261486457600080fd5b8135602061487961487483614830565b614662565b82815260059290921b8401810191818101908684111561489857600080fd5b8286015b848110156148bc5780356148af81614813565b835291830191830161489c565b509695505050505050565b600082601f8301126148d857600080fd5b813560206148e861487483614830565b82815260069290921b8401810191818101908684111561490757600080fd5b8286015b848110156148bc5761491d8882614692565b83529183019160400161490b565b600082601f83011261493c57600080fd5b8135602061494c61487483614830565b82815260059290921b8401810191818101908684111561496b57600080fd5b8286015b848110156148bc5780356001600160401b0381111561498e5760008081fd5b61499c8986838b0101614853565b84525091830191830161496f565b600061018082840312156149bd57600080fd5b6149c561463f565b905081356001600160401b03808211156149de57600080fd5b6149ea85838601614853565b83526020840135915080821115614a0057600080fd5b614a0c858386016148c7565b60208401526040840135915080821115614a2557600080fd5b614a31858386016148c7565b6040840152614a438560608601614726565b6060840152614a558560e08601614692565b6080840152610120840135915080821115614a6f57600080fd5b614a7b85838601614853565b60a0840152610140840135915080821115614a9557600080fd5b614aa185838601614853565b60c0840152610160840135915080821115614abb57600080fd5b50614ac88482850161492b565b60e08301525092915050565b60008060008060008060a08789031215614aed57600080fd5b8635955060208701356001600160401b0380821115614b0b57600080fd5b614b178a838b016147cb565b909750955060408901359150614b2c82614813565b90935060608801359080821115614b4257600080fd5b50614b4f89828a016149aa565b9250506080870135614b6081614813565b809150509295509295509295565b600080600060608486031215614b8357600080fd5b8335614b8e816145b6565b92506020848101356001600160401b0380821115614bab57600080fd5b818701915087601f830112614bbf57600080fd5b813581811115614bd157614bd1614601565b614be3601f8201601f19168501614662565b91508082528884828501011115614bf957600080fd5b8084840185840137600084828401015250809450505050614c1c60408501614825565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015614cbb578385038a52825180518087529087019087870190845b81811015614ca657835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101614c62565b50509a87019a95505091850191600101614c44565b509298975050505050505050565b602081526000610f526020830184614c25565b801515811461073a57600080fd5b600060208284031215614cfc57600080fd5b8135610f5281614cdc565b600060208284031215614d1957600080fd5b8135610f5281614813565b60008060008060008060808789031215614d3d57600080fd5b8635614d48816145b6565b95506020870135614d5881614813565b945060408701356001600160401b0380821115614d7457600080fd5b614d808a838b016147cb565b90965094506060890135915080821115614d9957600080fd5b818901915089601f830112614dad57600080fd5b813581811115614dbc57600080fd5b8a60208260051b8501011115614dd157600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b83811015614e1d57815163ffffffff1687529582019590820190600101614dfb565b509495945050505050565b600060208083528351608082850152614e4460a0850182614de7565b905081850151601f1980868403016040870152614e618383614de7565b92506040870151915080868403016060870152614e7e8383614de7565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b82811015614ed55784878303018452614ec3828751614de7565b95880195938801939150600101614ea9565b509998505050505050505050565b60ff8116811461073a57600080fd5b600060208284031215614f0457600080fd5b8135610f5281614ee3565b600060a08284031215614f2157600080fd5b50919050565b600060608284031215614f2157600080fd5b60008060008084860360e0811215614f5057600080fd5b85356001600160401b0380821115614f6757600080fd5b614f7389838a01614f0f565b9650614f828960208a01614f27565b95506040607f1984011215614f9657600080fd5b60808801945060c0880135925080831115614fb057600080fd5b5050614fbe878288016148c7565b91505092959194509250565b600080600060608486031215614fdf57600080fd5b8335614fea816145b6565b92506020848101356001600160401b0381111561500657600080fd5b8501601f8101871361501757600080fd5b803561502561487482614830565b81815260059190911b8201830190838101908983111561504457600080fd5b928401925b8284101561506257833582529284019290840190615049565b8096505050505050614c1c60408501614825565b6020808252825182820181905260009190848201906040850190845b818110156150ae57835183529284019291840191600101615092565b50909695505050505050565b6000806000806000608086880312156150d257600080fd5b8535945060208601356001600160401b03808211156150f057600080fd5b6150fc89838a016147cb565b90965094506040880135915061511182614813565b9092506060870135908082111561512757600080fd5b50615134888289016149aa565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614e1d5781516001600160601b031687529582019590820190600101615155565b60408152600083516040808401526151956080840182615141565b90506020850151603f198483030160608501526151b28282615141565b925050508260208301529392505050565b600060e08284031215614f2157600080fd5b600080600060a084860312156151ea57600080fd5b83356001600160401b038082111561520157600080fd5b61520d87838801614f27565b945061521c8760208801614f27565b9350608086013591508082111561523257600080fd5b5061523f868287016151c3565b9150509250925092565b600080600083850361014081121561526057600080fd5b60c081121561526e57600080fd5b5083925061527f8560c08601614f27565b91506101208401356001600160401b0381111561529b57600080fd5b61523f868287016151c3565b6000806000606084860312156152bc57600080fd5b83356152c7816145b6565b92506020840135915060408401356152de81614813565b809150509250925092565b8281526040602082015260006144b96040830184614c25565b600080600060a0848603121561531757600080fd5b83356001600160401b038082111561532e57600080fd5b61533a87838801614f0f565b94506153498760208801614f27565b9350608086013591508082111561535f57600080fd5b5061523f868287016149aa565b80356001600160401b0381168114613cb157600080fd5b60008060008060006080868803121561539b57600080fd5b6153a48661536c565b94506153b26020870161536c565b935060408601356153c281614813565b925060608601356001600160401b038111156153dd57600080fd5b6153e9888289016147cb565b969995985093965092949392505050565b6000806000806080858703121561541057600080fd5b843561541b816145b6565b9350602085013561542b816145b6565b9250604085013561543b816145b6565b9150606085013561544b816145b6565b939692955090935050565b60006020828403121561546857600080fd5b8151610f52816145b6565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156154cf57600080fd5b8151610f5281614cdc565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261555557634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b03808316818516818304811182151516156155965761559661555a565b02949350505050565b60006000198214156155b3576155b361555a565b5060010190565b600060208083850312156155cd57600080fd5b82516001600160401b038111156155e357600080fd5b8301601f810185136155f457600080fd5b805161560261487482614830565b81815260059190911b8201830190838101908783111561562157600080fd5b928401925b8284101561563f57835182529284019290840190615626565b979650505050505050565b60006020828403121561565c57600080fd5b81516001600160601b0381168114610f5257600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156156a057600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156156d057600080fd5b82516001600160401b038111156156e657600080fd5b8301601f810185136156f757600080fd5b805161570561487482614830565b81815260059190911b8201830190838101908783111561572457600080fd5b928401925b8284101561563f57835161573c81614813565b82529284019290840190615729565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff8416815260406020820152600061579460408301848661574b565b95945050505050565b6000602082840312156157af57600080fd5b81516001600160c01b0381168114610f5257600080fd5b6000602082840312156157d857600080fd5b8151610f5281614813565b600060ff821660ff8114156157fa576157fa61555a565b60010192915050565b60408152600061581760408301858761574b565b905063ffffffff83166020830152949350505050565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156158a75784518352938301939183019160010161588b565b5090979650505050505050565b6000602082840312156158c657600080fd5b8151610f5281614ee3565b6000828210156158e3576158e361555a565b500390565b6000602082840312156158fa57600080fd5b5051919050565b600082198211156159145761591461555a565b500190565b60006020828403121561592b57600080fd5b815167ffffffffffffffff1981168114610f5257600080fd5b60006001600160601b03838116908316818110156159645761596461555a565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156159a75781518552938201939082019060010161598b565b5092979650505050505050565b6020808252601390820152720aee4dedcce40dacae6e6c2ceca40d2dcc8caf606b1b604082015260600190565b60208082526011908201527024b73b30b634b21029a6aa10383937b7b360791b604082015260600190565b6000808335601e19843603018112615a2357600080fd5b8301803591506001600160401b03821115615a3d57600080fd5b60200191503681900382131561480c57600080fd5b600063ffffffff808316818516808303821115615a7157615a7161555a565b01949350505050565b600060608284031215615a8c57600080fd5b604051606081018181106001600160401b0382111715615aae57615aae614601565b6040528235615abc81614813565b8152602083810135908201526040928301359281019290925250919050565b8035615ae681614813565b63ffffffff16825260208181013590830152604090810135910152565b60a08101615b118285615adb565b825163ffffffff16606083015260208301516080830152610f52565b6000602080835263ffffffff8085511682850152818501516001600160401b038082166040870152806040880151166060870152505080606086015116608085015250608084015160a08085015280518060c086015260005b81811015615ba25782810184015186820160e001528301615b86565b81811115615bb457600060e083880101525b50601f01601f19169390930160e001949350505050565b6000816000190483118215151615615be557615be561555a565b500290565b600061ffff80831681811415615c0257615c0261555a565b6001019392505050565b600060208284031215615c1e57600080fd5b610f528261536c565b6000808335601e19843603018112615c3e57600080fd5b8301803591506001600160401b03821115615c5857600080fd5b6020019150600581901b360382131561480c57600080fd5b60006020808352608083016001600160401b0380615c8d8761536c565b1683860152615c9d83870161536c565b604082821681880152808801359150601e19883603018212615cbe57600080fd5b90870190813583811115615cd157600080fd5b606093508381023603891315615ce657600080fd5b87840184905293849052908401926000919060a08801835b82811015614ed557863582528787013588830152838701356001600160801b038116808214615d2b578687fd5b83860152509585019590850190600101615cfe565b60c081018235615d4f81614813565b63ffffffff168252615d636020840161536c565b6001600160401b03808216602085015280615d806040870161536c565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b6020815260008235615dbd81614813565b63ffffffff8082166020850152615dd66020860161536c565b91506001600160401b03808316604086015280615df56040880161536c565b16606086015260608601359250615e0b83614813565b818316608086015260808601359250601e19863603018312615e2c57600080fd5b918501918235915080821115615e4157600080fd5b50803603851315615e5157600080fd5b60a08085015261579460c08501826020850161574b565b60608101613a8e8284615adb565b825163ffffffff168152602080840151908201526040808401519082015260a08101610f526060830184805163ffffffff16825260209081015191015256feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd474269746d61705574696c732e6f72646572656442797465734172726179546f42424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220a80f7ef5444e68e2746bb1c2c83b28f511d4afbbb6cc391e95d4f68b0a354e7364736f6c634300080c0033","storage":{"0x0":"0xff","0x97":"0x1"}},"0xb7278a61aa25c888815afc32ad3cc52ff24fe575":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d14a987116100925780636d14a987146102985780637916cea6146102bf5780637ff81a8714610300578063a3db80e214610333578063bf79ce581461035a578063d5254a8c1461036d578063de29fac01461038d578063e8bb9ae6146103ad578063f4e24fe5146103d657600080fd5b8062a1f4cb146100fa57806313542a4e1461013b57806326d941f21461015c578063377ed99d146101715780633fb27952146101a957806347b314e8146101bc5780635f61a884146101fd578063605747d51461021d57806368bccaac1461026b575b600080fd5b610121610108366004611891565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61014e610149366004611891565b6103e9565b604051908152602001610132565b61016f61016a3660046118c4565b610404565b005b61019461017f3660046118c4565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610132565b61016f6101b736600461194f565b61055d565b6101e56101ca3660046119f5565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610132565b61021061020b3660046118c4565b610605565b6040516101329190611a0e565b61023061022b366004611a25565b61063a565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610132565b61027e610279366004611a4f565b6106cd565b60405167ffffffffffffffff199091168152602001610132565b6101e57f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6102d26102cd366004611a25565b610868565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610132565b61031361030e366004611891565b6108b3565b604080518351815260209384015193810193909352820152606001610132565b6101216103413660046118c4565b6005602052600090815260409020805460019091015482565b61014e610368366004611a97565b610974565b61038061037b366004611af4565b610da4565b6040516101329190611b6c565b61014e61039b366004611891565b60016020526000908152604090205481565b6101e56103bb3660046119f5565b6002602052600090815260409020546001600160a01b031681565b61016f6103e436600461194f565b610fbe565b6001600160a01b031660009081526001602052604090205490565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146104555760405162461bcd60e51b815260040161044c90611bb6565b60405180910390fd5b60ff8116600090815260046020526040902054156104d45760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b606482015260840161044c565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146105a55760405162461bcd60e51b815260040161044c90611bb6565b60006105b0836108b3565b5090506105bd8282611051565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105e8856103e9565b846040516105f893929190611c2a565b60405180910390a1505050565b61060d6117a4565b5060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061067757610677611c96565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106f4576106f4611c96565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107bb5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e740000606482015260840161044c565b604081015163ffffffff1615806107e15750806040015163ffffffff168463ffffffff16105b61085f5760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a40161044c565b51949350505050565b6004602052816000526040600020818154811061088457600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b6108bb6117a4565b6001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061096a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f7420726567697374657265640000606482015260840161044c565b9094909350915050565b6000336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146109be5760405162461bcd60e51b815260040161044c90611bb6565b60006109ec6109d536869003860160408701611cac565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610a74576040805162461bcd60e51b8152602060048201526024810191909152600080516020611ec383398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b6579606482015260840161044c565b6001600160a01b03851660009081526001602052604090205415610afe5760405162461bcd60e51b81526020600482015260476024820152600080516020611ec383398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a40161044c565b6000818152600260205260409020546001600160a01b031615610b825760405162461bcd60e51b81526020600482015260426024820152600080516020611ec383398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a40161044c565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bdb918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611cde565b6040516020818303038152906040528051906020012060001c610bfe9190611d29565b9050610c74610c37610c2283610c1c368a90038a0160408b01611cac565b90611290565b610c3136899003890189611cac565b9061131b565b610c3f6113a3565b610c5d610c4e85610c1c611463565b610c31368a90038a018a611cac565b610c6f368a90038a0160808b01611d9b565b611484565b610d0f5760405162461bcd60e51b815260206004820152606c6024820152600080516020611ec383398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c40161044c565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d939160808a0190611df8565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610dc157610dc16118df565b604051908082528060200260200182016040528015610dea578160200160208202803683370190505b50905060005b84811015610fb5576000868683818110610e0c57610e0c611c96565b919091013560f81c6000818152600460205260409020549092509050801580610e6f575060ff821660009081526004602052604081208054909190610e5357610e53611c96565b600091825260209091200154600160c01b900463ffffffff1686105b15610efc5760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a40161044c565b805b8015610f9f5760ff831660009081526004602052604090208790610f23600184611e42565b81548110610f3357610f33611c96565b600091825260209091200154600160c01b900463ffffffff1611610f8d57610f5c600182611e42565b858581518110610f6e57610f6e611c96565b602002602001019063ffffffff16908163ffffffff1681525050610f9f565b80610f9781611e59565b915050610efe565b5050508080610fad90611e70565b915050610df0565b50949350505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146110065760405162461bcd60e51b815260040161044c90611bb6565b6000611011836108b3565b50905061102682611021836116f1565b611051565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105e8856103e9565b6110596117a4565b60005b835181101561128a57600084828151811061107957611079611c96565b0160209081015160f81c60008181526004909252604090912054909150806111095760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f74206578697374000000606482015260840161044c565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261113d908661131b565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111869085611e42565b8154811061119657611196611c96565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156111d75780546001600160c01b031916604083901c178155611273565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061128290611e70565b91505061105c565b50505050565b6112986117a4565b6112a06117be565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156112d3576112d5565bfe5b50806113135760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640161044c565b505092915050565b6113236117a4565b61132b6117dc565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156112d35750806113135760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640161044c565b6113ab6117fa565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b61146b6117a4565b5060408051808201909152600181526002602082015290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114b361181f565b60005b60028110156116785760006114cc826006611e8b565b90508482600281106114e0576114e0611c96565b602002015151836114f2836000611eaa565b600c811061150257611502611c96565b602002015284826002811061151957611519611c96565b602002015160200151838260016115309190611eaa565b600c811061154057611540611c96565b602002015283826002811061155757611557611c96565b602002015151518361156a836002611eaa565b600c811061157a5761157a611c96565b602002015283826002811061159157611591611c96565b60200201515160016020020151836115aa836003611eaa565b600c81106115ba576115ba611c96565b60200201528382600281106115d1576115d1611c96565b6020020151602001516000600281106115ec576115ec611c96565b6020020151836115fd836004611eaa565b600c811061160d5761160d611c96565b602002015283826002811061162457611624611c96565b60200201516020015160016002811061163f5761163f611c96565b602002015183611650836005611eaa565b600c811061166057611660611c96565b6020020152508061167081611e70565b9150506114b6565b5061168161183e565b60006020826101808560086107d05a03fa90508080156112d35750806116e15760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604482015260640161044c565b5051151598975050505050505050565b6116f96117a4565b815115801561170a57506020820151155b15611728575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161176d9190611d29565b611797907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e42565b905292915050565b919050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061180d61185c565b815260200161181a61185c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461179f57600080fd5b6000602082840312156118a357600080fd5b6118ac8261187a565b9392505050565b803560ff8116811461179f57600080fd5b6000602082840312156118d657600080fd5b6118ac826118b3565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611918576119186118df565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611947576119476118df565b604052919050565b6000806040838503121561196257600080fd5b61196b8361187a565b915060208084013567ffffffffffffffff8082111561198957600080fd5b818601915086601f83011261199d57600080fd5b8135818111156119af576119af6118df565b6119c1601f8201601f1916850161191e565b915080825287848285010111156119d757600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a0757600080fd5b5035919050565b8151815260208083015190820152604081016106c7565b60008060408385031215611a3857600080fd5b611a41836118b3565b946020939093013593505050565b600080600060608486031215611a6457600080fd5b611a6d846118b3565b9250602084013563ffffffff81168114611a8657600080fd5b929592945050506040919091013590565b6000806000838503610160811215611aae57600080fd5b611ab78561187a565b9350610100601f1982011215611acc57600080fd5b602085019250604061011f1982011215611ae557600080fd5b50610120840190509250925092565b600080600060408486031215611b0957600080fd5b833567ffffffffffffffff80821115611b2157600080fd5b818601915086601f830112611b3557600080fd5b813581811115611b4457600080fd5b876020828501011115611b5657600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611baa57835163ffffffff1683529284019291840191600101611b88565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c6c57858101830151858201608001528201611c50565b81811115611c7e576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611cbe57600080fd5b611cc66118f5565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611d4657634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d5c57600080fd5b611d646118f5565b806040840185811115611d7657600080fd5b845b81811015611d90578035845260209384019301611d78565b509095945050505050565b600060808284031215611dad57600080fd5b6040516040810181811067ffffffffffffffff82111715611dd057611dd06118df565b604052611ddd8484611d4b565b8152611dec8460408501611d4b565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e5457611e54611e2c565b500390565b600081611e6857611e68611e2c565b506000190190565b6000600019821415611e8457611e84611e2c565b5060010190565b6000816000190483118215151615611ea557611ea5611e2c565b500290565b60008219821115611ebd57611ebd611e2c565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ddede8559e28f5e5a06bdde4d1bac1435dc9017a2cffbdaed6846a95d536750064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000004268461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220417e740b15991a84d5959cee174069515fd054ff2b9bf9b349bc13e72db8820064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xc351628eb244ec633d5f21fbd6621e1a683b1181":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061029f5760003560e01c80635df4594611610167578063a50857bf116100ce578063dd8283f311610087578063dd8283f31461071c578063e65797ad1461072f578063f2fde38b146107ab578063f8581191146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b8063a50857bf14610694578063c391425e146106a7578063ca0de882146106c7578063ca4f2d97146106ee578063d72d8dd614610701578063d75b4c881461070957600080fd5b8063886f119511610120578063886f1195146105f35780638da5cb5b1461060c5780639aa1653d146106145780639b5d177b146106335780639e9923c2146106465780639feab8591461066d57600080fd5b80635df45946146105645780636347c9001461058b578063683048351461059e5780636e3b17db146105c5578063715018a6146105d8578063871ef049146105e057600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104ef5780635865c60c14610502578063595c6a67146105225780635ac86ab71461052a5780635b0b829f146105495780635c975abb1461055c57600080fd5b806328f61b311461045c578063296bb0641461046f57806329d1e0c3146104825780632cdd1e86146104955780633998fdd3146104a85780633c2a7f4c146104cf57600080fd5b806313542a4e1161025d57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c4214610415578063268f06e01461043557600080fd5b8062cf2ab5146102a457806303fd3492146102b957806304ec6351146102ec578063054310e6146103175780630cf4b7671461033757806310d67a2f1461034a575b600080fd5b6102b76102b2366004614a0d565b610820565b005b6102d96102c7366004614a4e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102ff6102fa366004614a79565b610836565b6040516001600160c01b0390911681526020016102e3565b609d5461032a906001600160a01b031681565b6040516102e39190614ab1565b6102b7610345366004614bac565b610a0d565b6102b7610358366004614c21565b610af5565b6102d961036b366004614c21565b6001600160a01b031660009081526099602052604090205490565b6102b7610394366004614a4e565b610ba8565b6103bc6103a7366004614a4e565b609a6020526000908152604090205460ff1681565b60405190151581526020016102e3565b6103df6103da366004614c3e565b610cd3565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102e3565b6102d9610423366004614c71565b609b6020526000908152604090205481565b61032a7f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57081565b609e5461032a906001600160a01b031681565b61032a61047d366004614a4e565b610d64565b6102b7610490366004614c21565b610df0565b6102b76104a3366004614c21565b610e01565b61032a7f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf81565b6104e26104dd366004614c21565b610e12565b6040516102e39190614c8c565b6102b76104fd366004614ce4565b610e91565b610515610510366004614c21565b610eab565b6040516102e39190614d87565b6102b7610f1f565b6103bc610538366004614c71565b6001805460ff9092161b9081161490565b6102b7610557366004614e0c565b610fde565b6001546102d9565b61032a7f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168881565b61032a610599366004614a4e565b61106f565b61032a7f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81565b6102b76105d3366004614e40565b611099565b6102b76110ac565b6102ff6105ee366004614a4e565b6110c0565b60005461032a906201000090046001600160a01b031681565b61032a6110cb565b6096546106219060ff1681565b60405160ff90911681526020016102e3565b6102b7610641366004614f60565b6110e4565b61032a7f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0081565b6102d97f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102b76106a2366004615059565b611108565b6106ba6106b5366004615124565b611126565b6040516102e391906151ce565b6102d97f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102b76106fc366004615218565b6111df565b609c546102d9565b6102b76107173660046152fe565b6111f1565b6102b761072a3660046154b1565b611204565b61079e61073d366004614c71565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b6040516102e39190615585565b6102b76107b9366004614c21565b611507565b6102d96107cc3660046155f6565b61157d565b6102b76107df366004614a4e565b6115c4565b6108136107f2366004614c21565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102e391906156ab565b61082861171b565b610832828261178a565b5050565b6000838152609860205260408120805482919084908110610859576108596156b9565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b031691830191909152909250851610156109465760405162461bcd60e51b81526020600482015260656024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4015b60405180910390fd5b602081015163ffffffff16158061096c5750806020015163ffffffff168463ffffffff16105b610a015760405162461bcd60e51b81526020600482015260666024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c40161093d565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610a3657610a36614d4f565b14610aa95760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f74207265676973746572656400000000606482015260840161093d565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610aea90849061571c565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061572f565b6001600160a01b0316336001600160a01b031614610b9c5760405162461bcd60e51b815260040161093d9061574c565b610ba581611891565b50565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610bdd903390600401614ab1565b602060405180830381865afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1e9190615796565b610c3a5760405162461bcd60e51b815260040161093d906157b8565b60015481811614610cae5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b606482015260840161093d565b60018190556040518181523390600080516020615f2083398151915290602001610aea565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610d1057610d106156b9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b0316906347b314e890602401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e919061572f565b610df8611997565b610ba5816119f6565b610e09611997565b610ba581611a5f565b6040805180820190915260008082526020820152610d5e610e8c7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610e719291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611ac8565b611b16565b610e9961171b565b610ea584848484611ba6565b50505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115610f0557610f05614d4f565b6002811115610f1657610f16614d4f565b90525092915050565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610f54903390600401614ab1565b602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190615796565b610fb15760405162461bcd60e51b815260040161093d906157b8565b60001960018190556040519081523390600080516020615f208339815191529060200160405180910390a2565b610fe6611997565b609654829060ff908116908216106110605760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d4578697374736044820152760e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd604a1b606482015260840161093d565b61106a8383612130565b505050565b609c818154811061107f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6110a161171b565b61106a8383836121ce565b6110b4611997565b6110be600061228e565b565b6000610d5e826122e0565b60006110df6064546001600160a01b031690565b905090565b6110ec61171b565b6110fd898989898989898989612349565b505050505050505050565b61111061171b565b61111e868686868686612680565b505050505050565b6060600082516001600160401b0381111561114357611143614ac5565b60405190808252806020026020018201604052801561116c578160200160208202803683370190505b50905060005b83518110156111d75761119e85858381518110611191576111916156b9565b6020026020010151612804565b8282815181106111b0576111b06156b9565b63ffffffff90921660209283029190910190910152806111cf81615816565b915050611172565b509392505050565b6111e761171b565b610832828261292e565b6111f9611997565b61106a838383612995565b600054610100900460ff16158080156112245750600054600160ff909116105b8061123e5750303b15801561123e575060005460ff166001145b6112a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161093d565b6000805460ff1916600117905580156112c4576000805461ff0019166101001790555b825184511480156112d6575081518351145b6113405760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b606482015260840161093d565b6113498961228e565b6113538686612bac565b61135c886119f6565b61136587611a5f565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688841690831617905585549384019095559190920180547f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0090921691909316179091555b84518110156114b6576114a4858281518110611463576114636156b9565b602002602001015185838151811061147d5761147d6156b9565b6020026020010151858481518110611497576114976156b9565b6020026020010151612995565b806114ae81615816565b915050611445565b5080156110fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61150f611997565b6001600160a01b0381166115745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b610ba58161228e565b60006115bb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a86868686604051602001610e71959493929190615831565b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b919061572f565b6001600160a01b0316336001600160a01b03161461166b5760405162461bcd60e51b815260040161093d9061574c565b6001541981196001541916146116e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b606482015260840161093d565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610aea565b7f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b031663bfe107386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561177657600080fd5b505af1158015610ea5573d6000803e3d6000fd5b600154600290600490811614156117b35760405162461bcd60e51b815260040161093d906158a7565b60005b82811015610ea55760008484838181106117d2576117d26156b9565b90506020020160208101906117e79190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561183257611832614d4f565b600281111561184357611843614d4f565b90525080519091506000611856826122e0565b9050600061186c826001600160c01b0316612c86565b9050611879858583612d52565b5050505050808061188990615816565b9150506117b6565b6001600160a01b03811661191f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161093d565b7f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6600060029054906101000a90046001600160a01b0316826040516119659291906158da565b60405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b336119a06110cb565b6001600160a01b0316146110be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b609d546040517f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c91611a35916001600160a01b039091169084906158da565b60405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e546040517f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc991611a9e916001600160a01b039091169084906158da565b60405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5e611ad5612e3f565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b604080518082019091526000808252602082015260008080611b46600080516020615f408339815191528661590a565b90505b611b5281612f66565b9093509150600080516020615f40833981519152828309831415611b8c576040805180820190915290815260208101919091529392505050565b600080516020615f40833981519152600182089050611b49565b60015460029060049081161415611bcf5760405162461bcd60e51b815260040161093d906158a7565b6000611c1784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050611c2281613067565b611c925760405162461bcd60e51b81526020600482015260476024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20736f6d652071756f72756d7320646f206e6f6064820152661d08195e1a5cdd60ca1b608482015260a40161093d565b848314611d015760405162461bcd60e51b81526020600482015260436024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a40161093d565b60005b83811015612127576000858583818110611d2057611d206156b9565b919091013560f81c91503690506000898985818110611d4157611d416156b9565b9050602002810190611d53919061591e565b6040516379a0849160e11b815260ff8616600482015291935091507f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd006001600160a01b03169063f341092290602401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190615967565b63ffffffff168114611e7f5760405162461bcd60e51b81526020600482015260656024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c40161093d565b6000805b828110156120c6576000848483818110611e9f57611e9f6156b9565b9050602002016020810190611eb49190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115611eff57611eff614d4f565b6002811115611f1057611f10614d4f565b90525080519091506000611f23826122e0565b905060016001600160c01b03821660ff8b161c811614611fa75760405162461bcd60e51b815260206004820152604460248201819052600080516020615ee0833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a40161093d565b856001600160a01b0316846001600160a01b0316116120525760405162461bcd60e51b81526020600482015260676024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c40161093d565b506120b083838f8f8d908e60016120699190615984565b926120769392919061599c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5292505050565b509092506120bf905081615816565b9050611e83565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061212090615816565b9050611d04565b50505050505050565b60ff821660008181526097602090815260409182902084518154928601518487015161ffff908116600160301b0267ffff0000000000001991909216600160201b0265ffffffffffff1990951663ffffffff909316929092179390931716919091179055517f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac906121c2908490615585565b60405180910390a25050565b609e546001600160a01b0316331461224e5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f72000000000000606482015260840161093d565b61106a8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081815260986020526040812054806122fd5750600092915050565b60008381526098602052604090206123166001836159c6565b81548110612326576123266156b9565b600091825260209091200154600160401b90046001600160c01b03169392505050565b6001805460009190811614156123715760405162461bcd60e51b815260040161093d906158a7565b8389146123f45760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a40161093d565b60006124003388613549565b905061245f818787808060200260200160405190810160405280939291908181526020016000905b8282101561245457612445604083028601368190038101906159dd565b81526020019060010190612428565b50505050508661367b565b60006124a633838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b905060005b8b811015612671576000609760008f8f858181106124cb576124cb6156b9565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110612538576125386156b9565b602002602001015163ffffffff16111561265e576125d98e8e84818110612561576125616156b9565b9050013560f81c60f81b60f81c84604001518481518110612584576125846156b9565b602002602001015133866020015186815181106125a3576125a36156b9565b60200260200101518d8d888181106125bd576125bd6156b9565b9050604002018036038101906125d391906159dd565b86613d5f565b61265e8989848181106125ee576125ee6156b9565b90506040020160200160208101906126069190614c21565b8f8f85908660016126179190615984565b926126249392919061599c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b508061266981615816565b9150506124ab565b50505050505050505050505050565b6001805460009190811614156126a85760405162461bcd60e51b815260040161093d906158a7565b60006126b43385613549565b905060006126fd33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b51905060005b888110156127f85760008a8a8381811061271f5761271f6156b9565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110612755576127556156b9565b602002602001015163ffffffff1611156127e55760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a40161093d565b50806127f081615816565b915050612703565b50505050505050505050565b600081815260986020526040812054815b8181101561289657600161282982846159c6565b61283391906159c6565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110612866576128666156b9565b60009182526020909120015463ffffffff1611612884575050610d5e565b8061288e81615816565b915050612815565b5060405162461bcd60e51b815260206004820152606c6024820152600080516020615ec083398151915260448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c40161093d565b60018054600290811614156129555760405162461bcd60e51b815260040161093d906158a7565b61106a3384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b60965460ff1660c08110612a095760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b606482015260840161093d565b612a148160016159f9565b6096805460ff191660ff9290921691909117905580612a338186612130565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d169063ff694a7790612a8690849088908890600401615a1e565b600060405180830381600087803b158015612aa057600080fd5b505af1158015612ab4573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b1c57600080fd5b505af1158015612b30573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b9857600080fd5b505af11580156110fd573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015612bd357506001600160a01b03821615155b612c555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161093d565b60018190556040518181523390600080516020615f208339815191529060200160405180910390a261083282611891565b6060600080612c9484614034565b61ffff166001600160401b03811115612caf57612caf614ac5565b6040519080825280601f01601f191660200182016040528015612cd9576020820181803683370190505b5090506000805b825182108015612cf1575061010081105b15612d48576001811b935085841615612d38578060f81b838381518110612d1a57612d1a6156b9565b60200101906001600160f81b031916908160001a9053508160010191505b612d4181615816565b9050612ce0565b5090949350505050565b600182602001516002811115612d6a57612d6a614d4f565b14612d7457505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16906366acfefe90612dc990889086908890600401615a97565b6020604051808303816000875af1158015612de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0c9190615abe565b90506001600160c01b03811615612e3857612e3885612e33836001600160c01b0316612c86565b61309a565b5050505050565b6000306001600160a01b037f000000000000000000000000c351628eb244ec633d5f21fbd6621e1a683b118116148015612e9857507f0000000000000000000000000000000000000000000000000000000000007a6946145b15612ec257507f3c76dd3e3a11d13343807370b8cba2bef53120b6c35960fabeed299514350ed790565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f408339815191526003600080516020615f4083398151915286600080516020615f40833981519152888909090890506000612fdc827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f4083398151915261405f565b91959194509092505050565b600080612ff48461410e565b9050808360ff166001901b116130605760405162461bcd60e51b815260206004820152603f6024820152600080516020615fa083398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c756500606482015260840161093d565b9392505050565b60965460009081906130819060019060ff1681901b6159c6565b90506130606001600160c01b0384811690831681161490565b6001600160a01b0382166000908152609960205260409020805460018083015460ff1660028111156130ce576130ce614d4f565b1461313b5760405162461bcd60e51b81526020600482015260436024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a40161093d565b60965460009061314f90859060ff16612fe8565b9050600061315c836122e0565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603b6024820152600080516020615f6083398151915260448201527f70657261746f723a206269746d61702063616e6e6f7420626520300000000000606482015260840161093d565b6131d182613067565b61323c5760405162461bcd60e51b81526020600482015260426024820152600080516020615f6083398151915260448201527f70657261746f723a20736f6d652071756f72756d7320646f206e6f74206578696064820152611cdd60f21b608482015260a40161093d565b6132536001600160c01b0383811690831681161490565b6132d55760405162461bcd60e51b81526020600482015260596024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527872656420666f72207370656369666965642071756f72756d7360381b608482015260a40161093d565b6001600160c01b03828116198216166132ee8482614277565b6001600160c01b0381166133c05760018501805460ff191660021790556040516351b27a6d60e11b81527f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf6001600160a01b03169063a364f4da90613357908a90600401614ab1565b600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688169063f4e24fe59061340e908a908a90600401615ae7565b600060405180830381600087803b15801561342857600080fd5b505af115801561343c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16925063bd29b8cd915061348e9087908a90600401615b0b565b600060405180830381600087803b1580156134a857600080fd5b505af11580156134bc573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0016925063bd29b8cd915061350e9087908a90600401615b0b565b600060405180830381600087803b15801561352857600080fd5b505af115801561353c573d6000803e3d6000fd5b5050505050505050505050565b6040516309aa152760e11b81526000906001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168816906313542a4e90613598908690600401614ab1565b602060405180830381865afa1580156135b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d99190615b24565b905080610d5e577f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b031663bf79ce58848461361a87610e12565b6040518463ffffffff1660e01b815260040161363893929190615b3d565b6020604051808303816000875af1158015613657573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130609190615b24565b6020808201516000908152609a909152604090205460ff16156137215760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a40161093d565b42816040015110156137b65760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a40161093d565b602080820180516000908152609a909252604091829020805460ff19166001179055609d5490519183015161106a926001600160a01b03909216916137fe918791879161157d565b8351614437565b61382960405180606001604052806060815260200160608152602001606081525090565b600061387186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050600061387e886122e0565b90506001600160c01b0382166138e65760405162461bcd60e51b81526020600482015260396024820152600080516020615f8083398151915260448201527807261746f723a206269746d61702063616e6e6f74206265203603c1b606482015260840161093d565b6138ef82613067565b613951576040805162461bcd60e51b8152602060048201526024810191909152600080516020615f8083398151915260448201527f7261746f723a20736f6d652071756f72756d7320646f206e6f74206578697374606482015260840161093d565b8082166001600160c01b0316156139f55760405162461bcd60e51b81526020600482015260686024820152600080516020615f8083398151915260448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c40161093d565b6001600160c01b0381811690831617613a0e8982614277565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa87604051613a3e919061571c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff166002811115613a7857613a78614d4f565b14613b91576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff191690836002811115613ad357613ad3614d4f565b021790555050604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf169150639926ee7d90613b28908d908990600401615bbc565b600060405180830381600087803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816881690633fb2795290613be1908d908c908c90600401615c30565b600060405180830381600087803b158015613bfb57600080fd5b505af1158015613c0f573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16925063255047779150613c65908d908d908d908d90600401615c55565b6000604051808303816000875af1158015613c84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cac9190810190615ceb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd00169062bff04d90613d09908c908c908c90600401615d4e565b6000604051808303816000875af1158015613d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d509190810190615d68565b84525050509695505050505050565b6020808301516001600160a01b038082166000818152609990945260409093205491929087161415613ddf5760405162461bcd60e51b81526020600482015260356024820152600080516020615f0083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b606482015260840161093d565b8760ff16846000015160ff1614613e5c5760405162461bcd60e51b81526020600482015260476024820152600080516020615f0083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a40161093d565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690635401ed2790604401602060405180830381865afa158015613ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef19190615e01565b9050613efd81856145f1565b6001600160601b0316866001600160601b031611613f905760405162461bcd60e51b81526020600482015260566024820152600080516020615f0083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a40161093d565b613f9a8885614615565b6001600160601b0316816001600160601b0316106110fd5760405162461bcd60e51b815260206004820152605c6024820152600080516020615f0083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a40161093d565b6000805b8215610d5e576140496001846159c6565b909216918061405781615e1e565b915050614038565b60008061406a61498d565b6140726149ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156140b3576140b5565bfe5b50826141035760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640161093d565b505195945050505050565b6000610100825111156141855760405162461bcd60e51b815260206004820152604460248201819052600080516020615fa0833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40161093d565b815161419357506000919050565b600080836000815181106141a9576141a96156b9565b0160200151600160f89190911c81901b92505b845181101561426e578481815181106141d7576141d76156b9565b0160200151600160f89190911c1b915082821161425a5760405162461bcd60e51b81526020600482015260476024820152600080516020615fa083398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40161093d565b9181179161426781615816565b90506141bc565b50909392505050565b6000828152609860205260409020548061431c576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206143356001846159c6565b81548110614345576143456156b9565b600091825260209091200180549091504363ffffffff908116911614156143895780546001600160401b0316600160401b6001600160c01b03851602178155610ea5565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561455157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144779086908690600401615b0b565b602060405180830381865afa158015614494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b89190615e40565b6001600160e01b0319161461106a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161093d565b826001600160a01b0316614565838361462f565b6001600160a01b03161461106a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161093d565b60208101516000906127109061460b9061ffff1685615e6a565b6130609190615e99565b60408101516000906127109061460b9061ffff1685615e6a565b600080600061463e858561464b565b915091506111d7816146bb565b6000808251604114156146825760208301516040840151606085015160001a61467687828585614871565b945094505050506146b4565b8251604014156146ac57602083015160408401516146a1868383614954565b9350935050506146b4565b506000905060025b9250929050565b60008160048111156146cf576146cf614d4f565b14156146d85750565b60018160048111156146ec576146ec614d4f565b14156147355760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161093d565b600281600481111561474957614749614d4f565b14156147975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161093d565b60038160048111156147ab576147ab614d4f565b14156148045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161093d565b600481600481111561481857614818614d4f565b1415610ba55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161093d565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561489e575060009050600361494b565b8460ff16601b141580156148b657508460ff16601c14155b156148c7575060009050600461494b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561491b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149445760006001925092505061494b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161497160ff86901c601b615984565b905061497f87828885614871565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126149db57600080fd5b5081356001600160401b038111156149f257600080fd5b6020830191508360208260051b85010111156146b457600080fd5b60008060208385031215614a2057600080fd5b82356001600160401b03811115614a3657600080fd5b614a42858286016149c9565b90969095509350505050565b600060208284031215614a6057600080fd5b5035919050565b63ffffffff81168114610ba557600080fd5b600080600060608486031215614a8e57600080fd5b833592506020840135614aa081614a67565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614afd57614afd614ac5565b60405290565b604080519081016001600160401b0381118282101715614afd57614afd614ac5565b604051601f8201601f191681016001600160401b0381118282101715614b4d57614b4d614ac5565b604052919050565b60006001600160401b03831115614b6e57614b6e614ac5565b614b81601f8401601f1916602001614b25565b9050828152838383011115614b9557600080fd5b828260208301376000602084830101529392505050565b600060208284031215614bbe57600080fd5b81356001600160401b03811115614bd457600080fd5b8201601f81018413614be557600080fd5b614bf484823560208401614b55565b949350505050565b6001600160a01b0381168114610ba557600080fd5b8035614c1c81614bfc565b919050565b600060208284031215614c3357600080fd5b813561306081614bfc565b60008060408385031215614c5157600080fd5b50508035926020909101359150565b803560ff81168114614c1c57600080fd5b600060208284031215614c8357600080fd5b61306082614c60565b815181526020808301519082015260408101610d5e565b60008083601f840112614cb557600080fd5b5081356001600160401b03811115614ccc57600080fd5b6020830191508360208285010111156146b457600080fd5b60008060008060408587031215614cfa57600080fd5b84356001600160401b0380821115614d1157600080fd5b614d1d888389016149c9565b90965094506020870135915080821115614d3657600080fd5b50614d4387828801614ca3565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614d8357634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614da290840182614d65565b5092915050565b803561ffff81168114614c1c57600080fd5b600060608284031215614dcd57600080fd5b614dd5614adb565b90508135614de281614a67565b8152614df060208301614da9565b6020820152614e0160408301614da9565b604082015292915050565b60008060808385031215614e1f57600080fd5b614e2883614c60565b9150614e378460208501614dbb565b90509250929050565b600080600060408486031215614e5557600080fd5b8335614e6081614bfc565b925060208401356001600160401b03811115614e7b57600080fd5b614e8786828701614ca3565b9497909650939450505050565b60006101008284031215614ea757600080fd5b50919050565b60008083601f840112614ebf57600080fd5b5081356001600160401b03811115614ed657600080fd5b6020830191508360208260061b85010111156146b457600080fd5b600060608284031215614f0357600080fd5b614f0b614adb565b905081356001600160401b03811115614f2357600080fd5b8201601f81018413614f3457600080fd5b614f4384823560208401614b55565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f7f57600080fd5b89356001600160401b0380821115614f9657600080fd5b614fa28d838e01614ca3565b909b50995060208c0135915080821115614fbb57600080fd5b614fc78d838e01614ca3565b9099509750879150614fdc8d60408e01614e94565b96506101408c0135915080821115614ff357600080fd5b614fff8d838e01614ead565b90965094506101608c013591508082111561501957600080fd5b6150258d838e01614ef1565b93506101808c013591508082111561503c57600080fd5b506150498c828d01614ef1565b9150509295985092959850929598565b600080600080600080610160878903121561507357600080fd5b86356001600160401b038082111561508a57600080fd5b6150968a838b01614ca3565b909850965060208901359150808211156150af57600080fd5b6150bb8a838b01614ca3565b90965094508491506150d08a60408b01614e94565b93506101408901359150808211156150e757600080fd5b506150f489828a01614ef1565b9150509295509295509295565b60006001600160401b0382111561511a5761511a614ac5565b5060051b60200190565b6000806040838503121561513757600080fd5b823561514281614a67565b91506020838101356001600160401b0381111561515e57600080fd5b8401601f8101861361516f57600080fd5b803561518261517d82615101565b614b25565b81815260059190911b820183019083810190888311156151a157600080fd5b928401925b828410156151bf578335825292840192908401906151a6565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561520c57835163ffffffff16835292840192918401916001016151ea565b50909695505050505050565b6000806020838503121561522b57600080fd5b82356001600160401b0381111561524157600080fd5b614a4285828601614ca3565b6001600160601b0381168114610ba557600080fd5b600082601f83011261527357600080fd5b8135602061528361517d83615101565b82815260069290921b840181019181810190868411156152a257600080fd5b8286015b848110156152f357604081890312156152bf5760008081fd5b6152c7614b03565b81356152d281614bfc565b8152818501356152e18161524d565b818601528352918301916040016152a6565b509695505050505050565b600080600060a0848603121561531357600080fd5b61531d8585614dbb565b9250606084013561532d8161524d565b915060808401356001600160401b0381111561534857600080fd5b61535486828701615262565b9150509250925092565b600082601f83011261536f57600080fd5b8135602061537f61517d83615101565b8281526060928302850182019282820191908785111561539e57600080fd5b8387015b858110156153c1576153b48982614dbb565b84529284019281016153a2565b5090979650505050505050565b600082601f8301126153df57600080fd5b813560206153ef61517d83615101565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b848110156152f35780356154258161524d565b8352918301918301615412565b600082601f83011261544357600080fd5b8135602061545361517d83615101565b82815260059290921b8401810191818101908684111561547257600080fd5b8286015b848110156152f35780356001600160401b038111156154955760008081fd5b6154a38986838b0101615262565b845250918301918301615476565b600080600080600080600080610100898b0312156154ce57600080fd5b6154d789614c11565b97506154e560208a01614c11565b96506154f360408a01614c11565b955061550160608a01614c11565b94506080890135935060a08901356001600160401b038082111561552457600080fd5b6155308c838d0161535e565b945060c08b013591508082111561554657600080fd5b6155528c838d016153ce565b935060e08b013591508082111561556857600080fd5b506155758b828c01615432565b9150509295985092959890939650565b815163ffffffff16815260208083015161ffff90811691830191909152604092830151169181019190915260600190565b6000604082840312156155c857600080fd5b6155d0614b03565b90506155db82614c60565b815260208201356155eb81614bfc565b602082015292915050565b6000806000806080858703121561560c57600080fd5b843593506020808601356001600160401b0381111561562a57600080fd5b8601601f8101881361563b57600080fd5b803561564961517d82615101565b81815260069190911b8201830190838101908a83111561566857600080fd5b928401925b828410156156915761567f8b856155b6565b8252848201915060408401935061566d565b979a97995050505060408601359560600135949350505050565b60208101610d5e8284614d65565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156156f5576020818501810151868301820152016156d9565b81811115615707576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061306060208301846156cf565b60006020828403121561574157600080fd5b815161306081614bfc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156157a857600080fd5b8151801515811461306057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561582a5761582a615800565b5060010190565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b8181101561588e578551805160ff1684528501516001600160a01b031685840152948401949183019160010161585d565b5050606086019790975250505050608001529392505050565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601260045260246000fd5b600082615919576159196158f4565b500690565b6000808335601e1984360301811261593557600080fd5b8301803591506001600160401b0382111561594f57600080fd5b6020019150600581901b36038213156146b457600080fd5b60006020828403121561597957600080fd5b815161306081614a67565b6000821982111561599757615997615800565b500190565b600080858511156159ac57600080fd5b838611156159b957600080fd5b5050820193919092039150565b6000828210156159d8576159d8615800565b500390565b6000604082840312156159ef57600080fd5b61306083836155b6565b600060ff821660ff84168060ff03821115615a1657615a16615800565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615a8757865180516001600160a01b031684528601518516868401529585019591830191600101615a57565b50909a9950505050505050505050565b60018060a01b03841681528260208201526060604082015260006115bb60608301846156cf565b600060208284031215615ad057600080fd5b81516001600160c01b038116811461306057600080fd5b6001600160a01b0383168152604060208201819052600090614bf4908301846156cf565b828152604060208201526000614bf460408301846156cf565b600060208284031215615b3657600080fd5b5051919050565b6001600160a01b03841681526101608101615b65602083018580358252602090810135910152565b615b7f606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615be660a08401826156cf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906115bb9083018486615c07565b60018060a01b0385168152836020820152606060408201526000615c7d606083018486615c07565b9695505050505050565b600082601f830112615c9857600080fd5b81516020615ca861517d83615101565b82815260059290921b84018101918181019086841115615cc757600080fd5b8286015b848110156152f3578051615cde8161524d565b8352918301918301615ccb565b60008060408385031215615cfe57600080fd5b82516001600160401b0380821115615d1557600080fd5b615d2186838701615c87565b93506020850151915080821115615d3757600080fd5b50615d4485828601615c87565b9150509250929050565b8381526040602082015260006115bb604083018486615c07565b60006020808385031215615d7b57600080fd5b82516001600160401b03811115615d9157600080fd5b8301601f81018513615da257600080fd5b8051615db061517d82615101565b81815260059190911b82018301908381019087831115615dcf57600080fd5b928401925b82841015615df6578351615de781614a67565b82529284019290840190615dd4565b979650505050505050565b600060208284031215615e1357600080fd5b81516130608161524d565b600061ffff80831681811415615e3657615e36615800565b6001019392505050565b600060208284031215615e5257600080fd5b81516001600160e01b03198116811461306057600080fd5b60006001600160601b0380831681851681830481118215151615615e9057615e90615800565b02949350505050565b60006001600160601b0380841680615eb357615eb36158f4565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e67657451756f72756d4269745265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c6964617465436875ab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd475265676973747279436f6f7264696e61746f722e5f646572656769737465724f5265676973747279436f6f7264696e61746f722e5f72656769737465724f70654269746d61705574696c732e6f72646572656442797465734172726179546f42a2646970667358221220c54efdc441b7ab5c292c79c0ba4c4250c55da2675b4df1faf620ffd38a6065c264736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x3f1c547b21f65e10480de3ad8e19faac46c95034","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061016e5760003560e01c8063715018a6116100ce578063a98fb35511610087578063a98fb3551461034a578063b3a9e53b1461035d578063c4d66de814610370578063d5d4bb5a14610383578063e481af9d14610396578063f2fde38b1461039e578063fabc1cbc146103b157600080fd5b8063715018a6146102d1578063886f1195146102d95780638da5cb5b146102ec5780639926ee7d146102fd578063a364f4da14610310578063a50a640e1461032357600080fd5b806333cfb7b71161012b57806333cfb7b71461022257806338c8ee6414610242578063485cc95514610255578063595c6a67146102685780635ac86ab7146102705780635c975abb146102a35780636b3aa72e146102ab57600080fd5b80630510c191146101735780630f5af14a1461019257806310d67a2f146101a7578063136439dd146101ba578063268f06e0146101cd5780632f65284e14610201575b600080fd5b61017b600081565b60405160ff90911681526020015b60405180910390f35b6101a56101a0366004613311565b6103c4565b005b6101a56101b536600461337c565b610494565b6101a56101c8366004613399565b610547565b6101f47f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57081565b60405161018991906133b2565b61021461020f3660046133d8565b610674565b604051908152602001610189565b61023561023036600461337c565b610792565b604051610189919061347b565b6101a561025036600461337c565b610c66565b6101a56102633660046134c8565b610cde565b6101a5610db5565b61029361027e366004613505565b60cb54600160ff9092169190911b9081161490565b6040519015158152602001610189565b60cb54610214565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96101f4565b6101a5610e6f565b60ca546101f4906001600160a01b031681565b6066546001600160a01b03166101f4565b6101a561030b3660046135d5565b610e83565b6101a561031e36600461337c565b610fa4565b6101f47f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf81565b6101a561035836600461367f565b61106d565b61021461036b3660046136f5565b6110c1565b6101a561037e36600461337c565b6110f0565b61021461039136600461372a565b6111c6565b61023561131e565b6101a56103ac36600461337c565b6116e7565b6101a56103bf366004613399565b61175d565b60cb546000906001908116141561041e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064015b60405180910390fd5b61042883836118b4565b6104655760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610415565b61048f6104756020850185613778565b6104856040860160208701613795565b8560a001356119f3565b505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050b91906137b0565b6001600160a01b0316336001600160a01b03161461053b5760405162461bcd60e51b8152600401610415906137cd565b61054481611a57565b50565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906105779033906004016133b2565b602060405180830381865afa158015610594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b89190613827565b6105d45760405162461bcd60e51b815260040161041590613842565b60cb54818116146106485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233906000805160206140a9833981519152906020015b60405180910390a250565b600060608501351580159061068c5750608085013515155b6106d35760405162461bcd60e51b8152602060048201526018602482015277115b5c1d1e48139150548811104818dbdb5b5a5d1b595b9d60421b6044820152606401610415565b600080806106e46020890189613778565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906107139190613795565b6001600160401b0316815260208101919091526040016000205490508061077e57826107735760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b6044820152606401610415565b61077e868585611b4e565b61078886866111c6565b9695505050505050565b606060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b03166313542a4e846040518263ffffffff1660e01b81526004016107e291906133b2565b602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610823919061388a565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf169063871ef04990602401602060405180830381865afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906138a3565b90506001600160c01b038116158061094c57507f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094791906138cc565b60ff16155b1561096c5760408051600080825260208201909252905b50949350505050565b6000610980826001600160c01b0316611b5f565b90506000805b8251811015610a56577f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b0316633ca5a5f58483815181106109d0576109d06138e9565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a38919061388a565b610a429083613915565b915080610a4e8161392d565b915050610986565b506000816001600160401b03811115610a7157610a71613522565b604051908082528060200260200182016040528015610a9a578160200160208202803683370190505b5090506000805b8451811015610c59576000858281518110610abe57610abe6138e9565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d1690633ca5a5f590602401602060405180830381865afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b57919061388a565b905060005b81811015610c43576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b03169063adc804da906044016040805180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190613948565b60000151868681518110610c0b57610c0b6138e9565b6001600160a01b039092166020928302919091019091015284610c2d8161392d565b9550508080610c3b9061392d565b915050610b5c565b5050508080610c519061392d565b915050610aa1565b5090979650505050505050565b336001600160a01b037f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf16146105445760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c6572006044820152606401610415565b603354610100900460ff1615808015610cfe5750603354600160ff909116105b80610d185750303b158015610d18575060335460ff166001145b610d345760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015610d57576033805461ff0019166101001790555b610d6083611c21565b610d6b826000611c73565b801561048f576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e90610de59033906004016133b2565b602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190613827565b610e425760405162461bcd60e51b815260040161041590613842565b60001960cb81905560405190815233906000805160206140a98339815191529060200160405180910390a2565b610e77611d47565b610e816000611c21565b565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614610ecb5760405162461bcd60e51b815260040161041590613a05565b604051632e8da82960e01b81526001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5701690632e8da82990610f179085906004016133b2565b602060405180830381865afa158015610f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f589190613827565b610f965760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610415565b610fa08282611da1565b5050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614610fec5760405162461bcd60e51b815260040161041590613a05565b6040516351b27a6d60e11b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063a364f4da906110389084906004016133b2565b600060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b5050505050565b611075611d47565b60405163a98fb35560e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063a98fb35590611038908490600401613aca565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b603354610100900460ff16158080156111105750603354600160ff909116105b8061112a5750303b15801561112a575060335460ff166001145b6111465760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015611169576033805461ff0019166101001790555b61117282611e6d565b61117d600080611c73565b8015610fa0576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008080806111d86020870187613778565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906112079190613795565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a0013581146112775760405162461bcd60e51b81526020600482015260176024820152764d69736d61746368696e6720737461746520726f6f747360481b6044820152606401610415565b611316611287602085018561337c565b60208501358361129a6040880188613add565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112dc925050506060890189613add565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ed892505050565b949350505050565b606060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a491906138cc565b60ff169050806113c257505060408051600081526020810190915290565b6000805b8281101561147757604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611459919061388a565b6114639083613915565b91508061146f8161392d565b9150506113c6565b506000816001600160401b0381111561149257611492613522565b6040519080825280602002602001820160405280156114bb578160200160208202803683370190505b5090506000805b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906138cc565b60ff168110156116dd57604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc919061388a565b905060005b818110156116c8576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b03169063adc804da906044016040805180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613948565b60000151858581518110611690576116906138e9565b6001600160a01b0390921660209283029190910190910152836116b28161392d565b94505080806116c09061392d565b9150506115e1565b505080806116d59061392d565b9150506114c2565b5090949350505050565b6116ef611d47565b6001600160a01b0381166117545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b61054481611c21565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d491906137b0565b6001600160a01b0316336001600160a01b0316146118045760405162461bcd60e51b8152600401610415906137cd565b60cb5419811960cb5419161461187d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610669565b6000807f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf6001600160a01b031663292f7a4e6118ef86612015565b6118fa600143613b2a565b8660037f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf6001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613b41565b61198a906002613b5e565b6119949190613ba0565b6040518563ffffffff1660e01b81526004016119b39493929190613d57565b6040805180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190613eb6565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6001600160a01b038116611ae55760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610415565b60ca54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160ca80546001600160a01b0319166001600160a01b0392909216919091179055565b81611b5984826103c4565b50505050565b6060600080611b6d84612045565b61ffff166001600160401b03811115611b8857611b88613522565b6040519080825280601f01601f191660200182016040528015611bb2576020820181803683370190505b5090506000805b825182108015611bca575061010081105b156116dd576001811b935085841615611c11578060f81b838381518110611bf357611bf36138e9565b60200101906001600160f81b031916908160001a9053508160010191505b611c1a8161392d565b9050611bb9565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60ca546001600160a01b0316158015611c9457506001600160a01b03821615155b611d165760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610415565b60cb81905560405181815233906000805160206140a98339815191529060200160405180910390a2610fa082611a57565b6066546001600160a01b03163314610e815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614611de95760405162461bcd60e51b815260040161041590613a05565b604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690639926ee7d90611e379085908590600401613ee2565b600060405180830381600087803b158015611e5157600080fd5b505af1158015611e65573d6000803e3d6000fd5b505050505050565b603354610100900460ff166117545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610415565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611f18906034016040516020818303038152906040528688612070565b9150915081611f625760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610415565b6000611f6d82612099565b9050600080611fa28a604051602001611f8891815260200190565b604051602081830303815290604052888560400151612070565b9150915081611ff35760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610415565b612004611fff8261215d565b612170565b955050505050505b95945050505050565b6000816040516020016120289190613f2d565b604051602081830303815290604052805190602001209050919050565b6000805b82156110ea5761205a600184613b2a565b909216918061206881613f99565b915050612049565b60006060600061207f8661219f565b905061208c8186866121d1565b9250925050935093915050565b6040805160808101825260008082526020820181905291810182905260608101829052906120c6836122ac565b905060405180608001604052806120f6836000815181106120e9576120e96138e9565b60200260200101516122bf565b8152602001612111836001815181106120e9576120e96138e9565b81526020016121398360028151811061212c5761212c6138e9565b60200260200101516122c6565b81526020016121548360038151811061212c5761212c6138e9565b90529392505050565b60606110ea61216b83612368565b612395565b6000806000602084511115612186576020612189565b83515b60209485015194036008029390931c9392505050565b606081805190602001206040516020016121bb91815260200190565b6040516020818303038152906040529050919050565b6000606060006121e085612417565b905060008060006121f2848a89612511565b815192955090935091501580806122065750815b6122525760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610415565b60008161226e576040518060200160405280600081525061229a565b61229a8661227d600188613b2a565b8151811061228d5761228d6138e9565b6020026020010151612935565b919b919a509098505050505050505050565b60606110ea6122ba83612368565b61295f565b60006110ea825b60006021826000015111156122ed5760405162461bcd60e51b815260040161041590613fbb565b60008060006122fb85612b45565b91945092509050600081600181111561231657612316613ff2565b146123335760405162461bcd60e51b815260040161041590613fbb565b60008386602001516123459190613915565b805190915060208410156107885760208490036101000a90049695505050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606060008060006123a585612b45565b9194509250905060008160018111156123c0576123c0613ff2565b146124085760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b21029262810313cba32b9903b30b63ab29760411b6044820152606401610415565b61200c85602001518484612e7b565b60606000612424836122ac565b9050600081516001600160401b0381111561244157612441613522565b60405190808252806020026020018201604052801561248657816020015b604080518082019091526060808252602082015281526020019060019003908161245f5790505b50905060005b82518110156125095760006124b98483815181106124ac576124ac6138e9565b6020026020010151612395565b905060405180604001604052808281526020016124d5836122ac565b8152508383815181106124ea576124ea6138e9565b60200260200101819052505080806125019061392d565b91505061248c565b509392505050565b6000606081808061252187612f56565b90506000869050600080612548604051806040016040528060608152602001606081525090565b60005b8c5181101561290d578c8181518110612566576125666138e9565b60200260200101519150828461257c9190613915565b9350612589600188613915565b9650836125e1578151805160209091012085146125dc5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610415565b61269e565b815151602011612643578151805160209091012085146125dc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610415565b846126518360000151613090565b1461269e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610415565b6126aa60106001613915565b82602001515114156127235785518414156126c45761290d565b60008685815181106126d8576126d86138e9565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110612703576127036138e9565b60200260200101519050612716816130b8565b96506001945050506128fb565b600282602001515114156128b357600061273c836130ee565b9050600081600081518110612753576127536138e9565b016020015160f81c9050600061276a600283614008565b61277590600261402a565b90506000612786848360ff16613112565b905060006127948b8a613112565b905060006127a28383613148565b905060ff8516600214806127b9575060ff85166003145b156127f3578083511480156127ce5750808251145b156127e0576127dd818b613915565b99505b50600160ff1b995061290d945050505050565b60ff85161580612806575060ff85166001145b1561285c57825181146128265750600160ff1b995061290d945050505050565b61284d8860200151600181518110612840576128406138e9565b60200260200101516130b8565b9a5097506128fb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610415565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610415565b806129058161392d565b91505061254b565b50600160ff1b8414866129208786613112565b909e909d50909b509950505050505050505050565b602081015180516060916110ea9161294f90600190613b2a565b815181106124ac576124ac6138e9565b606060008061296d84612b45565b9193509091506001905081600181111561298957612989613ff2565b146129d05760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b210292628103634b9ba103b30b63ab29760491b6044820152606401610415565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816129e95790505090506000835b8651811015612b3a5760208210612a825760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610415565b600080612abf6040518060400160405280858c60000151612aa39190613b2a565b8152602001858c60200151612ab89190613915565b9052612b45565b509150915060405180604001604052808383612adb9190613915565b8152602001848b60200151612af09190613915565b815250858581518110612b0557612b056138e9565b6020908102919091010152612b1b600185613915565b9350612b278183613915565b612b319084613915565b92505050612a16565b508152949350505050565b600080600080846000015111612b985760405162461bcd60e51b81526020600482015260186024820152772926281034ba32b69031b0b73737ba10313290373ab6361760411b6044820152606401610415565b6020840151805160001a607f8111612bbd576000600160009450945094505050612e74565b60b78111612c35576000612bd2608083613b2a565b905080876000015111612c235760405162461bcd60e51b815260206004820152601960248201527824b73b30b634b2102926281039b437b93a1039ba3934b7339760391b6044820152606401610415565b60019550935060009250612e74915050565b60bf8111612d1f576000612c4a60b783613b2a565b905080876000015111612c9f5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610415565b600183015160208290036101000a9004612cb98183613915565b885111612d035760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b210292628103637b7339039ba3934b7339760411b6044820152606401610415565b612d0e826001613915565b9650945060009350612e7492505050565b60f78111612d94576000612d3460c083613b2a565b905080876000015111612d835760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2102926281039b437b93a103634b9ba1760491b6044820152606401610415565b600195509350849250612e74915050565b6000612da160f783613b2a565b905080876000015111612df65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610415565b600183015160208290036101000a9004612e108183613915565b885111612e585760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610415565b612e63826001613915565b9650945060019350612e7492505050565b9193909250565b60606000826001600160401b03811115612e9757612e97613522565b6040519080825280601f01601f191660200182016040528015612ec1576020820181803683370190505b509050805160001415612ed5579050612f4f565b6000612ee18587613915565b90506020820160005b612ef560208761404d565b811015612f2c5782518252612f0b602084613915565b9250612f18602083613915565b915080612f248161392d565b915050612eea565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b6060600082516002612f689190614061565b6001600160401b03811115612f7f57612f7f613522565b6040519080825280601f01601f191660200182016040528015612fa9576020820181803683370190505b50905060005b8351811015613089576004848281518110612fcc57612fcc6138e9565b01602001516001600160f81b031916901c82612fe9836002614061565b81518110612ff957612ff96138e9565b60200101906001600160f81b031916908160001a9053506010848281518110613024576130246138e9565b0160200151613036919060f81c614008565b60f81b82613045836002614061565b613050906001613915565b81518110613060576130606138e9565b60200101906001600160f81b031916908160001a905350806130818161392d565b915050612faf565b5092915050565b60006020825110156130a457506020015190565b818060200190518101906110ea919061388a565b600060606020836000015110156130d9576130d2836131c4565b90506130e5565b6130e283612395565b90505b612f4f81613090565b60606110ea61310d83602001516000815181106124ac576124ac6138e9565b612f56565b60608251821061313157506040805160208101909152600081526110ea565b612f4f83838486516131439190613b2a565b6131cf565b6000805b80845111801561315c5750808351115b80156131ad5750828181518110613175576131756138e9565b602001015160f81c60f81b6001600160f81b03191684828151811061319c5761319c6138e9565b01602001516001600160f81b031916145b15612f4f57806131bc8161392d565b91505061314c565b60606110ea826132e3565b6060816131dd81601f613915565b10156131fb5760405162461bcd60e51b815260040161041590614080565b826132068382613915565b10156132245760405162461bcd60e51b815260040161041590614080565b61322e8284613915565b845110156132725760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610415565b6060821580156132915760405191506000825260208201604052610963565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156132ca5780518352602092830192016132b2565b5050858452601f01601f19166040525050949350505050565b60606110ea826020015160008460000151612e7b565b600060c0828403121561330b57600080fd5b50919050565b60008060e0838503121561332457600080fd5b61332e84846132f9565b915060c08301356001600160401b0381111561334957600080fd5b8301610180818603121561335c57600080fd5b809150509250929050565b6001600160a01b038116811461054457600080fd5b60006020828403121561338e57600080fd5b8135612f4f81613367565b6000602082840312156133ab57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60006080828403121561330b57600080fd5b60008060008061010085870312156133ef57600080fd5b6133f986866132f9565b935060c08501356001600160401b038082111561341557600080fd5b613421888389016133c6565b945060e087013591508082111561343757600080fd5b818701915087601f83011261344b57600080fd5b81358181111561345a57600080fd5b88602082850101111561346c57600080fd5b95989497505060200194505050565b6020808252825182820181905260009190848201906040850190845b818110156134bc5783516001600160a01b031683529284019291840191600101613497565b50909695505050505050565b600080604083850312156134db57600080fd5b82356134e681613367565b9150602083013561335c81613367565b60ff8116811461054457600080fd5b60006020828403121561351757600080fd5b8135612f4f816134f6565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561355a5761355a613522565b60405290565b60006001600160401b038084111561357a5761357a613522565b604051601f8501601f19908116603f011681019082821181831017156135a2576135a2613522565b816040528093508581528686860111156135bb57600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156135e857600080fd5b82356135f381613367565b915060208301356001600160401b038082111561360f57600080fd5b908401906060828703121561362357600080fd5b61362b613538565b82358281111561363a57600080fd5b83019150601f8201871361364d57600080fd5b61365c87833560208501613560565b815260208301356020820152604083013560408201528093505050509250929050565b60006020828403121561369157600080fd5b81356001600160401b038111156136a757600080fd5b8201601f810184136136b857600080fd5b61131684823560208401613560565b63ffffffff8116811461054457600080fd5b80356001600160401b03811681146136f057600080fd5b919050565b6000806040838503121561370857600080fd5b8235613713816136c7565b9150613721602084016136d9565b90509250929050565b60008060e0838503121561373d57600080fd5b61374784846132f9565b915060c08301356001600160401b0381111561376257600080fd5b61376e858286016133c6565b9150509250929050565b60006020828403121561378a57600080fd5b8135612f4f816136c7565b6000602082840312156137a757600080fd5b612f4f826136d9565b6000602082840312156137c257600080fd5b8151612f4f81613367565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b805180151581146136f057600080fd5b60006020828403121561383957600080fd5b612f4f82613817565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561389c57600080fd5b5051919050565b6000602082840312156138b557600080fd5b81516001600160c01b0381168114612f4f57600080fd5b6000602082840312156138de57600080fd5b8151612f4f816134f6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613928576139286138ff565b500190565b6000600019821415613941576139416138ff565b5060010190565b60006040828403121561395a57600080fd5b604051604081018181106001600160401b038211171561397c5761397c613522565b604052825161398a81613367565b815260208301516bffffffffffffffffffffffff811681146139ab57600080fd5b60208201529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613aa357602081850181015186830182015201613a87565b81811115613ab5576000602083870101525b50601f01601f19169290920160200192915050565b602081526000612f4f6020830184613a7d565b6000808335601e19843603018112613af457600080fd5b8301803591506001600160401b03821115613b0e57600080fd5b602001915036819003821315613b2357600080fd5b9250929050565b600082821015613b3c57613b3c6138ff565b500390565b600060208284031215613b5357600080fd5b8151612f4f816136c7565b600063ffffffff80831681851681830481118215151615613b8157613b816138ff565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680613bb757613bb7613b8a565b92169190910492915050565b6000808335601e19843603018112613bda57600080fd5b83016020810192503590506001600160401b03811115613bf957600080fd5b8060051b3603831315613b2357600080fd5b8183526000602080850194508260005b85811015613c46578135613c2e816136c7565b63ffffffff1687529582019590820190600101613c1b565b509495945050505050565b6000808335601e19843603018112613c6857600080fd5b83016020810192503590506001600160401b03811115613c8757600080fd5b8060061b3603831315613b2357600080fd5b81835260208301925060008160005b84811015613cd057813586526020808301359087015260409586019590910190600101613ca8565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b81835260006020808501808196508560051b810191508460005b87811015613d4a578284038952613d2b8288613bc3565b613d36868284613c0b565b9a87019a9550505090840190600101613d14565b5091979650505050505050565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e060608201526000613d8e8485613bc3565b61018060e0850152613da561026085018284613c0b565b915050613db56020860186613c51565b60df198086850301610100870152613dce848385613c99565b9350613ddd6040890189613c51565b93509150610120818786030181880152613df8858585613c99565b94506101409350613e0e84880160608b01613cda565b60e08901356101c08801526101008901356101e0880152613e31818a018a613bc3565b935090508187860301610200880152613e4b858483613c0b565b945050613e5a83890189613bc3565b935091508086850301610220870152613e74848484613c0b565b9350613e84610160890189613bc3565b93509150808685030161024087015250613e9f838383613cfa565b935050505061200c608083018463ffffffff169052565b60008060408385031215613ec957600080fd5b613ed283613817565b9150602083015190509250929050565b60018060a01b0383168152604060208201526000825160606040840152613f0c60a0840182613a7d565b90506020840151606084015260408401516080840152809150509392505050565b60c081018235613f3c816136c7565b63ffffffff168252613f50602084016136d9565b6001600160401b03808216602085015280613f6d604087016136d9565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b600061ffff80831681811415613fb157613fb16138ff565b6001019392505050565b6020808252601a908201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600060ff83168061401b5761401b613b8a565b8060ff84160691505092915050565b600060ff821660ff841680821015614044576140446138ff565b90039392505050565b60008261405c5761405c613b8a565b500490565b600081600019048311821515161561407b5761407b6138ff565b500290565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b60408201526060019056feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3da264697066735822122023ddd4833c41b0d265863232937ae7d092b7e01ff345ae56f4800222a62f036764736f6c634300080c0033","storage":{"0x33":"0xff"}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x6356ca026caf21023cb7650068491a5cc11ee8f81fbeb8f52c6780c04b388516","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xd5a0359da7b310917d7760385516b2426e86ab7f":{"nonce":0,"balance":"0x8ac7230489e80000","code":"0x","storage":{}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x5ebe2c12a42e721609d1498db50973aeaff9e3c64738181887c534f293093208","0x9d":"0xc4e0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe6e340d132b5f46d1e472debcd681b2abc16e57e":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x7322c24752f79c05ffd1e2a6fcb97020c1c264f1","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220f71399fafd06d0e383b21957bcac3bf3986a6a0701bc4c5dc7ee118215f3652364736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":68,"balance":"0x21e16b4e9c0a094b65b","code":"0x","storage":{}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061006d5760003560e01c8063095ea7b31461007257806318160ddd1461009d57806323b872dd146100af57806340c10f19146100c257806370a08231146100d7578063a9059cbb14610100578063dd62ed3e14610113575b600080fd5b610088610080366004610400565b600192915050565b60405190151581526020015b60405180910390f35b6002545b604051908152602001610094565b6100886100bd36600461042a565b61014c565b6100d56100d0366004610400565b610163565b005b6100a16100e5366004610466565b6001600160a01b031660009081526020819052604090205490565b61008861010e366004610400565b610171565b6100a1610121366004610488565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061015984848461017b565b5060019392505050565b61016d8282610325565b5050565b6000336101598185855b6001600160a01b0383166101e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101db565b6001600160a01b0383166000908152602081905260409020548111156102bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101db565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661037b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101db565b806002600082825461038d91906104bb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b03811681146103fb57600080fd5b919050565b6000806040838503121561041357600080fd5b61041c836103e4565b946020939093013593505050565b60008060006060848603121561043f57600080fd5b610448846103e4565b9250610456602085016103e4565b9150604084013590509250925092565b60006020828403121561047857600080fd5b610481826103e4565b9392505050565b6000806040838503121561049b57600080fd5b6104a4836103e4565b91506104b2602084016103e4565b90509250929050565b600082198211156104dc57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7869d1b65a81f40da4e99688a39ee120b01ef93e81e865bb196d1a6f125866c64736f6c634300080c0033","storage":{}}}} \ No newline at end of file +{"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x28955e2750d6e00","code":"0x","storage":{}},"0x000000000000000000636f6e736f6c652e6c6f67":{"nonce":0,"balance":"0x0","code":"0x","storage":{}},"0x0165878a594ca255338adfa4d48449f69242eb8f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9a676e781a523b5d0c0e43731313a708cb607508","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x0b306bf915c4d645ff596e518faf3f9669b97016":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101ee5760003560e01c80638da5cb5b1161010d578063c052bd61116100a0578063d1c64cc91161006f578063d1c64cc914610604578063ea4d3c9b14610624578063f2fde38b14610658578063f6848d2414610678578063fabc1cbc146106b357600080fd5b8063c052bd6114610584578063c1de3aef146105a4578063c2c51c40146105c4578063cf756fdf146105e457600080fd5b8063a38406a3116100dc578063a38406a3146104fa578063a6a509be1461051a578063b134427114610530578063beffbb891461056457600080fd5b80638da5cb5b1461046b5780639104c319146104895780639b4e4634146104b15780639ba06275146104c457600080fd5b8063595c6a6711610185578063715018a611610154578063715018a6146103ed57806374cdd7981461040257806384d8106214610436578063886f11951461044b57600080fd5b8063595c6a67146103565780635ac86ab71461036b5780635c975abb146103ab57806360f4062b146103c057600080fd5b8063387b1300116101c1578063387b1300146102b457806339b70e38146102d457806344e71c8014610308578063463db0381461033657600080fd5b80630e81073c146101f357806310d67a2f14610226578063136439dd14610248578063292b7b2b14610268575b600080fd5b3480156101ff57600080fd5b5061021361020e366004612406565b6106d3565b6040519081526020015b60405180910390f35b34801561023257600080fd5b50610246610241366004612432565b610911565b005b34801561025457600080fd5b5061024661026336600461244f565b6109c4565b34801561027457600080fd5b5061029c7f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad78881565b6040516001600160a01b03909116815260200161021d565b3480156102c057600080fd5b506102466102cf366004612468565b610b03565b3480156102e057600080fd5b5061029c7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b34801561031457600080fd5b5061031d610ea1565b60405167ffffffffffffffff909116815260200161021d565b34801561034257600080fd5b506102466103513660046124a9565b610eca565b34801561036257600080fd5b50610246611056565b34801561037757600080fd5b5061039b6103863660046124d3565b606654600160ff9092169190911b9081161490565b604051901515815260200161021d565b3480156103b757600080fd5b50606654610213565b3480156103cc57600080fd5b506102136103db366004612432565b609b6020526000908152604090205481565b3480156103f957600080fd5b5061024661111d565b34801561040e57600080fd5b5061029c7f000000000000000000000000424242424242424242424242424242424242424281565b34801561044257600080fd5b5061029c611131565b34801561045757600080fd5b5060655461029c906001600160a01b031681565b34801561047757600080fd5b506033546001600160a01b031661029c565b34801561049557600080fd5b5061029c73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6102466104bf36600461253f565b61121b565b3480156104d057600080fd5b5061029c6104df366004612432565b6098602052600090815260409020546001600160a01b031681565b34801561050657600080fd5b5061029c610515366004612432565b61130a565b34801561052657600080fd5b5061021360995481565b34801561053c57600080fd5b5061029c7f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b34801561057057600080fd5b5061024661057f366004612406565b6113dc565b34801561059057600080fd5b5060975461029c906001600160a01b031681565b3480156105b057600080fd5b506102466105bf366004612432565b6115f3565b3480156105d057600080fd5b506102466105df366004612406565b611604565b3480156105f057600080fd5b506102466105ff3660046125b3565b611a07565b34801561061057600080fd5b5061021361061f3660046124a9565b611b30565b34801561063057600080fd5b5061029c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b34801561066457600080fd5b50610246610673366004612432565b611c3b565b34801561068457600080fd5b5061039b610693366004612432565b6001600160a01b0390811660009081526098602052604090205416151590565b3480156106bf57600080fd5b506102466106ce36600461244f565b611cb1565b6000336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146107265760405162461bcd60e51b815260040161071d90612604565b60405180910390fd5b6001600160a01b0383166107a25760405162461bcd60e51b815260206004820152603a60248201527f456967656e506f644d616e616765722e6164645368617265733a20706f644f7760448201527f6e65722063616e6e6f74206265207a65726f2061646472657373000000000000606482015260840161071d565b60008212156108105760405162461bcd60e51b815260206004820152603460248201527f456967656e506f644d616e616765722e6164645368617265733a207368617265604482015273732063616e6e6f74206265206e6567617469766560601b606482015260840161071d565b61081e633b9aca0083612678565b156108915760405162461bcd60e51b815260206004820152603d60248201527f456967656e506f644d616e616765722e6164645368617265733a20736861726560448201527f73206d75737420626520612077686f6c65204777656920616d6f756e74000000606482015260840161071d565b6001600160a01b0383166000908152609b6020526040812054906108b584836126a2565b6001600160a01b0386166000818152609b6020526040908190208390555191925090600080516020613231833981519152906108f49087815260200190565b60405180910390a26109068282611e0d565b925050505b92915050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610964573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098891906126e3565b6001600160a01b0316336001600160a01b0316146109b85760405162461bcd60e51b815260040161071d90612700565b6109c181611e4f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a30919061274a565b610a4c5760405162461bcd60e51b815260040161071d9061276c565b60665481811614610ac55760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610b4b5760405162461bcd60e51b815260040161071d90612604565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526047602482015260008051602061325183398151915260448201527f546f6b656e733a20706f644f776e65722063616e6e6f74206265207a65726f206064820152666164647265737360c81b608482015260a40161071d565b6001600160a01b038216610c425760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a2064657374696e6174696f6e2063616e6e6f74206265207a65606482015269726f206164647265737360b01b608482015260a40161071d565b6000811215610cb15760405162461bcd60e51b8152602060048201526041602482015260008051602061325183398151915260448201527f546f6b656e733a207368617265732063616e6e6f74206265206e6567617469766064820152606560f81b608482015260a40161071d565b610cbf633b9aca0082612678565b15610d335760405162461bcd60e51b815260206004820152604a602482015260008051602061325183398151915260448201527f546f6b656e733a20736861726573206d75737420626520612077686f6c6520476064820152691dd95a48185b5bdd5b9d60b21b608482015260a40161071d565b6001600160a01b0383166000908152609b602052604081205490811215610e26576000610d5f826127b4565b905080831115610dc4576001600160a01b0385166000908152609b6020526040812055610d8c81846127d1565b9250846001600160a01b031660008051602061323183398151915282604051610db791815260200190565b60405180910390a2610e24565b6001600160a01b0385166000908152609b602052604081208054859290610dec9084906126a2565b90915550506040518381526001600160a01b038616906000805160206132318339815191529060200160405180910390a25050505050565b505b6001600160a01b03848116600090815260986020526040908190205490516362483a2160e11b815285831660048201526024810185905291169063c490744290604401600060405180830381600087803b158015610e8357600080fd5b505af1158015610e97573d6000803e3d6000fd5b5050505050505050565b609c5460009067ffffffffffffffff1680610ec55767ffffffffffffffff91505090565b919050565b610ed2611f46565b67ffffffffffffffff8116610f645760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f7420736574206e657744656e6562466f726b546960648201526b06d657374616d7020746f20360a41b608482015260a40161071d565b609c5467ffffffffffffffff16156110005760405162461bcd60e51b815260206004820152605360248201527f456967656e506f644d616e616765722e73657444656e6562466f726b54696d6560448201527f7374616d703a2063616e6e6f74207365742064656e6562466f726b54696d657360648201527274616d70206d6f7265207468616e206f6e636560681b608482015260a40161071d565b609c805467ffffffffffffffff191667ffffffffffffffff83169081179091556040519081527f19200b6fdad58f91b2f496b0c444fc4be3eff74a7e24b07770e04a7137bfd9db9060200160405180910390a150565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561109e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c2919061274a565b6110de5760405162461bcd60e51b815260040161071d9061276c565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b611125611f46565b61112f6000611fa0565b565b6066546000908190600190811614156111885760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03161561120a5760405162461bcd60e51b815260206004820152603360248201527f456967656e506f644d616e616765722e637265617465506f643a2053656e64656044820152721c88185b1c9958591e481a185cc818481c1bd9606a1b606482015260840161071d565b6000611214611ff2565b9250505090565b606654600090600190811614156112705760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161071d565b336000908152609860205260409020546001600160a01b03168061129957611296611ff2565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e46349034906112cf908b908b908b908b908b90600401612811565b6000604051808303818588803b1580156112e857600080fd5b505af11580156112fc573d6000803e3d6000fd5b505050505050505050505050565b6001600160a01b038082166000908152609860205260408120549091168061090b576113d5836001600160a01b031660001b60405180610940016040528061090e815260200161292361090e9139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f19818403018152908290526113ba9291602001612886565b60405160208183030381529060405280519060200120612157565b9392505050565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146114245760405162461bcd60e51b815260040161071d90612604565b600081121561149b5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f617265732063616e6e6f74206265206e65676174697665000000000000000000606482015260840161071d565b6114a9633b9aca0082612678565b1561151e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f644d616e616765722e72656d6f76655368617265733a20736860448201527f61726573206d75737420626520612077686f6c65204777656920616d6f756e74606482015260840161071d565b6001600160a01b0382166000908152609b602052604081205461154290839061289b565b905060008112156115d35760405162461bcd60e51b815260206004820152604f60248201527f456967656e506f644d616e616765722e72656d6f76655368617265733a20636160448201527f6e6e6f7420726573756c7420696e20706f64206f776e657220686176696e672060648201526e6e656761746976652073686172657360881b608482015260a40161071d565b6001600160a01b039092166000908152609b602052604090209190915550565b6115fb611f46565b6109c1816121b3565b6001600160a01b03808316600090815260986020526040902054839116331461167f5760405162461bcd60e51b815260206004820152602760248201527f456967656e506f644d616e616765722e6f6e6c79456967656e506f643a206e6f6044820152661d0818481c1bd960ca1b606482015260840161071d565b600260c95414156116d25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b600260c9556001600160a01b03831661176e5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a20706f644f776e65722063616e6e6064820152716f74206265207a65726f206164647265737360701b608482015260a40161071d565b61177c633b9aca00836128da565b156118155760405162461bcd60e51b815260206004820152605a60248201527f456967656e506f644d616e616765722e7265636f7264426561636f6e4368616960448201527f6e45544842616c616e63655570646174653a2073686172657344656c7461206d60648201527f75737420626520612077686f6c65204777656920616d6f756e74000000000000608482015260a40161071d565b6001600160a01b0383166000908152609b60205260408120549061183984836126a2565b6001600160a01b0386166000908152609b602052604081208290559091506118618383611e0d565b905080156119c957600081121561192c576001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91663132d49678773beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06118c0856127b4565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561190f57600080fd5b505af1158015611923573d6000803e3d6000fd5b505050506119c9565b604051631452b9d760e11b81526001600160a01b03878116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06024830152604482018390527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906328a573ae90606401600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050505b856001600160a01b0316600080516020613231833981519152866040516119f291815260200190565b60405180910390a25050600160c95550505050565b600054610100900460ff1615808015611a275750600054600160ff909116105b80611a415750303b158015611a41575060005460ff166001145b611aa45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161071d565b6000805460ff191660011790558015611ac7576000805461ff0019166101001790555b611ad0856121b3565b611ad984611fa0565b611ae383836121fd565b8015611b29576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60975460405163321accf960e11b815267ffffffffffffffff8316600482015260009182916001600160a01b039091169063643599f290602401602060405180830381865afa158015611b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bab91906128ee565b90508061090b5760405162461bcd60e51b815260206004820152605260248201527f456967656e506f644d616e616765722e676574426c6f636b526f6f744174546960448201527f6d657374616d703a20737461746520726f6f742061742074696d657374616d70606482015271081b9bdd081e595d08199a5b985b1a5e995960721b608482015260a40161071d565b611c43611f46565b6001600160a01b038116611ca85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071d565b6109c181611fa0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906126e3565b6001600160a01b0316336001600160a01b031614611d585760405162461bcd60e51b815260040161071d90612700565b606654198119606654191614611dd65760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161071d565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610af8565b6000808313611e2d5760008213611e265750600061090b565b508061090b565b60008213611e4557611e3e836127b4565b905061090b565b611e3e838361289b565b6001600160a01b038116611edd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161071d565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461112f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161071d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060996000815461200390612907565b9091555060408051610940810190915261090e8082526000916120a291839133916129236020830139604080516001600160a01b037f000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad788166020820152808201919091526000606082015260800160408051601f198184030181529082905261208e9291602001612886565b6040516020818303038152906040526122e7565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b1580156120e657600080fd5b505af11580156120fa573d6000803e3d6000fd5b50503360008181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b604080516001600160f81b03196020808301919091526bffffffffffffffffffffffff193060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000906113d5565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f08f0470754946ccfbb446ff7fd2d6ae6af1bbdae19f85794c0cc5ed5e8ceb4f690600090a250565b6065546001600160a01b031615801561221e57506001600160a01b03821615155b6122a05760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161071d565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26122e382611e4f565b5050565b6000808447101561233a5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640161071d565b82516123885760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640161071d565b8383516020850187f590506001600160a01b0381166123e95760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640161071d565b949350505050565b6001600160a01b03811681146109c157600080fd5b6000806040838503121561241957600080fd5b8235612424816123f1565b946020939093013593505050565b60006020828403121561244457600080fd5b81356113d5816123f1565b60006020828403121561246157600080fd5b5035919050565b60008060006060848603121561247d57600080fd5b8335612488816123f1565b92506020840135612498816123f1565b929592945050506040919091013590565b6000602082840312156124bb57600080fd5b813567ffffffffffffffff811681146113d557600080fd5b6000602082840312156124e557600080fd5b813560ff811681146113d557600080fd5b60008083601f84011261250857600080fd5b50813567ffffffffffffffff81111561252057600080fd5b60208301915083602082850101111561253857600080fd5b9250929050565b60008060008060006060868803121561255757600080fd5b853567ffffffffffffffff8082111561256f57600080fd5b61257b89838a016124f6565b9097509550602088013591508082111561259457600080fd5b506125a1888289016124f6565b96999598509660400135949350505050565b600080600080608085870312156125c957600080fd5b84356125d4816123f1565b935060208501356125e4816123f1565b925060408501356125f4816123f1565b9396929550929360600135925050565b602080825260409082018190527f456967656e506f644d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60008261268757612687612662565b500690565b634e487b7160e01b600052601160045260246000fd5b600080821280156001600160ff1b03849003851316156126c4576126c461268c565b600160ff1b83900384128116156126dd576126dd61268c565b50500190565b6000602082840312156126f557600080fd5b81516113d5816123f1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561275c57600080fd5b815180151581146113d557600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000600160ff1b8214156127ca576127ca61268c565b5060000390565b6000828210156127e3576127e361268c565b500390565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006128256060830187896127e8565b82810360208401526128388186886127e8565b9150508260408301529695505050505050565b6000815160005b8181101561286c5760208185018101518683015201612852565b8181111561287b576000828601525b509290920192915050565b60006123e9612895838661284b565b8461284b565b60008083128015600160ff1b8501841216156128b9576128b961268c565b6001600160ff1b03840183138116156128d4576128d461268c565b50500390565b6000826128e9576128e9612662565b500790565b60006020828403121561290057600080fd5b5051919050565b600060001982141561291b5761291b61268c565b506001019056fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65644e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193456967656e506f644d616e616765722e77697468647261775368617265734173a2646970667358221220f4142d31b19c8d9ca756fceb11e0a14c189743e7b456cda04629fad4f5e08cf164736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0dcd1bf9a1b36ce34237eeafef220932846bcd82":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106102275760003560e01c806394f649dd11610130578063c6656702116100b8578063df5cf7231161007c578063df5cf72314610596578063e7a050aa146105bd578063f2fde38b146105d0578063f698da25146105e3578063fabc1cbc146105eb57600080fd5b8063c665670214610520578063cbc2bd6214610533578063cd293f6f14610546578063cf756fdf14610570578063df5b35471461058357600080fd5b8063b43b514b116100ff578063b43b514b146104b1578063b5d8b5b8146104c4578063c3c6b3a9146104d7578063c4623ea1146104fa578063c608c7f31461050d57600080fd5b806394f649dd14610433578063967fc0d2146104545780639b4da03d14610467578063b13442711461048a57600080fd5b80635c975abb116101b35780637ecebe00116101825780637ecebe00146103b3578063886f1195146103d35780638b8aac3c146103e65780638c80d4e51461040f5780638da5cb5b1461042257600080fd5b80635c975abb14610355578063663c1de41461035d578063715018a6146103805780637a7e0d921461038857600080fd5b80634665bcda116101fa5780634665bcda146102a157806348825e94146102e05780634e5a426314610307578063595c6a671461031a5780635ac86ab71461032257600080fd5b806310d67a2f1461022c578063136439dd1461024157806320606b701461025457806332e89ace1461028e575b600080fd5b61023f61023a366004612b4a565b6105fe565b005b61023f61024f366004612b67565b6106ba565b61027b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b61027b61029c366004612c00565b6107f9565b6102c87f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b039091168152602001610285565b61027b7f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922481565b61023f610315366004612ced565b610ae7565b61023f610b1f565b610345610330366004612d26565b609854600160ff9092169190911b9081161490565b6040519015158152602001610285565b60985461027b565b61034561036b366004612b4a565b60d16020526000908152604090205460ff1681565b61023f610be6565b61027b610396366004612d49565b60cd60209081526000928352604080842090915290825290205481565b61027b6103c1366004612b4a565b60ca6020526000908152604090205481565b6097546102c8906001600160a01b031681565b61027b6103f4366004612b4a565b6001600160a01b0316600090815260ce602052604090205490565b61023f61041d366004612d77565b610bfa565b6033546001600160a01b03166102c8565b610446610441366004612b4a565b610c53565b604051610285929190612e2c565b60cb546102c8906001600160a01b031681565b610345610475366004612b4a565b60d36020526000908152604090205460ff1681565b6102c87f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b61027b6104bf366004612fd5565b610dd3565b61023f6104d23660046130f0565b610e20565b6103456104e5366004612b67565b60cf6020526000908152604090205460ff1681565b61023f610508366004613132565b610f94565b61023f61051b366004613183565b610fe8565b61023f61052e366004612b4a565b6110a0565b6102c86105413660046131d6565b6110b1565b610559610554366004612fd5565b6110e9565b604080519215158352602083019190915201610285565b61023f61057e366004613132565b61117d565b61023f610591366004613202565b6112b1565b6102c87f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61027b6105cb366004612d77565b6114da565b61023f6105de366004612b4a565b6115a3565b61027b611619565b61023f6105f9366004612b67565b611657565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610651573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610675919061326e565b6001600160a01b0316336001600160a01b0316146106ae5760405162461bcd60e51b81526004016106a59061328b565b60405180910390fd5b6106b7816117b3565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610702573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072691906132d5565b6107425760405162461bcd60e51b81526004016106a5906132f2565b609854818116146107bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6098546000908190600190811614156108505760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156108a35760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b60026065556001600160a01b038816600090815260d3602052604090205460ff161561094a5760405162461bcd60e51b815260206004820152604a60248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207468697264207472616e736665726064820152691cc8191a5cd8589b195960b21b608482015260a4016106a5565b428410156109cc5760405162461bcd60e51b815260206004820152604360248201527f53747261746567794d616e616765722e6465706f736974496e746f537472617460448201527f656779576974685369676e61747572653a207369676e617475726520657870696064820152621c995960ea1b608482015260a4016106a5565b6001600160a01b03858116600081815260ca602090815260408083205481517f4337f82d142e41f2a8c10547cd8c859bddb92262a61058e77842e24d9dea922493810193909352908201939093528b84166060820152928a16608084015260a0830189905260c0830182905260e0830187905290916101000160408051601f1981840301815291815281516020928301206001600160a01b038a16600090815260ca9093529082206001850190559150610a84611619565b60405161190160f01b6020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050610ac78882886118aa565b610ad3888c8c8c611a69565b60016065559b9a5050505050505050505050565b60cb546001600160a01b03163314610b115760405162461bcd60e51b81526004016106a59061333a565b610b1b8282611c38565b5050565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8b91906132d5565b610ba75760405162461bcd60e51b81526004016106a5906132f2565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610bee611ca6565b610bf86000611d00565b565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610c425760405162461bcd60e51b81526004016106a5906133a4565b610c4d838383611d52565b50505050565b6001600160a01b038116600090815260ce60205260408120546060918291908167ffffffffffffffff811115610c8b57610c8b612b90565b604051908082528060200260200182016040528015610cb4578160200160208202803683370190505b50905060005b82811015610d45576001600160a01b038616600090815260cd6020908152604080832060ce9092528220805491929184908110610cf957610cf9613402565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610d3257610d32613402565b6020908102919091010152600101610cba565b5060ce6000866001600160a01b03166001600160a01b031681526020019081526020016000208181805480602002602001604051908101604052809291908181526020018280548015610dc157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da3575b50505050509150935093505050915091565b80516020808301516040808501516060860151608087015160a08801519351600097610e03979096959101613418565b604051602081830303815290604052805190602001209050919050565b60cb546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106a59061333a565b8060005b81811015610c4d5760d16000858584818110610e6c57610e6c613402565b9050602002016020810190610e819190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff1615610f8c57600060d16000868685818110610ebb57610ebb613402565b9050602002016020810190610ed09190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f4074413b4b443e4e58019f2855a8765113358c7c72e39509c6af45fc0f5ba030848483818110610f2b57610f2b613402565b9050602002016020810190610f409190612b4a565b6040516001600160a01b03909116815260200160405180910390a1610f8c848483818110610f7057610f70613402565b9050602002016020810190610f859190612b4a565b6000611c38565b600101610e4e565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610fdc5760405162461bcd60e51b81526004016106a5906133a4565b610c4d84848484611eae565b336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146110305760405162461bcd60e51b81526004016106a5906133a4565b604051636ce5768960e11b81526001600160a01b03858116600483015282811660248301526044820184905284169063d9caed1290606401600060405180830381600087803b15801561108257600080fd5b505af1158015611096573d6000803e3d6000fd5b5050505050505050565b6110a8611ca6565b6106b78161213b565b60ce60205281600052604060002081815481106110cd57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600080336001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916146111345760405162461bcd60e51b81526004016106a5906133a4565b600061113f84610dd3565b600081815260cf60205260408120549192509060ff16156111745750600081815260cf60205260409020805460ff1916905560015b92509050915091565b600054610100900460ff161580801561119d5750600054600160ff909116105b806111b75750303b1580156111b7575060005460ff166001145b61121a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a5565b6000805460ff19166001179055801561123d576000805461ff0019166101001790555b6112456121a4565b60c955611252838361223b565b61125b85611d00565b6112648461213b565b80156112aa576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60cb546001600160a01b031633146112db5760405162461bcd60e51b81526004016106a59061333a565b8281146113645760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794d616e616765722e61646453747261746567696573546f4460448201527f65706f73697457686974656c6973743a206172726179206c656e67746873206460648201526a0de40dcdee840dac2e8c6d60ab1b608482015260a4016106a5565b8260005b818110156114d25760d1600087878481811061138657611386613402565b905060200201602081019061139b9190612b4a565b6001600160a01b0316815260208101919091526040016000205460ff166114ca57600160d160008888858181106113d4576113d4613402565b90506020020160208101906113e99190612b4a565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790557f0c35b17d91c96eb2751cd456e1252f42a386e524ef9ff26ecc9950859fdc04fe86868381811061144457611444613402565b90506020020160208101906114599190612b4a565b6040516001600160a01b03909116815260200160405180910390a16114ca86868381811061148957611489613402565b905060200201602081019061149e9190612b4a565b8585848181106114b0576114b0613402565b90506020020160208101906114c59190613491565b611c38565b600101611368565b505050505050565b6098546000908190600190811614156115315760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064016106a5565b600260655414156115845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a5565b600260655561159533868686611a69565b600160655595945050505050565b6115ab611ca6565b6001600160a01b0381166116105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a5565b6106b781611d00565b60007f000000000000000000000000000000000000000000000000000000000000426846141561164a575060c95490565b6116526121a4565b905090565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ce919061326e565b6001600160a01b0316336001600160a01b0316146116fe5760405162461bcd60e51b81526004016106a59061328b565b60985419811960985419161461177c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016106a5565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107ee565b6001600160a01b0381166118415760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a5565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383163b156119c957604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906118ea9086908690600401613506565b602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b919061351f565b6001600160e01b031916146119c45760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a4016106a5565b505050565b826001600160a01b03166119dd8383612321565b6001600160a01b0316146119c45760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a4016106a5565b6001600160a01b038316600090815260d16020526040812054849060ff16611b0f5760405162461bcd60e51b815260206004820152604d60248201527f53747261746567794d616e616765722e6f6e6c7953747261746567696573576860448201527f6974656c6973746564466f724465706f7369743a207374726174656779206e6f60648201526c1d081dda1a5d195b1a5cdd1959609a1b608482015260a4016106a5565b611b246001600160a01b038516338786612345565b6040516311f9fbc960e21b81526001600160a01b038581166004830152602482018590528616906347e7ef24906044016020604051808303816000875af1158015611b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b979190613549565b9150611ba586858785611eae565b604051631452b9d760e11b81526001600160a01b0387811660048301528681166024830152604482018490527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c916906328a573ae90606401600060405180830381600087803b158015611c1757600080fd5b505af1158015611c2b573d6000803e3d6000fd5b5050505050949350505050565b604080516001600160a01b038416815282151560208201527f77d930df4937793473a95024d87a98fd2ccb9e92d3c2463b3dacd65d3e6a5786910160405180910390a16001600160a01b0391909116600090815260d360205260409020805460ff1916911515919091179055565b6033546001600160a01b03163314610bf85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a5565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081611dc75760405162461bcd60e51b815260206004820152603e60248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a207360448201527f68617265416d6f756e742073686f756c64206e6f74206265207a65726f21000060648201526084016106a5565b6001600160a01b03808516600090815260cd602090815260408083209387168352929052205480831115611e595760405162461bcd60e51b815260206004820152603360248201527f53747261746567794d616e616765722e5f72656d6f76655368617265733a20736044820152720d0c2e4ca82dadeeadce840e8dede40d0d2ced606b1b60648201526084016106a5565b6001600160a01b03808616600090815260cd602090815260408083209388168352929052208382039081905590831415611ea157611e97858561239f565b6001915050611ea7565b60009150505b9392505050565b6001600160a01b038416611f2a5760405162461bcd60e51b815260206004820152603960248201527f53747261746567794d616e616765722e5f6164645368617265733a207374616b60448201527f65722063616e6e6f74206265207a65726f20616464726573730000000000000060648201526084016106a5565b80611f965760405162461bcd60e51b815260206004820152603660248201527f53747261746567794d616e616765722e5f6164645368617265733a207368617260448201527565732073686f756c64206e6f74206265207a65726f2160501b60648201526084016106a5565b6001600160a01b03808516600090815260cd60209081526040808320938616835292905220546120a7576001600160a01b038416600090815260ce6020908152604090912054106120685760405162461bcd60e51b815260206004820152605060248201527f53747261746567794d616e616765722e5f6164645368617265733a206465706f60448201527f73697420776f756c6420657863656564204d41585f5354414b45525f5354524160648201526f0a88a8eb2be9892a6a8be988a9c8ea8960831b608482015260a4016106a5565b6001600160a01b03848116600090815260ce602090815260408220805460018101825590835291200180546001600160a01b0319169184169190911790555b6001600160a01b03808516600090815260cd60209081526040808320938616835292905290812080548392906120de908490613578565b9091555050604080516001600160a01b03868116825285811660208301528416818301526060810183905290517f7cfff908a4b583f36430b25d75964c458d8ede8a99bd61be750e97ee1b2f3a969181900360800190a150505050565b60cb54604080516001600160a01b03928316815291831660208301527f4264275e593955ff9d6146a51a4525f6ddace2e81db9391abcc9d1ca48047d29910160405180910390a160cb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b6097546001600160a01b031615801561225c57506001600160a01b03821615155b6122de5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a5565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610b1b826117b3565b60008060006123308585612591565b9150915061233d81612601565b509392505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c4d9085906127bc565b6001600160a01b038216600090815260ce6020526040812054905b818110156124ba576001600160a01b03848116600090815260ce60205260409020805491851691839081106123f1576123f1613402565b6000918252602090912001546001600160a01b031614156124b2576001600160a01b038416600090815260ce60205260409020805461243290600190613590565b8154811061244257612442613402565b60009182526020808320909101546001600160a01b03878116845260ce909252604090922080549190921691908390811061247f5761247f613402565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506124ba565b6001016123ba565b818114156125425760405162461bcd60e51b815260206004820152604960248201527f53747261746567794d616e616765722e5f72656d6f766553747261746567794660448201527f726f6d5374616b657253747261746567794c6973743a207374726174656779206064820152681b9bdd08199bdd5b9960ba1b608482015260a4016106a5565b6001600160a01b038416600090815260ce60205260409020805480612569576125696135a7565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000808251604114156125c85760208301516040840151606085015160001a6125bc8782858561288e565b945094505050506125fa565b8251604014156125f257602083015160408401516125e786838361297b565b9350935050506125fa565b506000905060025b9250929050565b6000816004811115612615576126156135bd565b141561261e5750565b6001816004811115612632576126326135bd565b14156126805760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106a5565b6002816004811115612694576126946135bd565b14156126e25760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106a5565b60038160048111156126f6576126f66135bd565b141561274f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016106a5565b6004816004811115612763576127636135bd565b14156106b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016106a5565b6000612811826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129b49092919063ffffffff16565b8051909150156119c4578080602001905181019061282f91906132d5565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a5565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128c55750600090506003612972565b8460ff16601b141580156128dd57508460ff16601c14155b156128ee5750600090506004612972565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612942573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661296b57600060019250925050612972565b9150600090505b94509492505050565b6000806001600160ff1b0383168161299860ff86901c601b613578565b90506129a68782888561288e565b935093505050935093915050565b60606129c384846000856129cb565b949350505050565b606082471015612a2c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a5565b6001600160a01b0385163b612a835760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a5565b600080866001600160a01b03168587604051612a9f91906135d3565b60006040518083038185875af1925050503d8060008114612adc576040519150601f19603f3d011682016040523d82523d6000602084013e612ae1565b606091505b5091509150612af1828286612afc565b979650505050505050565b60608315612b0b575081611ea7565b825115612b1b5782518084602001fd5b8160405162461bcd60e51b81526004016106a591906135ef565b6001600160a01b03811681146106b757600080fd5b600060208284031215612b5c57600080fd5b8135611ea781612b35565b600060208284031215612b7957600080fd5b5035919050565b8035612b8b81612b35565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715612bc957612bc9612b90565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612bf857612bf8612b90565b604052919050565b60008060008060008060c08789031215612c1957600080fd5b8635612c2481612b35565b9550602087810135612c3581612b35565b9550604088013594506060880135612c4c81612b35565b93506080880135925060a088013567ffffffffffffffff80821115612c7057600080fd5b818a0191508a601f830112612c8457600080fd5b813581811115612c9657612c96612b90565b612ca8601f8201601f19168501612bcf565b91508082528b84828501011115612cbe57600080fd5b80848401858401376000848284010152508093505050509295509295509295565b80151581146106b757600080fd5b60008060408385031215612d0057600080fd5b8235612d0b81612b35565b91506020830135612d1b81612cdf565b809150509250929050565b600060208284031215612d3857600080fd5b813560ff81168114611ea757600080fd5b60008060408385031215612d5c57600080fd5b8235612d6781612b35565b91506020830135612d1b81612b35565b600080600060608486031215612d8c57600080fd5b8335612d9781612b35565b92506020840135612da781612b35565b929592945050506040919091013590565b600081518084526020808501945080840160005b83811015612df15781516001600160a01b031687529582019590820190600101612dcc565b509495945050505050565b600081518084526020808501945080840160005b83811015612df157815187529582019590820190600101612e10565b604081526000612e3f6040830185612db8565b8281036020840152612e518185612dfc565b95945050505050565b600067ffffffffffffffff821115612e7457612e74612b90565b5060051b60200190565b600082601f830112612e8f57600080fd5b81356020612ea4612e9f83612e5a565b612bcf565b82815260059290921b84018101918181019086841115612ec357600080fd5b8286015b84811015612ee7578035612eda81612b35565b8352918301918301612ec7565b509695505050505050565b600082601f830112612f0357600080fd5b81356020612f13612e9f83612e5a565b82815260059290921b84018101918181019086841115612f3257600080fd5b8286015b84811015612ee75780358352918301918301612f36565b600060408284031215612f5f57600080fd5b6040516040810181811067ffffffffffffffff82111715612f8257612f82612b90565b6040529050808235612f9381612b35565b815260208301356bffffffffffffffffffffffff81168114612fb457600080fd5b6020919091015292915050565b803563ffffffff81168114612b8b57600080fd5b600060208284031215612fe757600080fd5b813567ffffffffffffffff80821115612fff57600080fd5b9083019060e0828603121561301357600080fd5b61301b612ba6565b82358281111561302a57600080fd5b61303687828601612e7e565b82525060208301358281111561304b57600080fd5b61305787828601612ef2565b60208301525061306960408401612b80565b604082015261307b8660608501612f4d565b606082015261308c60a08401612fc1565b608082015261309d60c08401612b80565b60a082015295945050505050565b60008083601f8401126130bd57600080fd5b50813567ffffffffffffffff8111156130d557600080fd5b6020830191508360208260051b85010111156125fa57600080fd5b6000806020838503121561310357600080fd5b823567ffffffffffffffff81111561311a57600080fd5b613126858286016130ab565b90969095509350505050565b6000806000806080858703121561314857600080fd5b843561315381612b35565b9350602085013561316381612b35565b9250604085013561317381612b35565b9396929550929360600135925050565b6000806000806080858703121561319957600080fd5b84356131a481612b35565b935060208501356131b481612b35565b92506040850135915060608501356131cb81612b35565b939692955090935050565b600080604083850312156131e957600080fd5b82356131f481612b35565b946020939093013593505050565b6000806000806040858703121561321857600080fd5b843567ffffffffffffffff8082111561323057600080fd5b61323c888389016130ab565b9096509450602087013591508082111561325557600080fd5b50613262878288016130ab565b95989497509550505050565b60006020828403121561328057600080fd5b8151611ea781612b35565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156132e757600080fd5b8151611ea781612cdf565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208082526044908201527f53747261746567794d616e616765722e6f6e6c7953747261746567795768697460408201527f656c69737465723a206e6f742074686520737472617465677957686974656c6960608201526339ba32b960e11b608082015260a00190565b602080825260409082018190527f53747261746567794d616e616765722e6f6e6c7944656c65676174696f6e4d61908201527f6e616765723a206e6f74207468652044656c65676174696f6e4d616e61676572606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60e08152600061342b60e0830189612db8565b828103602084015261343d8189612dfc565b6001600160a01b0397881660408501528651881660608501526020909601516bffffffffffffffffffffffff166080840152505063ffffffff9290921660a083015290921660c09092019190915292915050565b6000602082840312156134a357600080fd5b8135611ea781612cdf565b60005b838110156134c95781810151838201526020016134b1565b83811115610c4d5750506000910152565b600081518084526134f28160208601602086016134ae565b601f01601f19169290920160200192915050565b8281526040602082015260006129c360408301846134da565b60006020828403121561353157600080fd5b81516001600160e01b031981168114611ea757600080fd5b60006020828403121561355b57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561358b5761358b613562565b500190565b6000828210156135a2576135a2613562565b500390565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600082516135e58184602087016134ae565b9190910192915050565b602081526000611ea760208301846134da56fea264697066735822122040c065692c9e8827dec1688569c977abcb17999af2e58d54d2ef89bc1ff6f5dc64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x0e801d84fa97b50751dbf25036d067dcf18858bf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","0x66":"0x0","0xc9":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720000000000000000000000000","0xca":"0xa0ee7a142d267c1f36714e4a8f75612f20a79720","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x1291be112d480055dafd8a610b7d1e203891c274":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101a55760003560e01c80639f3ccf65116100ef578063c8294c5611610092578063c8294c561461048b578063d5eccc051461049e578063dd9846b9146104b1578063df5cf723146104d9578063f2be94ae14610500578063f851e19814610513578063fa28c62714610526578063ff694a771461053957600080fd5b80639f3ccf65146103a3578063ac6bfb03146103b6578063adc804da146103d6578063b6904b7814610416578063bc9a40c314610429578063bd29b8cd1461043c578063c46778a51461044f578063c601527d1461047857600080fd5b80634bd26e09116101575780634bd26e09146102a55780635401ed27146102d55780635e5a6775146102e85780635f1f2d77146102f757806366acfefe1461030a5780636d14a987146103355780637c1723471461036957806381c075021461038357600080fd5b80630491b41c146101aa57806308732461146101e05780631f9b74e01461020157806320b662981461022c57806325504777146102415780632cd95940146102625780633ca5a5f514610282575b600080fd5b6101cd6101b8366004612b78565b60ff1660009081526001602052604090205490565b6040519081526020015b60405180910390f35b6101f36101ee366004612b93565b61054c565b6040516101d7929190612bbd565b61021461020f366004612bf7565b610595565b6040516001600160601b0390911681526020016101d7565b61023f61023a366004612c72565b6105e5565b005b61025461024f366004612d33565b610900565b6040516101d7929190612dd2565b610275610270366004612df7565b610bcb565b6040516101d79190612e52565b6101cd610290366004612b78565b60ff1660009081526003602052604090205490565b6101cd6102b3366004612df7565b600091825260026020908152604080842060ff93909316845291905290205490565b6102146102e3366004612df7565b610c6a565b6101cd670de0b6b3a764000081565b61023f610305366004612f31565b610c83565b61031d610318366004612d33565b611095565b6040516001600160c01b0390911681526020016101d7565b61035c7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516101d79190612fd9565b610371602081565b60405160ff90911681526020016101d7565b610396610391366004613001565b6111ea565b6040516101d79190613053565b61035c6103b1366004612b93565b6114b4565b6103c96103c4366004613091565b6114ec565b6040516101d791906130c4565b6103e96103e4366004612b93565b611575565b6040805182516001600160a01b031681526020928301516001600160601b031692810192909252016101d7565b6103c9610424366004612b93565b6115ef565b61023f6104373660046130e9565b61166d565b61023f61044a366004613113565b611766565b61021461045d366004612b78565b6000602081905290815260409020546001600160601b031681565b61023f6104863660046131df565b61188d565b61021461049936600461322c565b611981565b6102146104ac366004612b78565b6119ff565b6104c46104bf366004613268565b611a52565b60405163ffffffff90911681526020016101d7565b61035c7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61021461050e3660046132a4565b611a67565b6103c9610521366004612df7565b611afc565b610214610534366004613268565b611bc3565b61023f6105473660046132e6565b611c24565b6003602052816000526040600020818154811061056857600080fd5b6000918252602090912001546001600160a01b0381169250600160a01b90046001600160601b0316905082565b60ff821660009081526001602052604081205483906105cf5760405162461bcd60e51b81526004016105c690613343565b60405180910390fd5b60006105db8585611d8f565b5095945050505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106679190613394565b6001600160a01b0316336001600160a01b0316146106975760405162461bcd60e51b81526004016105c6906133b1565b846106b38160ff16600090815260016020526040902054151590565b6106cf5760405162461bcd60e51b81526004016105c690613343565b8380610745576040805162461bcd60e51b81526020600482015260248101919091527f5374616b6552656769737472792e6d6f6469667953747261746567795061726160448201527f6d733a206e6f20737472617465677920696e64696365732070726f766964656460648201526084016105c6565b8281146107b65760405162461bcd60e51b815260206004820152603960248201527f5374616b6552656769737472792e6d6f646966795374726174656779506172616044820152780dae67440d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d603b1b60648201526084016105c6565b60ff87166000908152600360205260408120905b828110156108f5578585828181106107e4576107e461342d565b90506020020160208101906107f99190613443565b8289898481811061080c5761080c61342d565b90506020020135815481106108235761082361342d565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b031602179055508860ff1660008051602061375d833981519152838a8a8581811061087a5761087a61342d565b90506020020135815481106108915761089161342d565b6000918252602090912001546001600160a01b03168888858181106108b8576108b861342d565b90506020020160208101906108cd9190613443565b6040516108db929190612bbd565b60405180910390a2806108ed81613474565b9150506107ca565b505050505050505050565b606080336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf161461094b5760405162461bcd60e51b81526004016105c69061348f565b6000836001600160401b0381111561096557610965612ea0565b60405190808252806020026020018201604052801561098e578160200160208202803683370190505b5090506000846001600160401b038111156109ab576109ab612ea0565b6040519080825280602002602001820160405280156109d4578160200160208202803683370190505b50905060005b85811015610bbd5760008787838181106109f6576109f661342d565b919091013560f81c60008181526001602052604090205490925015159050610a7e5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a206044820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b60648201526084016105c6565b600080610a8b838d611d8f565b9150915080610b285760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e72656769737465724f70657261746f723a2060448201527f4f70657261746f7220646f6573206e6f74206d656574206d696e696d756d207360648201527f74616b6520726571756972656d656e7420666f722071756f72756d0000000000608482015260a4016105c6565b6000610b358c8585611f92565b905082878681518110610b4a57610b4a61342d565b60200260200101906001600160601b031690816001600160601b031681525050610b748482612212565b868681518110610b8657610b8661342d565b60200260200101906001600160601b031690816001600160601b031681525050505050508080610bb590613474565b9150506109da565b509097909650945050505050565b600082815260026020908152604080832060ff851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610c5d576000848152602090819020604080516060810182529185015463ffffffff8082168452600160201b82041683850152600160401b90046001600160601b031690820152825260019092019101610c04565b5050505090505b92915050565b600080610c778484611afc565b60400151949350505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190613394565b6001600160a01b0316336001600160a01b031614610d355760405162461bcd60e51b81526004016105c6906133b1565b81610d518160ff16600090815260016020526040902054151590565b610d6d5760405162461bcd60e51b81526004016105c690613343565b815180610de25760405162461bcd60e51b815260206004820152603d60248201527f5374616b6552656769737472792e72656d6f7665537472617465676965733a2060448201527f6e6f20696e646963657320746f2072656d6f76652070726f766964656400000060648201526084016105c6565b60ff841660009081526003602090815260408083206004909252822090915b8381101561108c578660ff167f31fa2e2cd280c9375e13ffcf3d81e2378100186e4058f8d3ddb690b82dcd31f784888481518110610e4157610e4161342d565b602002602001015181548110610e5957610e5961342d565b600091825260209091200154604051610e7b916001600160a01b031690612fd9565b60405180910390a28660ff1660008051602061375d83398151915284888481518110610ea957610ea961342d565b602002602001015181548110610ec157610ec161342d565b600091825260208083209190910154604080516001600160a01b039092168252918101929092520160405180910390a282548390610f0190600190613501565b81548110610f1157610f1161342d565b9060005260206000200183878381518110610f2e57610f2e61342d565b602002602001015181548110610f4657610f4661342d565b600091825260209091208254910180546001600160a01b0319166001600160a01b03909216918217815591546001600160601b03600160a01b9182900416021790558254839080610f9957610f99613518565b60008281526020812082016000199081019190915501905581548290610fc190600190613501565b81548110610fd157610fd161342d565b9060005260206000200160009054906101000a90046001600160a01b0316828783815181106110025761100261342d565b60200260200101518154811061101a5761101a61342d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508180548061105857611058613518565b600082815260209020810160001990810180546001600160a01b03191690550190558061108481613474565b915050610e01565b50505050505050565b6000336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146110df5760405162461bcd60e51b81526004016105c69061348f565b6000805b838110156105db5760008585838181106110ff576110ff61342d565b919091013560f81c6000818152600160205260409020549092501515905061118a5760405162461bcd60e51b815260206004820152603860248201527f5374616b6552656769737472792e7570646174654f70657261746f725374616b604482015277194e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd60421b60648201526084016105c6565b600080611197838b611d8f565b91509150806111b95760009150600160ff84161b6001600160c01b0386161794505b60006111c68a8585611f92565b90506111d28482612212565b505050505080806111e290613474565b9150506110e3565b60606000826001600160401b0381111561120657611206612ea0565b60405190808252806020026020018201604052801561122f578160200160208202803683370190505b50905060005b838110156114a95760008585838181106112515761125161342d565b919091013560f81c600081815260016020526040902054909250151590506112f05760405162461bcd60e51b815260206004820152604660248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20646f6573206e6f7460648201526508195e1a5cdd60d21b608482015260a4016105c6565b60ff81166000908152600160205260408120805463ffffffff8a1692906113195761131961342d565b60009182526020909120015463ffffffff1611156113c55760405162461bcd60e51b815260206004820152605b60248201527f5374616b6552656769737472792e676574546f74616c5374616b65496e64696360448201527f65734174426c6f636b4e756d6265723a2071756f72756d20686173206e6f207360648201527f74616b6520686973746f727920617420626c6f636b4e756d6265720000000000608482015260a4016105c6565b60ff8116600090815260016020526040812054905b818110156114935760ff8316600090815260016020819052604090912063ffffffff8b16916114098486613501565b6114139190613501565b815481106114235761142361342d565b60009182526020909120015463ffffffff16116114815760016114468284613501565b6114509190613501565b8585815181106114625761146261342d565b602002602001019063ffffffff16908163ffffffff1681525050611493565b8061148b81613474565b9150506113da565b50505080806114a190613474565b915050611235565b5090505b9392505050565b600460205281600052604060002081815481106114d057600080fd5b6000918252602090912001546001600160a01b03169150829050565b6114f4612b42565b600083815260026020908152604080832060ff8816845290915290208054839081106115225761152261342d565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b031691810191909152949350505050565b604080518082019091526000808252602082015260ff831660009081526003602052604090208054839081106115ad576115ad61342d565b6000918252602091829020604080518082019091529101546001600160a01b0381168252600160a01b90046001600160601b0316918101919091529392505050565b6115f7612b42565b60ff8316600090815260016020526040902080548390811061161b5761161b61342d565b600091825260209182902060408051606081018252929091015463ffffffff8082168452600160201b82041693830193909352600160401b9092046001600160601b0316918101919091529392505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ef9190613394565b6001600160a01b0316336001600160a01b03161461171f5760405162461bcd60e51b81526004016105c6906133b1565b8161173b8160ff16600090815260016020526040902054151590565b6117575760405162461bcd60e51b81526004016105c690613343565b611761838361238c565b505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146117ae5760405162461bcd60e51b81526004016105c69061348f565b60005b818110156118875760008383838181106117cd576117cd61342d565b919091013560f81c600081815260016020526040902054909250151590506118575760405162461bcd60e51b815260206004820152603760248201527f5374616b6552656769737472792e646572656769737465724f70657261746f726044820152760e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd604a1b60648201526084016105c6565b600061186586836000611f92565b90506118718282612212565b505050808061187f90613474565b9150506117b1565b50505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190f9190613394565b6001600160a01b0316336001600160a01b03161461193f5760405162461bcd60e51b81526004016105c6906133b1565b8161195b8160ff16600090815260016020526040902054151590565b6119775760405162461bcd60e51b81526004016105c690613343565b61176183836123f5565b60ff831660009081526001602052604081208054829190849081106119a8576119a861342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050610c77818561281c565b60ff81166000908152600160208190526040822080549091611a2091613501565b81548110611a3057611a3061342d565b600091825260209091200154600160401b90046001600160601b031692915050565b6000611a5f848484612996565b949350505050565b600082815260026020908152604080832060ff881684529091528120805482919084908110611a9857611a9861342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529050611aef818661281c565b6040015195945050505050565b611b04612b42565b600083815260026020908152604080832060ff86168452909152902054611b29612b42565b81611b37579150610c649050565b600085815260026020908152604080832060ff881684529091529020611b5e600184613501565b81548110611b6e57611b6e61342d565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160601b03600160401b90930492909216908201529250610c64915050565b600083815260026020908152604080832060ff861684529091528120611bea858585612996565b63ffffffff1681548110611c0057611c0061342d565b600091825260209091200154600160401b90046001600160601b0316949350505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614611c6c5760405162461bcd60e51b81526004016105c69061348f565b60ff831660009081526001602052604090205415611cea5760405162461bcd60e51b815260206004820152603560248201527f5374616b6552656769737472792e696e697469616c697a6551756f72756d3a2060448201527471756f72756d20616c72656164792065786973747360581b60648201526084016105c6565b611cf483826123f5565b611cfe838361238c565b505060ff166000908152600160208181526040808420815160608101835263ffffffff438116825281850187815293820187815283549687018455928752939095209451949093018054915193516001600160601b0316600160401b02600160401b600160a01b0319948416600160201b0267ffffffffffffffff1990931695909316949094171791909116179055565b600080600080611dae8660ff1660009081526003602052604090205490565b9050611dca604080518082019091526000808252602082015290565b60ff871660009081526004602081905260408083209051639004134760e01b81526001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91692639004134792611e28928c920161352e565b600060405180830381865afa158015611e45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e6d919081019061358d565b905060005b83811015611f5e5760ff89166000908152600360205260409020805482908110611e9e57611e9e61342d565b60009182526020808320604080518082019091529201546001600160a01b0381168352600160a01b90046001600160601b0316908201528351909450839083908110611eec57611eec61342d565b60200260200101511115611f4c57670de0b6b3a764000083602001516001600160601b0316838381518110611f2357611f2361342d565b6020026020010151611f35919061361d565b611f3f919061363c565b611f49908661365e565b94505b80611f5681613474565b915050611e72565b50505060ff8616600090815260208190526040902054919350506001600160601b03908116908316101590505b9250929050565b600083815260026020908152604080832060ff8616845290915281205481908061205657600086815260026020908152604080832060ff891684528252808320815160608101835263ffffffff43811682528185018681526001600160601b03808c16958401958652845460018101865594885295909620915191909201805495519351909416600160401b02600160401b600160a01b0319938316600160201b0267ffffffffffffffff19909616919092161793909317169190911790556121b8565b600086815260026020908152604080832060ff89168452909152812061207d600184613501565b8154811061208d5761208d61342d565b600091825260209091200180546001600160601b03600160401b9091048116945090915085168314156120c657600093505050506114ad565b80544363ffffffff90811691161415612100578054600160401b600160a01b031916600160401b6001600160601b038716021781556121b6565b805467ffffffff000000001916600160201b4363ffffffff90811682810293909317845560008a815260026020908152604080832060ff8d168452825280832081516060810183529687528683018481526001600160601b038d81169389019384528254600181018455928652939094209651960180549351915196851667ffffffffffffffff1990941693909317931690930291909117600160401b600160a01b031916600160401b93909216929092021790555b505b6040805160ff871681526001600160601b038616602082015287917f2f527d527e95d8fe40aec55377743bb779087da3f6d0d08f12e36444da62327d910160405180910390a26122088285612afc565b9695505050505050565b60ff8216600090815260016020819052604082208054918391906122369084613501565b815481106122465761224661342d565b90600052602060002001905083600014156122755754600160401b90046001600160601b03169150610c649050565b805460009061229490600160401b90046001600160601b031686612b14565b82549091504363ffffffff908116911614156122d1578154600160401b600160a01b031916600160401b6001600160601b03831602178255612383565b815463ffffffff438116600160201b81810267ffffffff000000001990941693909317855560ff8916600090815260016020818152604080842081516060810183529586528583018581526001600160601b03808b169388019384528254958601835591865292909420945194909201805491519251909316600160401b02600160401b600160a01b031992861690960267ffffffffffffffff19909116939094169290921792909217169190911790555b95945050505050565b60ff82166000818152602081815260409182902080546bffffffffffffffffffffffff19166001600160601b03861690811790915591519182527f26eecff2b70b0a71104ff4d940ba7162d23a95c248771fc487a7be17a596b3cf910160405180910390a25050565b60008151116124555760405162461bcd60e51b8152602060048201526038602482015260008051602061373d8339815191526044820152770e881b9bc81cdd1c985d1959da595cc81c1c9bdd9a59195960421b60648201526084016105c6565b805160ff8316600090815260036020908152604090912054906124788383613689565b11156124e85760405162461bcd60e51b8152602060048201526045602482015260008051602061373d83398151915260448201527f3a20657863656564204d41585f5745494748494e475f46554e4354494f4e5f4c60648201526408a9c8ea8960db1b608482015260a4016105c6565b60005b828110156128155760005b6125008284613689565b8110156125e1578482815181106125195761251961342d565b6020026020010151600001516001600160a01b0316600360008860ff1660ff16815260200190815260200160002082815481106125585761255861342d565b6000918252602090912001546001600160a01b031614156125cf5760405162461bcd60e51b815260206004820152603d602482015260008051602061373d83398151915260448201527f3a2063616e6e6f74206164642073616d6520737472617465677920327800000060648201526084016105c6565b806125d981613474565b9150506124f6565b5060008482815181106125f6576125f661342d565b6020026020010151602001516001600160601b03161161267b5760405162461bcd60e51b8152602060048201526046602482015260008051602061373d83398151915260448201527f3a2063616e6e6f74206164642073747261746567792077697468207a65726f206064820152651dd95a59da1d60d21b608482015260a4016105c6565b60ff8516600090815260036020526040902084518590839081106126a1576126a161342d565b602090810291909101810151825460018101845560009384528284208251928401516001600160601b0316600160a01b026001600160a01b039093169290921791015560ff87168252600490526040902084518590839081106127065761270661342d565b6020908102919091018101515182546001810184556000938452919092200180546001600160a01b0319166001600160a01b03909216919091179055835160ff8616907f10565e56cacbf32eca267945f054fec02e59750032d113d3302182ad967f54049086908490811061277d5761277d61342d565b6020026020010151600001516040516127969190612fd9565b60405180910390a28460ff1660008051602061375d8339815191528583815181106127c3576127c361342d565b6020026020010151600001518684815181106127e1576127e161342d565b6020026020010151602001516040516127fb929190612bbd565b60405180910390a28061280d81613474565b9150506124eb565b5050505050565b816000015163ffffffff168163ffffffff1610156128c15760405162461bcd60e51b815260206004820152605660248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a207374616b6555706461746520697320606482015275333937b69030b33a32b910313637b1b5a73ab6b132b960511b608482015260a4016105c6565b602082015163ffffffff1615806128e75750816020015163ffffffff168163ffffffff16105b6129925760405162461bcd60e51b815260206004820152606a60248201527f5374616b6552656769737472792e5f76616c69646174655374616b655570646160448201527f74654174426c6f636b4e756d6265723a2074686572652069732061206e65776560648201527f72207374616b6555706461746520617661696c61626c65206265666f726520626084820152693637b1b5a73ab6b132b960b11b60a482015260c4016105c6565b5050565b600083815260026020908152604080832060ff86168452909152812054805b8015612a3757600086815260026020908152604080832060ff89168452909152902063ffffffff8516906129ea600184613501565b815481106129fa576129fa61342d565b60009182526020909120015463ffffffff1611612a2557612a1c600182613501565b925050506114ad565b80612a2f816136a1565b9150506129b5565b5060405162461bcd60e51b815260206004820152608160248201527f5374616b6552656769737472792e5f6765745374616b65557064617465496e6460448201527f6578466f724f70657261746f724174426c6f636b4e756d6265723a206e6f207360648201527f74616b652075706461746520666f756e6420666f72206f70657261746f72496460848201527f20616e642071756f72756d4e756d62657220617420626c6f636b206e756d626560a4820152603960f91b60c482015260e4016105c6565b60006114ad6001600160601b038085169084166136b8565b600080821215612b3857612b27826136f7565b612b319084613714565b9050610c64565b612b31828461365e565b604080516060810182526000808252602082018190529181019190915290565b803560ff81168114612b7357600080fd5b919050565b600060208284031215612b8a57600080fd5b6114ad82612b62565b60008060408385031215612ba657600080fd5b612baf83612b62565b946020939093013593505050565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6001600160a01b0381168114612bf457600080fd5b50565b60008060408385031215612c0a57600080fd5b612c1383612b62565b91506020830135612c2381612bdf565b809150509250929050565b60008083601f840112612c4057600080fd5b5081356001600160401b03811115612c5757600080fd5b6020830191508360208260051b8501011115611f8b57600080fd5b600080600080600060608688031215612c8a57600080fd5b612c9386612b62565b945060208601356001600160401b0380821115612caf57600080fd5b612cbb89838a01612c2e565b90965094506040880135915080821115612cd457600080fd5b50612ce188828901612c2e565b969995985093965092949392505050565b60008083601f840112612d0457600080fd5b5081356001600160401b03811115612d1b57600080fd5b602083019150836020828501011115611f8b57600080fd5b60008060008060608587031215612d4957600080fd5b8435612d5481612bdf565b93506020850135925060408501356001600160401b03811115612d7657600080fd5b612d8287828801612cf2565b95989497509550505050565b600081518084526020808501945080840160005b83811015612dc75781516001600160601b031687529582019590820190600101612da2565b509495945050505050565b604081526000612de56040830185612d8e565b82810360208401526123838185612d8e565b60008060408385031215612e0a57600080fd5b82359150612e1a60208401612b62565b90509250929050565b63ffffffff808251168352806020830151166020840152506001600160601b0360408201511660408301525050565b6020808252825182820181905260009190848201906040850190845b81811015612e9457612e81838551612e23565b9284019260609290920191600101612e6e565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612ed857612ed8612ea0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612f0657612f06612ea0565b604052919050565b60006001600160401b03821115612f2757612f27612ea0565b5060051b60200190565b60008060408385031215612f4457600080fd5b612f4d83612b62565b91506020808401356001600160401b03811115612f6957600080fd5b8401601f81018613612f7a57600080fd5b8035612f8d612f8882612f0e565b612ede565b81815260059190911b82018301908381019088831115612fac57600080fd5b928401925b82841015612fca57833582529284019290840190612fb1565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b803563ffffffff81168114612b7357600080fd5b60008060006040848603121561301657600080fd5b61301f84612fed565b925060208401356001600160401b0381111561303a57600080fd5b61304686828701612cf2565b9497909650939450505050565b6020808252825182820181905260009190848201906040850190845b81811015612e9457835163ffffffff168352928401929184019160010161306f565b6000806000606084860312156130a657600080fd5b6130af84612b62565b95602085013595506040909401359392505050565b60608101610c648284612e23565b80356001600160601b0381168114612b7357600080fd5b600080604083850312156130fc57600080fd5b61310583612b62565b9150612e1a602084016130d2565b60008060006040848603121561312857600080fd5b8335925060208401356001600160401b0381111561303a57600080fd5b600082601f83011261315657600080fd5b81356020613166612f8883612f0e565b82815260069290921b8401810191818101908684111561318557600080fd5b8286015b848110156131d457604081890312156131a25760008081fd5b6131aa612eb6565b81356131b581612bdf565b81526131c28286016130d2565b81860152835291830191604001613189565b509695505050505050565b600080604083850312156131f257600080fd5b6131fb83612b62565b915060208301356001600160401b0381111561321657600080fd5b61322285828601613145565b9150509250929050565b60008060006060848603121561324157600080fd5b61324a84612b62565b925061325860208501612fed565b9150604084013590509250925092565b60008060006060848603121561327d57600080fd5b8335925061328d60208501612b62565b915061329b60408501612fed565b90509250925092565b600080600080608085870312156132ba57600080fd5b6132c385612b62565b93506132d160208601612fed565b93969395505050506040820135916060013590565b6000806000606084860312156132fb57600080fd5b61330484612b62565b9250613312602085016130d2565b915060408401356001600160401b0381111561332d57600080fd5b61333986828701613145565b9150509250925092565b60208082526031908201527f5374616b6552656769737472792e71756f72756d4578697374733a2071756f726040820152701d5b48191bd95cc81b9bdd08195e1a5cdd607a1b606082015260800190565b6000602082840312156133a657600080fd5b81516114ad81612bdf565b60208082526056908201527f5374616b6552656769737472792e6f6e6c79436f6f7264696e61746f724f776e60408201527f65723a2063616c6c6572206973206e6f7420746865206f776e6572206f6620746060820152753432903932b3b4b9ba393ca1b7b7b93234b730ba37b960511b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561345557600080fd5b6114ad826130d2565b634e487b7160e01b600052601160045260246000fd5b60006000198214156134885761348861345e565b5060010190565b6020808252604c908201527f5374616b6552656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865205265676973747260608201526b3ca1b7b7b93234b730ba37b960a11b608082015260a00190565b6000828210156135135761351361345e565b500390565b634e487b7160e01b600052603160045260246000fd5b60006040820160018060a01b03808616845260206040818601528286548085526060870191508760005282600020945060005b8181101561357f578554851683526001958601959284019201613561565b509098975050505050505050565b600060208083850312156135a057600080fd5b82516001600160401b038111156135b657600080fd5b8301601f810185136135c757600080fd5b80516135d5612f8882612f0e565b81815260059190911b820183019083810190878311156135f457600080fd5b928401925b82841015613612578351825292840192908401906135f9565b979650505050505050565b60008160001904831182151516156136375761363761345e565b500290565b60008261365957634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160601b038083168185168083038211156136805761368061345e565b01949350505050565b6000821982111561369c5761369c61345e565b500190565b6000816136b0576136b061345e565b506000190190565b60008083128015600160ff1b8501841216156136d6576136d661345e565b6001600160ff1b03840183138116156136f1576136f161345e565b50500390565b6000600160ff1b82141561370d5761370d61345e565b5060000390565b60006001600160601b03838116908316818110156137345761373461345e565b03939250505056fe5374616b6552656769737472792e5f6164645374726174656779506172616d7311a5641322da1dff56a4b66eaac31ffa465295ece907cd163437793b4d009a75a26469706673582212207e9a41b6d5ac3a5e50f0af34dafa95ef4729aea2fa853040a635f382b7887cb964736f6c634300080c0033","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0xc4e0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x322813fd9a801c5507c9de605d63cea4f2ce6c44":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635c975abb116100de578063ab5921e111610097578063df6fadc111610071578063df6fadc114610366578063e3dae51c14610381578063f3e7387514610394578063fabc1cbc146103a757600080fd5b8063ab5921e11461032b578063ce7c2ac214610340578063d9caed121461035357600080fd5b80635c975abb146102c857806361b01b5d146102d05780637a8b2637146102d9578063886f1195146102ec5780638c871019146103055780638f6a62401461031857600080fd5b80633a98ef391161014b578063485cc95511610125578063485cc9551461026b578063553ca5f81461027e578063595c6a67146102915780635ac86ab71461029957600080fd5b80633a98ef391461023857806343fe08b01461024f57806347e7ef241461025857600080fd5b8063019e27291461019357806310d67a2f146101a857806311c70c9d146101bb578063136439dd146101ce5780632495a599146101e157806339b70e3814610211575b600080fd5b6101a66101a1366004611840565b6103ba565b005b6101a66101b636600461188a565b6104c1565b6101a66101c93660046118a7565b610574565b6101a66101dc3660046118c9565b610629565b6032546101f4906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f47f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b61024160335481565b604051908152602001610208565b61024160645481565b6102416102663660046118e2565b61076d565b6101a661027936600461190e565b610911565b61024161028c36600461188a565b6109df565b6101a66109f3565b6102b86102a7366004611947565b6001805460ff9092161b9081161490565b6040519015158152602001610208565b600154610241565b61024160655481565b6102416102e73660046118c9565b610abf565b6000546101f4906201000090046001600160a01b031681565b6102416103133660046118c9565b610b0a565b61024161032636600461188a565b610b15565b610333610b23565b604051610208919061199a565b61024161034e36600461188a565b610b43565b6101a66103613660046119cd565b610bd8565b60645460655460408051928352602083019190915201610208565b61024161038f3660046118c9565b610da1565b6102416103a23660046118c9565b610dda565b6101a66103b53660046118c9565b610de5565b600054610100900460ff16158080156103da5750600054600160ff909116105b806103f45750303b1580156103f4575060005460ff166001145b6104195760405162461bcd60e51b815260040161041090611a0e565b60405180910390fd5b6000805460ff19166001179055801561043c576000805461ff0019166101001790555b610460604051806040016040528060038152602001623c30b160e91b815250610f41565b61046a8585610f84565b6104748383611091565b80156104ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105389190611a5c565b6001600160a01b0316336001600160a01b0316146105685760405162461bcd60e51b815260040161041090611a79565b61057181611122565b50565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190611a5c565b6001600160a01b0316336001600160a01b03161461061b5760405162461bcd60e51b815260040161041090611a79565b6106258282610f84565b5050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069a9190611ac3565b6106b65760405162461bcd60e51b815260040161041090611ae5565b6001548181161461072f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600180546000918291811614156107c25760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707161461083a5760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b6108448484611227565b60335460006108556103e883611b43565b905060006103e8610864611309565b61086e9190611b43565b9050600061087c8783611b5b565b9050806108898489611b72565b6108939190611b91565b9550856108f95760405162461bcd60e51b815260206004820152602e60248201527f5374726174656779426173652e6465706f7369743a206e65775368617265732060448201526d63616e6e6f74206265207a65726f60901b6064820152608401610410565b6109038685611b43565b603355505050505092915050565b600054610100900460ff16158080156109315750600054600160ff909116105b8061094b5750303b15801561094b575060005460ff166001145b6109675760405162461bcd60e51b815260040161041090611a0e565b6000805460ff19166001179055801561098a576000805461ff0019166101001790555b6109948383611091565b80156109da576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006109ed6102e783610b43565b92915050565b60005460405163237dfb4760e11b8152336004820152620100009091046001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611ac3565b610a805760405162461bcd60e51b815260040161041090611ae5565b600019600181905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000806103e8603354610ad29190611b43565b905060006103e8610ae1611309565b610aeb9190611b43565b905081610af88583611b72565b610b029190611b91565b949350505050565b60006109ed82610da1565b60006109ed6103a283610b43565b60606040518060800160405280604d8152602001611be9604d9139905090565b604051633d3f06c960e11b81526001600160a01b0382811660048301523060248301526000917f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570790911690637a7e0d9290604401602060405180830381865afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ed9190611bb3565b6001805460029081161415610c2b5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b6044820152606401610410565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614610ca35760405162461bcd60e51b815260206004820181905260248201527f5374726174656779426173652e6f6e6c7953747261746567794d616e616765726044820152606401610410565b610cae84848461137b565b60335480831115610d3d5760405162461bcd60e51b815260206004820152604d60248201527f5374726174656779426173652e77697468647261773a20616d6f756e7453686160448201527f726573206d757374206265206c657373207468616e206f7220657175616c207460648201526c6f20746f74616c53686172657360981b608482015260a401610410565b6000610d4b6103e883611b43565b905060006103e8610d5a611309565b610d649190611b43565b9050600082610d738784611b72565b610d7d9190611b91565b9050610d898685611b5b565b603355610d978888836113fe565b5050505050505050565b6000806103e8603354610db49190611b43565b905060006103e8610dc3611309565b610dcd9190611b43565b905080610af88386611b72565b60006109ed82610abf565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5c9190611a5c565b6001600160a01b0316336001600160a01b031614610e8c5760405162461bcd60e51b815260040161041090611a79565b600154198119600154191614610f0a5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610410565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610762565b61057181604051602401610f55919061199a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052611412565b60645460408051918252602082018490527ff97ed4e083acac67830025ecbc756d8fe847cdbdca4cee3fe1e128e98b54ecb5910160405180910390a160655460408051918252602082018390527f6ab181e0440bfbf4bacdf2e99674735ce6638005490688c5f994f5399353e452910160405180910390a1808211156110865760405162461bcd60e51b815260206004820152604b60248201527f53747261746567794261736554564c4c696d6974732e5f73657454564c4c696d60448201527f6974733a206d61785065724465706f7369742065786365656473206d6178546f60648201526a74616c4465706f7369747360a81b608482015260a401610410565b606491909155606555565b600054610100900460ff166110fc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610410565b603280546001600160a01b0319166001600160a01b038416179055610625816000611433565b6001600160a01b0381166111b05760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610410565b600054604080516001600160a01b03620100009093048316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6064548111156112915760405162461bcd60e51b815260206004820152602f60248201527f53747261746567794261736554564c4c696d6974733a206d617820706572206460448201526e195c1bdcda5d08195e18d959591959608a1b6064820152608401610410565b60655461129c611309565b11156112ff5760405162461bcd60e51b815260206004820152602c60248201527f53747261746567794261736554564c4c696d6974733a206d6178206465706f7360448201526b1a5d1cc8195e18d95959195960a21b6064820152608401610410565b610625828261151f565b6032546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113769190611bb3565b905090565b6032546001600160a01b038381169116146109da5760405162461bcd60e51b815260206004820152603b60248201527f5374726174656779426173652e77697468647261773a2043616e206f6e6c792060448201527f77697468647261772074686520737472617465677920746f6b656e00000000006064820152608401610410565b6109da6001600160a01b038316848361159b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000546201000090046001600160a01b031615801561145a57506001600160a01b03821615155b6114dc5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610410565b600181905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261062582611122565b6032546001600160a01b038381169116146106255760405162461bcd60e51b815260206004820152603660248201527f5374726174656779426173652e6465706f7369743a2043616e206f6e6c79206460448201527532b837b9b4ba103ab73232b9363cb4b733aa37b5b2b760511b6064820152608401610410565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401526109da9286929160009161162b9185169084906116a8565b8051909150156109da57808060200190518101906116499190611ac3565b6109da5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610410565b60606116b784846000856116c1565b90505b9392505050565b6060824710156117225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610410565b6001600160a01b0385163b6117795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610410565b600080866001600160a01b031685876040516117959190611bcc565b60006040518083038185875af1925050503d80600081146117d2576040519150601f19603f3d011682016040523d82523d6000602084013e6117d7565b606091505b50915091506117e78282866117f2565b979650505050505050565b606083156118015750816116ba565b8251156118115782518084602001fd5b8160405162461bcd60e51b8152600401610410919061199a565b6001600160a01b038116811461057157600080fd5b6000806000806080858703121561185657600080fd5b8435935060208501359250604085013561186f8161182b565b9150606085013561187f8161182b565b939692955090935050565b60006020828403121561189c57600080fd5b81356116ba8161182b565b600080604083850312156118ba57600080fd5b50508035926020909101359150565b6000602082840312156118db57600080fd5b5035919050565b600080604083850312156118f557600080fd5b82356119008161182b565b946020939093013593505050565b6000806040838503121561192157600080fd5b823561192c8161182b565b9150602083013561193c8161182b565b809150509250929050565b60006020828403121561195957600080fd5b813560ff811681146116ba57600080fd5b60005b8381101561198557818101518382015260200161196d565b83811115611994576000848401525b50505050565b60208152600082518060208401526119b981604085016020870161196a565b601f01601f19169190910160400192915050565b6000806000606084860312156119e257600080fd5b83356119ed8161182b565b925060208401356119fd8161182b565b929592945050506040919091013590565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215611a6e57600080fd5b81516116ba8161182b565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611ad557600080fd5b815180151581146116ba57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115611b5657611b56611b2d565b500190565b600082821015611b6d57611b6d611b2d565b500390565b6000816000190483118215151615611b8c57611b8c611b2d565b500290565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611bc557600080fd5b5051919050565b60008251611bde81846020870161196a565b919091019291505056fe4261736520537472617465677920696d706c656d656e746174696f6e20746f20696e68657269742066726f6d20666f72206d6f726520636f6d706c657820696d706c656d656e746174696f6e73a2646970667358221220a89cdda625de6600f138ef9c77378533a2536b7715b55abf2eebb15ea238933f64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x36c02da8a0983159322a80ffe9f24b1acff8b570":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x7969c5ed335650692bc04293b07f5bf2e7a673c0","0x3640069662c3880c0f70896f1ea7ab948dbe8edba5c22fb35137874584edfab7":"0x1","0x6fe317c46e5eb99b18a02254581a535777feba1137e4ab98748fd94c55e2f16f":"0x1","0x7d1c12449d2a49ce59962642fe4a8c74e48ad3f56a716a3bc12ada6bf75e155d":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xe02835104633dd65c916ccb9978ae220ed27db9f2ae0915bd6a5594cfbeedeb8":"0x1"}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4826533b4897376654bb4d4ad88b7fafd0c98528":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea26469706673582212208a1326bc5b69f9ecf1c6c0d757e50103bb848a7d9d4383fa44ee54e7b71a39a464736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0x4c5859f0f772848b2d91f1d83e2fe57935348029":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80633563b0d1146100515780634f739f741461007a5780635c1556621461009a578063cefdc1d4146100ba575b600080fd5b61006461005f366004611172565b6100db565b60405161007191906112cd565b60405180910390f35b61008d610088366004611332565b610571565b6040516100719190611435565b6100ad6100a8366004611513565b610c9b565b60405161007191906115c4565b6100cd6100c8366004611608565b610e63565b60405161007192919061164a565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610141919061166b565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a7919061166b565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020d919061166b565b9050600086516001600160401b0381111561022a5761022a61110a565b60405190808252806020026020018201604052801561025d57816020015b60608152602001906001900390816102485790505b50905060005b875181101561056557600088828151811061028057610280611688565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa1580156102e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610309919081019061169e565b905080516001600160401b038111156103245761032461110a565b60405190808252806020026020018201604052801561036f57816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103425790505b5084848151811061038257610382611688565b602002602001018190525060005b815181101561054f576040518060600160405280876001600160a01b03166347b314e88585815181106103c5576103c5611688565b60200260200101516040518263ffffffff1660e01b81526004016103eb91815260200190565b602060405180830381865afa158015610408573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042c919061166b565b6001600160a01b0316815260200183838151811061044c5761044c611688565b60200260200101518152602001896001600160a01b031663fa28c62785858151811061047a5761047a611688565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa1580156104d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fa919061172e565b6001600160601b031681525085858151811061051857610518611688565b6020026020010151828151811061053157610531611688565b602002602001018190525080806105479061176d565b915050610390565b505050808061055d9061176d565b915050610263565b50979650505050505050565b61059c6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610600919061166b565b905061062d6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061065d908b9089908990600401611788565b600060405180830381865afa15801561067a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106a291908101906117d2565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906106d4908b908b908b90600401611889565b600060405180830381865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261071991908101906117d2565b6040820152856001600160401b038111156107365761073661110a565b60405190808252806020026020018201604052801561076957816020015b60608152602001906001900390816107545790505b50606082015260005b60ff8116871115610bac576000856001600160401b038111156107975761079761110a565b6040519080825280602002602001820160405280156107c0578160200160208202803683370190505b5083606001518360ff16815181106107da576107da611688565b602002602001018190525060005b86811015610aac5760008c6001600160a01b03166304ec63518a8a8581811061081357610813611688565b905060200201358e8860000151868151811061083157610831611688565b60200260200101516040518463ffffffff1660e01b815260040161086e9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561088b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108af91906118b2565b90506001600160c01b0381166109575760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a40160405180910390fd5b8a8a8560ff1681811061096c5761096c611688565b6001600160c01b03841692013560f81c9190911c600190811614159050610a9957856001600160a01b031663dd9846b98a8a858181106109ae576109ae611688565b905060200201358d8d8860ff168181106109ca576109ca611688565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4491906118db565b85606001518560ff1681518110610a5d57610a5d611688565b60200260200101518481518110610a7657610a76611688565b63ffffffff9092166020928302919091019091015282610a958161176d565b9350505b5080610aa48161176d565b9150506107e8565b506000816001600160401b03811115610ac757610ac761110a565b604051908082528060200260200182016040528015610af0578160200160208202803683370190505b50905060005b82811015610b715784606001518460ff1681518110610b1757610b17611688565b60200260200101518181518110610b3057610b30611688565b6020026020010151828281518110610b4a57610b4a611688565b63ffffffff9092166020928302919091019091015280610b698161176d565b915050610af6565b508084606001518460ff1681518110610b8c57610b8c611688565b602002602001018190525050508080610ba4906118f8565b915050610772565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c11919061166b565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c90610c44908b908b908e90600401611918565b600060405180830381865afa158015610c61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c8991908101906117d2565b60208301525098975050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401610ccd929190611942565b600060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d1291908101906117d2565b9050600084516001600160401b03811115610d2f57610d2f61110a565b604051908082528060200260200182016040528015610d58578160200160208202803683370190505b50905060005b8551811015610e5957866001600160a01b03166304ec6351878381518110610d8857610d88611688565b602002602001015187868581518110610da357610da3611688565b60200260200101516040518463ffffffff1660e01b8152600401610de09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906118b2565b6001600160c01b0316828281518110610e3c57610e3c611688565b602090810291909101015280610e518161176d565b915050610d5e565b5095945050505050565b6040805160018082528183019092526000916060918391602080830190803683370190505090508481600081518110610e9e57610e9e611688565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e90610eda9088908690600401611942565b600060405180830381865afa158015610ef7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f1f91908101906117d2565b600081518110610f3157610f31611688565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015610f9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc191906118b2565b6001600160c01b031690506000610fd782610ff5565b905081610fe58a838a6100db565b9550955050505050935093915050565b6060600080611003846110c1565b61ffff166001600160401b0381111561101e5761101e61110a565b6040519080825280601f01601f191660200182016040528015611048576020820181803683370190505b5090506000805b825182108015611060575061010081105b156110b7576001811b9350858416156110a7578060f81b83838151811061108957611089611688565b60200101906001600160f81b031916908160001a9053508160010191505b6110b08161176d565b905061104f565b5090949350505050565b6000805b82156110ec576110d6600184611996565b90921691806110e4816119ad565b9150506110c5565b92915050565b6001600160a01b038116811461110757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156111485761114861110a565b604052919050565b63ffffffff8116811461110757600080fd5b803561116d81611150565b919050565b60008060006060848603121561118757600080fd5b8335611192816110f2565b92506020848101356001600160401b03808211156111af57600080fd5b818701915087601f8301126111c357600080fd5b8135818111156111d5576111d561110a565b6111e7601f8201601f19168501611120565b915080825288848285010111156111fd57600080fd5b808484018584013760008482840101525080945050505061122060408501611162565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b868110156112bf578385038a52825180518087529087019087870190845b818110156112aa57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101611266565b50509a87019a95505091850191600101611248565b509298975050505050505050565b6020815260006112e06020830184611229565b9392505050565b60008083601f8401126112f957600080fd5b5081356001600160401b0381111561131057600080fd5b6020830191508360208260051b850101111561132b57600080fd5b9250929050565b6000806000806000806080878903121561134b57600080fd5b8635611356816110f2565b9550602087013561136681611150565b945060408701356001600160401b038082111561138257600080fd5b818901915089601f83011261139657600080fd5b8135818111156113a557600080fd5b8a60208285010111156113b757600080fd5b6020830196508095505060608901359150808211156113d557600080fd5b506113e289828a016112e7565b979a9699509497509295939492505050565b600081518084526020808501945080840160005b8381101561142a57815163ffffffff1687529582019590820190600101611408565b509495945050505050565b60006020808352835160808285015261145160a08501826113f4565b905081850151601f198086840301604087015261146e83836113f4565b9250604087015191508086840301606087015261148b83836113f4565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b828110156114e257848783030184526114d08287516113f4565b958801959388019391506001016114b6565b509998505050505050505050565b60006001600160401b038211156115095761150961110a565b5060051b60200190565b60008060006060848603121561152857600080fd5b8335611533816110f2565b92506020848101356001600160401b0381111561154f57600080fd5b8501601f8101871361156057600080fd5b803561157361156e826114f0565b611120565b81815260059190911b8201830190838101908983111561159257600080fd5b928401925b828410156115b057833582529284019290840190611597565b809650505050505061122060408501611162565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b60008060006060848603121561161d57600080fd5b8335611628816110f2565b925060208401359150604084013561163f81611150565b809150509250925092565b8281526040602082015260006116636040830184611229565b949350505050565b60006020828403121561167d57600080fd5b81516112e0816110f2565b634e487b7160e01b600052603260045260246000fd5b600060208083850312156116b157600080fd5b82516001600160401b038111156116c757600080fd5b8301601f810185136116d857600080fd5b80516116e661156e826114f0565b81815260059190911b8201830190838101908783111561170557600080fd5b928401925b828410156117235783518252928401929084019061170a565b979650505050505050565b60006020828403121561174057600080fd5b81516001600160601b03811681146112e057600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561178157611781611757565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156117b557600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156117e557600080fd5b82516001600160401b038111156117fb57600080fd5b8301601f8101851361180c57600080fd5b805161181a61156e826114f0565b81815260059190911b8201830190838101908783111561183957600080fd5b928401925b8284101561172357835161185181611150565b8252928401929084019061183e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006118a9604083018486611860565b95945050505050565b6000602082840312156118c457600080fd5b81516001600160c01b03811681146112e057600080fd5b6000602082840312156118ed57600080fd5b81516112e081611150565b600060ff821660ff81141561190f5761190f611757565b60010192915050565b60408152600061192c604083018587611860565b905063ffffffff83166020830152949350505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156119895784518352938301939183019160010161196d565b5090979650505050505050565b6000828210156119a8576119a8611757565b500390565b600061ffff808316818114156119c5576119c5611757565b600101939250505056fea2646970667358221220989e57de351772a7f933bb7234d90ef2f41b46d0a8e8b45b21148630c71d925e64736f6c634300080c0033","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x82e01223d51eb87e16a03e24687edf0f294da6f1","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0x8"}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122054cc08528c85698c827d34c7e7f3bb44ba8e6884f2ac3e1af765d47dbde707b664736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x5fc8d32690cc91d4c39d9d3abcbd16989f875707":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x97":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x98":"0x0","0xc9":"0x8142bc69583e169802e72d5824b8ed949e78cca596c0561765426c8c058957fd","0xcb":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xdcd1bf9a1b36ce34237eeafef220932846bcd82","0x69f9147759798decd1797da71845df896876bd17efcd483aa8482ae4658bf0a0":"0x1","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0xe6ed2999f13697c9ffb91df2afc9d713c528d12f30b6022f27ccddb8723728d2":"0x0"}},"0x610178da211fef7d417bc0e6fed39f05609ad788":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220a22223d3e2a2d861ad54e68b7bc44b4d82a5a12a0bcca5c3404502bb1b430c5c64736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x1":"0x8a791620dd6260079bf849dc5567adc3f2fdc318"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x70e0ba845a1a0f2da3359c97e0285013525ffc49":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061006b5760003560e01c8063204e1c7a14610070578063715018a6146100a65780637eff275e146100bd5780638da5cb5b146100dd5780639623609d146100fb57806399a88ec41461010e578063f2fde38b1461012e578063f3b7dead1461014e575b600080fd5b34801561007c57600080fd5b5061009061008b366004610483565b61016e565b60405161009d91906104a7565b60405180910390f35b3480156100b257600080fd5b506100bb6101ff565b005b3480156100c957600080fd5b506100bb6100d83660046104bb565b610213565b3480156100e957600080fd5b506000546001600160a01b0316610090565b6100bb61010936600461050a565b61027d565b34801561011a57600080fd5b506100bb6101293660046104bb565b6102ec565b34801561013a57600080fd5b506100bb610149366004610483565b610320565b34801561015a57600080fd5b50610090610169366004610483565b61039e565b6000806000836001600160a01b031660405161019490635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101cf576040519150601f19603f3d011682016040523d82523d6000602084013e6101d4565b606091505b5091509150816101e357600080fd5b808060200190518101906101f791906105e0565b949350505050565b6102076103c4565b610211600061041e565b565b61021b6103c4565b6040516308f2839760e41b81526001600160a01b03831690638f283970906102479084906004016104a7565b600060405180830381600087803b15801561026157600080fd5b505af1158015610275573d6000803e3d6000fd5b505050505050565b6102856103c4565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b590869086906004016105fd565b6000604051808303818588803b1580156102ce57600080fd5b505af11580156102e2573d6000803e3d6000fd5b5050505050505050565b6102f46103c4565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe6906102479084906004016104a7565b6103286103c4565b6001600160a01b0381166103925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039b8161041e565b50565b6000806000836001600160a01b0316604051610194906303e1469160e61b815260040190565b6000546001600160a01b031633146102115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610389565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461039b57600080fd5b60006020828403121561049557600080fd5b81356104a08161046e565b9392505050565b6001600160a01b0391909116815260200190565b600080604083850312156104ce57600080fd5b82356104d98161046e565b915060208301356104e98161046e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561051f57600080fd5b833561052a8161046e565b9250602084013561053a8161046e565b9150604084013567ffffffffffffffff8082111561055757600080fd5b818601915086601f83011261056b57600080fd5b81358181111561057d5761057d6104f4565b604051601f8201601f19908116603f011681019083821181831017156105a5576105a56104f4565b816040528281528960208487010111156105be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f257600080fd5b81516104a08161046e565b60018060a01b038316815260006020604081840152835180604085015260005b818110156106395785810183015185820160600152820161061d565b8181111561064b576000606083870101525b50601f01601f19169290920160600194935050505056fea26469706673582212200eedf560ba2321bf32a2a337105c715afa9340aaee48022babd6824214e3416964736f6c634300080c0033","storage":{"0x0":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"}},"0x7969c5ed335650692bc04293b07f5bf2e7a673c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061006d5760003560e01c8063046a0654146100725780630ca192c71461009c5780632e8da829146100b15780636d14a987146100e457806389a652ce14610123578063af99fa0e1461013e578063bfe1073814610166575b600080fd5b610085610080366004610a21565b61016e565b604051610093929190610aaa565b60405180910390f35b6100af6100aa366004610af0565b610394565b005b6100d46100bf366004610b2e565b60026020526000908152604090205460ff1681565b6040519015158152602001610093565b61010b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516001600160a01b039091168152602001610093565b6001546040516001600160401b039091168152602001610093565b61015161014c366004610b4b565b610535565b60405163ffffffff9091168152602001610093565b6100af61056f565b60608060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f59190610b64565b905060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027b9190610b64565b905060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103019190610b64565b90506001600160401b0386161561036b5761036860016103218189610b97565b6001600160401b03168154811061033a5761033a610bbf565b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1684848461073a565b94505b61038a6001876001600160401b03168154811061033a5761033a610bbf565b9350505050915091565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104169190610b64565b6001600160a01b0316336001600160a01b0316146104d65760405162461bcd60e51b815260206004820152606660248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c79436f6f7264696e61746f724f776e65723a2063616c6c6572206973206e6f60648201527f7420746865206f776e6572206f6620746865207265676973747279436f6f726460848201526534b730ba37b960d11b60a482015260c4015b60405180910390fd5b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591519182527f2b83db0a8941bdf64ef44d95a1a397fdbcb6fd1b93ed421b73d00ddcecf5c793910160405180910390a25050565b6001818154811061054557600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146106335760405162461bcd60e51b815260206004820152605d60248201527f5346464c4f70657261746f7253657455706461746552656769737472792e6f6e60448201527f6c795265676973747279436f6f7264696e61746f723a2063616c6c657220697360648201527f206e6f742074686520726567697374727920636f6f7264696e61746f72000000608482015260a4016104cd565b6001546001600160401b0381161580159061069557504360016106568184610b97565b6001600160401b03168154811061066f5761066f610bbf565b6000918252602090912060088204015460079091166004026101000a900463ffffffff16145b1561069d5750565b426001600160401b0316816001600160401b03167fc48e61b12810d368042f781cfb732d0abb725377d90b600f78e0cec7dbd0c28d60405160405180910390a3506001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf66008820401805460079092166004026101000a63ffffffff818102199093164390931602919091179055565b604051638902624560e01b815260006004820181905263ffffffff861660248301526060916001600160a01b03851690638902624590604401600060405180830381865afa158015610790573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b89190810190610c1b565b9050600081516001600160401b038111156107d5576107d5610bd5565b60405190808252806020026020018201604052801561082957816020015b60408051608081018252600091810182815260608201839052815260208101919091528152602001906001900390816107f35790505b50905060005b8251811015610a1657600083828151811061084c5761084c610bbf565b602002602001015190506000866001600160a01b03166347b314e8836040518263ffffffff1660e01b815260040161088691815260200190565b602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c79190610b64565b604051637ff81a8760e01b81526001600160a01b038083166004830152919250600091891690637ff81a8790602401606060405180830381865afa158015610913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109379190610cc0565b5060405163fa28c62760e01b81526004810185905260006024820181905263ffffffff8e1660448301529192506001600160a01b038c169063fa28c62790606401602060405180830381865afa158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190610d26565b90506040518060400160405280838152602001826001600160601b03166001600160801b03168152508686815181106109f4576109f4610bbf565b6020026020010181905250505050508080610a0e90610d4f565b91505061082f565b509695505050505050565b600060208284031215610a3357600080fd5b81356001600160401b0381168114610a4a57600080fd5b9392505050565b600081518084526020808501945080840160005b83811015610a9f578151805180518952840151848901528301516001600160801b0316604088015260609096019590820190600101610a65565b509495945050505050565b604081526000610abd6040830185610a51565b8281036020840152610acf8185610a51565b95945050505050565b6001600160a01b0381168114610aed57600080fd5b50565b60008060408385031215610b0357600080fd5b8235610b0e81610ad8565b915060208301358015158114610b2357600080fd5b809150509250929050565b600060208284031215610b4057600080fd5b8135610a4a81610ad8565b600060208284031215610b5d57600080fd5b5035919050565b600060208284031215610b7657600080fd5b8151610a4a81610ad8565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0383811690831681811015610bb757610bb7610b81565b039392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715610c1357610c13610bd5565b604052919050565b60006020808385031215610c2e57600080fd5b82516001600160401b0380821115610c4557600080fd5b818501915085601f830112610c5957600080fd5b815181811115610c6b57610c6b610bd5565b8060051b9150610c7c848301610beb565b8181529183018401918481019088841115610c9657600080fd5b938501935b83851015610cb457845182529385019390850190610c9b565b98975050505050505050565b6000808284036060811215610cd457600080fd5b6040811215610ce257600080fd5b50604051604081018181106001600160401b0382111715610d0557610d05610bd5565b60409081528451825260208086015190830152939093015192949293505050565b600060208284031215610d3857600080fd5b81516001600160601b0381168114610a4a57600080fd5b6000600019821415610d6357610d63610b81565b506001019056fea2646970667358221220c83f0a5dd73f6b3f404f29c9e8cf82d0c35e2eecbc2a5c48bee1657e98a06e1964736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x7a2088a1bfc9d81c55368ae168c2c02570cb814f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x7322c24752f79c05ffd1e2a6fcb97020c1c264f1","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x809d550fca64d94bd9f66e60752a544199cfac3d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0xeb5be412f275a18f6e4d622aee4ff40b21467c926224771b782d4c095d1444b":"0x8","0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x95401dc811bb5740090279ba06cfa8fcf6113778","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x1291be112d480055dafd8a610b7d1e203891c274","0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff":"0x1","0xa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49":"0x1","0xad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5":"0x0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49","0xcfb339bd1c51c488f6134f4ac63d1594afad827b3401c3fc51ed1da74a8ca14e":"0xde0b6b3a764000095401dc811bb5740090279ba06cfa8fcf6113778"}},"0x82e01223d51eb87e16a03e24687edf0f294da6f1":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100b35760003560e01c8063890262451161007157806389026245146101b3578063a48bb0ac146101d3578063bd29b8cd146101e6578063caa3cd76146101f9578063e2e685801461020f578063f34109221461025557600080fd5b8062bff04d146100b857806312d1d74d146100e157806326d941f2146101155780632ed583e51461012a5780636d14a9871461013d5780638121906f1461017c575b600080fd5b6100cb6100c6366004610ec7565b610268565b6040516100d89190610f43565b60405180910390f35b6100f46100ef366004610fb7565b6103ca565b60408051825163ffffffff16815260209283015192810192909252016100d8565b610128610123366004610fea565b610410565b005b6100f4610138366004611005565b610534565b6101647f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6040516001600160a01b0390911681526020016100d8565b61018f61018a366004610fea565b6105ba565b60408051825163ffffffff90811682526020938401511692810192909252016100d8565b6101c66101c1366004610fb7565b610601565b6040516100d89190611048565b61018f6101e1366004610fb7565b61076b565b6101286101f4366004610ec7565b6107e2565b610201600081565b6040519081526020016100d8565b61024061021d366004611080565b600160209081526000928352604080842090915290825290205463ffffffff1681565b60405163ffffffff90911681526020016100d8565b610240610263366004610fea565b6108f0565b6060336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146102bb5760405162461bcd60e51b81526004016102b2906110aa565b60405180910390fd5b60008267ffffffffffffffff8111156102d6576102d661111d565b6040519080825280602002602001820160405280156102ff578160200160208202803683370190505b50905060005b838110156103bf57600085858381811061032157610321611133565b919091013560f81c60008181526003602052604090205490925090508061035a5760405162461bcd60e51b81526004016102b290611149565b60006103658361090f565b905061037c89846103776001856111b4565b610a08565b8085858151811061038f5761038f611133565b602002602001019063ffffffff16908163ffffffff168152505050505080806103b7906111d9565b915050610305565b5090505b9392505050565b60408051808201909152600080825260208201526103e88383610a92565b60408051808201909152815463ffffffff168152600190910154602082015290505b92915050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146104585760405162461bcd60e51b81526004016102b2906110aa565b60ff8116600090815260036020526040902054156104d25760405162461bcd60e51b815260206004820152603160248201527f496e64657852656769737472792e63726561746551756f72756d3a2071756f72604482015270756d20616c72656164792065786973747360781b60648201526084016102b2565b60ff166000908152600360209081526040808320815180830190925263ffffffff438116835282840185815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055565b604080518082019091526000808252602082015260ff8416600090815260026020908152604080832063ffffffff8088168552925290912080549091841690811061058157610581611133565b600091825260209182902060408051808201909152600290920201805463ffffffff168252600101549181019190915290509392505050565b60408051808201909152600080825260208201526105d782610aea565b60408051808201909152905463ffffffff8082168352600160201b90910416602082015292915050565b6060600061060f8484610b2c565b905060008163ffffffff1667ffffffffffffffff8111156106325761063261111d565b60405190808252806020026020018201604052801561065b578160200160208202803683370190505b50905060005b8263ffffffff168110156107625761067a868287610c61565b82828151811061068c5761068c611133565b6020026020010181815250506000801b8282815181106106ae576106ae611133565b602002602001015114156107505760405162461bcd60e51b815260206004820152605d60248201527f496e64657852656769737472792e6765744f70657261746f724c69737441744260448201527f6c6f636b4e756d6265723a206f70657261746f7220646f6573206e6f7420657860648201527f6973742061742074686520676976656e20626c6f636b206e756d626572000000608482015260a4016102b2565b8061075a816111d9565b915050610661565b50949350505050565b604080518082019091526000808252602082015260ff83166000908152600360205260409020805463ffffffff84169081106107a9576107a9611133565b60009182526020918290206040805180820190915291015463ffffffff8082168352600160201b90910416918101919091529392505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf161461082a5760405162461bcd60e51b81526004016102b2906110aa565b60005b818110156108ea57600083838381811061084957610849611133565b919091013560f81c6000818152600360205260409020549092509050806108825760405162461bcd60e51b81526004016102b290611149565b60ff8216600090815260016020908152604080832089845290915281205463ffffffff16906108b084610d38565b905060006108be8583610d72565b90508089146108d2576108d2818685610a08565b505050505080806108e2906111d9565b91505061082d565b50505050565b60006108fb82610aea565b54600160201b900463ffffffff1692915050565b60008061091b83610aea565b805490915060009061093b90600160201b900463ffffffff1660016111f4565b9050610948848383610d9c565b60ff84166000908152600260205260408120906109666001846111b4565b63ffffffff1681526020810191909152604001600020546103c35760ff841660009081526002602052604081209061099f6001846111b4565b63ffffffff908116825260208083019390935260409182016000908120835180850190945243831684528385018281528154600180820184559284529590922093516002909502909301805463ffffffff19169490921693909317815591519101559392505050565b6000610a148383610a92565b9050610a2283838387610e3c565b60ff83166000818152600160209081526040808320888452825291829020805463ffffffff191663ffffffff871690811790915582519384529083015285917f6ee1e4f4075f3d067176140d34e87874244dd273294c05b2218133e49a2ba6f6910160405180910390a250505050565b60ff8216600090815260026020908152604080832063ffffffff851684529091528120805490610ac360018361121c565b81548110610ad357610ad3611133565b906000526020600020906002020191505092915050565b60ff81166000908152600360205260408120805490610b0a60018361121c565b81548110610b1a57610b1a611133565b90600052602060002001915050919050565b60ff8216600090815260036020526040812054805b8015610bd45760ff85166000908152600360205260408120610b6460018461121c565b81548110610b7457610b74611133565b60009182526020918290206040805180820190915291015463ffffffff808216808452600160201b90920481169383019390935290925090861610610bc15760200151925061040a915050565b5080610bcc81611233565b915050610b41565b5060405162461bcd60e51b815260206004820152605560248201527f496e64657852656769737472792e5f6f70657261746f72436f756e744174426c60448201527f6f636b4e756d6265723a2071756f72756d20646964206e6f742065786973742060648201527430ba1033b4bb32b710313637b1b590373ab6b132b960591b608482015260a4016102b2565b60ff8316600090815260026020908152604080832063ffffffff86168452909152812054805b8015610d2c5760ff8616600090815260026020908152604080832063ffffffff891684529091528120610cbb60018461121c565b81548110610ccb57610ccb611133565b600091825260209182902060408051808201909152600290920201805463ffffffff9081168084526001909201549383019390935290925090861610610d19576020015192506103c3915050565b5080610d2481611233565b915050610c87565b50600095945050505050565b600080610d4483610aea565b8054909150600090610d6590600190600160201b900463ffffffff166111b4565b90506103c3848383610d9c565b600080610d7f8484610a92565b6001810154909150610d948585846000610e3c565b949350505050565b81544363ffffffff90811691161415610dd357815463ffffffff8216600160201b0267ffffffff0000000019909116178255505050565b60ff83166000908152600360209081526040808320815180830190925263ffffffff438116835285811683850190815282546001810184559286529390942091519101805492518416600160201b0267ffffffffffffffff199093169190931617179055505050565b81544363ffffffff90811691161415610e5b57600182018190556108ea565b60ff93909316600090815260026020818152604080842063ffffffff968716855282528084208151808301909252438716825281830197885280546001808201835591865292909420905191909202909101805463ffffffff1916919094161783559251919092015550565b600080600060408486031215610edc57600080fd5b83359250602084013567ffffffffffffffff80821115610efb57600080fd5b818601915086601f830112610f0f57600080fd5b813581811115610f1e57600080fd5b876020828501011115610f3057600080fd5b6020830194508093505050509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835163ffffffff1683529284019291840191600101610f5f565b50909695505050505050565b803560ff81168114610f9e57600080fd5b919050565b803563ffffffff81168114610f9e57600080fd5b60008060408385031215610fca57600080fd5b610fd383610f8d565b9150610fe160208401610fa3565b90509250929050565b600060208284031215610ffc57600080fd5b6103c382610f8d565b60008060006060848603121561101a57600080fd5b61102384610f8d565b925061103160208501610fa3565b915061103f60408501610fa3565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015610f8157835183529284019291840191600101611064565b6000806040838503121561109357600080fd5b61109c83610f8d565b946020939093013593505050565b6020808252604d908201527f496e64657852656769737472792e6f6e6c795265676973747279436f6f72646960408201527f6e61746f723a2063616c6c6572206973206e6f7420746865207265676973747260608201526c3c9031b7b7b93234b730ba37b960991b608082015260a00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60208082526035908201527f496e64657852656769737472792e72656769737465724f70657261746f723a206040820152741c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd605a1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff838116908316818110156111d1576111d161119e565b039392505050565b60006000198214156111ed576111ed61119e565b5060010190565b600063ffffffff8083168185168083038211156112135761121361119e565b01949350505050565b60008282101561122e5761122e61119e565b500390565b6000816112425761124261119e565b50600019019056fea26469706673582212204ee73059b3b9231f5aa2b00ad155fdb9c8d95ffc311fc1a88b56d665dd79ce7764736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x851356ae760d987e095750cceb3bc6014560891c":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea2646970667358221220fd5e700a23418fb34398844556f26001a24356fb1d6fe8c5b0a6ddcc2940deb764736f6c634300080c0033","storage":{}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101855760003560e01c806374cdd798116100d1578063c49074421161008a578063e251ef5211610064578063e251ef5214610563578063e2c8344514610583578063f2882461146105a3578063fe80b087146105d757600080fd5b8063c490744214610503578063c4d66de814610523578063dda3346c1461054357600080fd5b806374cdd7981461044057806387e0d289146104745780639b4e46341461049b578063a50600f4146104ae578063b522538a146104ce578063baa7145a146104ee57600080fd5b806334bea20a1161013e57806358eaee791161011857806358eaee791461038f5780635d3f65b6146103bc5780636fcd0e53146103dc5780637439841f1461040957600080fd5b806334bea20a146103005780633f65cf191461033b5780634665bcda1461035b57600080fd5b80630b18ff66146101db5780630cd4649e146102185780631a5057be1461022f5780631d905d5c146102635780633106ab53146102af5780633474aa16146102e057600080fd5b366101d657346037600082825461019c9190614b54565b90915550506040513481527f6fdd3dbdb173299608c0aa9f368735857c8842b581f8389238bf05bd04b3bf499060200160405180910390a1005b600080fd5b3480156101e757600080fd5b506033546101fb906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561022457600080fd5b5061022d6105fb565b005b34801561023b57600080fd5b506101fb7f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe681565b34801561026f57600080fd5b506102977f000000000000000000000000000000000000000000000000bc16d674ec80000081565b6040516001600160401b03909116815260200161020f565b3480156102bb57600080fd5b506034546102d090600160401b900460ff1681565b604051901515815260200161020f565b3480156102ec57600080fd5b50603454610297906001600160401b031681565b34801561030c57600080fd5b506102d061031b366004614b91565b603560209081526000928352604080842090915290825290205460ff1681565b34801561034757600080fd5b5061022d610356366004614c24565b610764565b34801561036757600080fd5b506101fb7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b34801561039b57600080fd5b506103af6103aa366004614d35565b610c05565b60405161020f9190614dae565b3480156103c857600080fd5b50603854610297906001600160401b031681565b3480156103e857600080fd5b506103fc6103f7366004614dbc565b610c6a565b60405161020f9190614dd5565b34801561041557600080fd5b506103af610424366004614dbc565b600090815260366020526040902054600160c01b900460ff1690565b34801561044c57600080fd5b506101fb7f000000000000000000000000424242424242424242424242424242424242424281565b34801561048057600080fd5b5060335461029790600160a01b90046001600160401b031681565b61022d6104a9366004614e1d565b610d17565b3480156104ba57600080fd5b5061022d6104c9366004614e90565b610ec4565b3480156104da57600080fd5b506103fc6104e9366004614d35565b611293565b3480156104fa57600080fd5b5061022d611386565b34801561050f57600080fd5b5061022d61051e366004614f3a565b6113f1565b34801561052f57600080fd5b5061022d61053e366004614f66565b61162e565b34801561054f57600080fd5b5061022d61055e366004615080565b611806565b34801561056f57600080fd5b5061022d61057e366004615151565b6119d9565b34801561058f57600080fd5b5061022d61059e366004614f3a565b611da4565b3480156105af57600080fd5b506102977f0000000000000000000000000000000000000000000000000000000065156ac081565b3480156105e357600080fd5b506105ed60375481565b60405190815260200161020f565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610687919061524c565b156106ad5760405162461bcd60e51b81526004016106a49061526e565b60405180910390fd5b6033546001600160a01b031633146106d75760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156107015760405162461bcd60e51b81526004016106a490615313565b6034805460ff60401b1916600160401b179055603354610729906001600160a01b0316611f87565b6033546040516001600160a01b03909116907fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a250565b6033546001600160a01b0316331461078e5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600260048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa1580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a919061524c565b156108375760405162461bcd60e51b81526004016106a49061526e565b60335489906001600160401b03600160a01b90910481169082161161086e5760405162461bcd60e51b81526004016106a490615362565b603454600160401b900460ff166108e65760405162461bcd60e51b815260206004820152603660248201527f456967656e506f642e686173456e61626c656452657374616b696e673a2072656044820152751cdd185ada5b99c81a5cc81b9bdd08195b98589b195960521b60648201526084016106a4565b86851480156108f457508483145b6109845760405162461bcd60e51b815260206004820152605560248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a2076616c696461746f72496e646963657320616e642070726f6f666064820152740e640daeae6e840c4ca40e6c2daca40d8cadccee8d605b1b608482015260a4016106a4565b4261099a613f486001600160401b038d16614b54565b1015610a235760405162461bcd60e51b815260206004820152604c60248201527f456967656e506f642e7665726966795769746864726177616c43726564656e7460448201527f69616c733a207370656369666965642074696d657374616d7020697320746f6f60648201526b0819985c881a5b881c185cdd60a21b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038b166004820152610acc907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015610a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab891906153fd565b8a35610ac760208d018d615416565b611fbb565b6000805b88811015610b7057610b528c8c358c8c85818110610af057610af061545c565b9050602002016020810190610b059190615472565b8b8b86818110610b1757610b1761545c565b9050602002810190610b299190615416565b8b8b88818110610b3b57610b3b61545c565b9050602002810190610b4d9190615499565b612149565b610b5c9083614b54565b915080610b68816154e2565b915050610ad0565b5060335460405163030b147160e61b81526001600160a01b039182166004820152602481018390527f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8539091169063c2c51c4090604401600060405180830381600087803b158015610be057600080fd5b505af1158015610bf4573d6000803e3d6000fd5b505050505050505050505050505050565b600080610c4784848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b600090815260366020526040902054600160c01b900460ff169150505b92915050565b610c926040805160808101825260008082526020820181905291810182905290606082015290565b600082815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b810490931693810193909352906060830190600160c01b900460ff166002811115610cfd57610cfd614d76565b6002811115610d0e57610d0e614d76565b90525092915050565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8531614610d5f5760405162461bcd60e51b81526004016106a4906154fd565b346801bc16d674ec80000014610deb5760405162461bcd60e51b8152602060048201526044602482018190527f456967656e506f642e7374616b653a206d75737420696e697469616c6c792073908201527f74616b6520666f7220616e792076616c696461746f72207769746820333220656064820152633a3432b960e11b608482015260a4016106a4565b7f00000000000000000000000042424242424242424242424242424242424242426001600160a01b031663228951186801bc16d674ec8000008787610e2e6126fd565b8888886040518863ffffffff1660e01b8152600401610e52969594939291906155cf565b6000604051808303818588803b158015610e6b57600080fd5b505af1158015610e7f573d6000803e3d6000fd5b50505050507f606865b7934a25d4aed43f6cdb426403353fa4b3009c4d228407474581b01e238585604051610eb592919061561e565b60405180910390a15050505050565b604051635ac86ab760e01b8152600360048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f50919061524c565b15610f6d5760405162461bcd60e51b81526004016106a49061526e565b8684148015610f7b57508382145b6110045760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207660448201527f616c696461746f72496e646963657320616e642070726f6f6673206d7573742060648201526d0c4ca40e6c2daca40d8cadccee8d60931b608482015260a4016106a4565b4261101a613f486001600160401b038c16614b54565b101561109c5760405162461bcd60e51b815260206004820152604560248201527f456967656e506f642e76657269667942616c616e6365557064617465733a207360448201527f70656369666965642074696d657374616d7020697320746f6f2066617220696e606482015264081c185cdd60da1b608482015260a4016106a4565b60405163d1c64cc960e01b81526001600160401b038a166004820152611140907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa15801561110d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113191906153fd565b8735610ac760208a018a615416565b6000805b888110156111e4576111c68b8b8b848181106111625761116261545c565b90506020020160208101906111779190615472565b8a358a8a8681811061118b5761118b61545c565b905060200281019061119d9190615416565b8a8a888181106111af576111af61545c565b90506020028101906111c19190615499565b612742565b6111d09083615632565b9150806111dc816154e2565b915050611144565b506033546001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169163c2c51c409116611229633b9aca0085615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561126f57600080fd5b505af1158015611283573d6000803e3d6000fd5b5050505050505050505050505050565b6112bb6040805160808101825260008082526020820181905291810182905290606082015290565b603660006112fe85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061260392505050565b81526020808201929092526040908101600020815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b81049094169281019290925290916060830190600160c01b900460ff16600281111561136b5761136b614d76565b600281111561137c5761137c614d76565b9052509392505050565b6033546001600160a01b031633146113b05760405162461bcd60e51b81526004016106a4906152cb565b603454600160401b900460ff16156113da5760405162461bcd60e51b81526004016106a490615313565b6033546113ef906001600160a01b0316611f87565b565b336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316146114395760405162461bcd60e51b81526004016106a4906154fd565b611447633b9aca008261570e565b156114d15760405162461bcd60e51b815260206004820152604e60248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74576569206d75737420626520612077686f60648201526d1b194811ddd95a48185b5bdd5b9d60921b608482015260a4016106a4565b60006114e1633b9aca0083615722565b6034549091506001600160401b03908116908216111561159a5760405162461bcd60e51b815260206004820152606260248201527f456967656e506f642e776974686472617752657374616b6564426561636f6e4360448201527f6861696e4554483a20616d6f756e74477765692065786365656473207769746860648201527f6472617761626c6552657374616b6564457865637574696f6e4c617965724777608482015261656960f01b60a482015260c4016106a4565b603480548291906000906115b89084906001600160401b0316615736565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550826001600160a01b03167f8947fd2ce07ef9cc302c4e8f0461015615d91ce851564839e91cc804c2f49d8e8360405161161791815260200190565b60405180910390a26116298383612c20565b505050565b600054610100900460ff161580801561164e5750600054600160ff909116105b806116685750303b158015611668575060005460ff166001145b6116cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a4565b6000805460ff1916600117905580156116ee576000805461ff0019166101001790555b6001600160a01b0382166117615760405162461bcd60e51b815260206004820152603460248201527f456967656e506f642e696e697469616c697a653a20706f644f776e65722063616044820152736e6e6f74206265207a65726f206164647265737360601b60648201526084016106a4565b603380546001600160a01b0384166001600160a01b031990911681179091556034805460ff60401b1916600160401b1790556040517fca8dfc8c5e0a67a74501c072a3325f685259bebbae7cfd230ab85198a78b70cd90600090a28015611802576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6033546001600160a01b031633146118305760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bc919061524c565b156118d95760405162461bcd60e51b81526004016106a49061526e565b82518451146119645760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e7265636f766572546f6b656e733a20746f6b656e4c697360448201527f7420616e6420616d6f756e7473546f5769746864726177206d7573742062652060648201526a0e6c2daca40d8cadccee8d60ab1b608482015260a4016106a4565b60005b84518110156119d2576119c0838583815181106119865761198661545c565b60200260200101518784815181106119a0576119a061545c565b60200260200101516001600160a01b0316612c2a9092919063ffffffff16565b806119ca816154e2565b915050611967565b5050505050565b604051635ac86ab760e01b81526004808201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a64919061524c565b15611a815760405162461bcd60e51b81526004016106a49061526e565b8386148015611a8f57508588145b8015611a9a57508782145b611b0e576040805162461bcd60e51b81526020600482015260248101919091527f456967656e506f642e766572696679416e6450726f636573735769746864726160448201527f77616c733a20696e70757473206d7573742062652073616d65206c656e67746860648201526084016106a4565b60405163d1c64cc960e01b81526001600160401b038c166004820152611bb2907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03169063d1c64cc990602401602060405180830381865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906153fd565b8b35610ac760208e018e615416565b604080518082019091526000808252602082015260005b83811015611cb2576000611c6d8d358d8d85818110611bea57611bea61545c565b9050602002810190611bfc919061575e565b8c8c86818110611c0e57611c0e61545c565b9050602002810190611c209190615416565b8c8c88818110611c3257611c3261545c565b9050602002810190611c449190615499565b8c8c8a818110611c5657611c5661545c565b9050602002810190611c689190615499565b612c7c565b80518451919250908490611c82908390614b54565b9052506020808201519084018051611c9b908390615632565b905250819050611caa816154e2565b915050611bc9565b50805115611ce1576033548151611ce1916001600160a01b031690611cdc90633b9aca009061577f565b613167565b602081015115611d965760335460208201516001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381169263c2c51c4092911690611d3790633b9aca0090615673565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7d57600080fd5b505af1158015611d91573d6000803e3d6000fd5b505050505b505050505050505050505050565b6033546001600160a01b03163314611dce5760405162461bcd60e51b81526004016106a4906152cb565b604051635ac86ab760e01b8152600560048201819052907f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031690635ac86ab790602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a919061524c565b15611e775760405162461bcd60e51b81526004016106a49061526e565b603754821115611f285760405162461bcd60e51b815260206004820152606a60248201527f456967656e506f642e77697468647261776e6f6e426561636f6e436861696e4560448201527f544842616c616e63655765693a20616d6f756e74546f5769746864726177206960648201527f732067726561746572207468616e206e6f6e426561636f6e436861696e45544860848201526942616c616e636557656960b01b60a482015260c4016106a4565b8160376000828254611f3a919061579e565b90915550506040518281526001600160a01b038416907f30420aacd028abb3c1fd03aba253ae725d6ddd52d16c9ac4cb5742cd43f530969060200160405180910390a26116298383613167565b6033805467ffffffffffffffff60a01b19164263ffffffff16600160a01b021790556000603755611fb88147613167565b50565b611fc76003602061577f565b81146120575760405162461bcd60e51b815260206004820152605360248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a2050726f6f6620686064820152720c2e640d2dcc6dee4e4cac6e840d8cadccee8d606b1b608482015260a4016106a4565b61209c82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250889250879150600390506131f5565b6121435760405162461bcd60e51b815260206004820152606660248201527f426561636f6e436861696e50726f6f66732e7665726966795374617465526f6f60448201527f74416761696e73744c6174657374426c6f636b526f6f743a20496e76616c696460648201527f206c617465737420626c6f636b2068656164657220726f6f74206d65726b6c6560848201526510383937b7b360d11b60a482015260c4016106a4565b50505050565b60008061218884848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff1660028111156121f7576121f7614d76565b600281111561220857612208614d76565b905250905060008160600151600281111561222557612225614d76565b146122ce5760405162461bcd60e51b815260206004820152606760248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2056616c696461746f72206d757374206265206960648201527f6e61637469766520746f2070726f7665207769746864726177616c2063726564608482015266656e7469616c7360c81b60a482015260c4016106a4565b6122d66126fd565b6122df906157b5565b61231b86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061323192505050565b146123a25760405162461bcd60e51b815260206004820152604b60248201527f456967656e506f642e766572696679436f72726563745769746864726177616c60448201527f43726564656e7469616c733a2050726f6f66206973206e6f7420666f7220746860648201526a1a5cc8115a59d95b941bd960aa1b608482015260a4016106a4565b60006123e086868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b90506123f08a87878b8b8e61326b565b60398054906000612400836154e2565b90915550506001606083015264ffffffffff891682526001600160401b038b811660408401527f000000000000000000000000000000000000000000000000bc16d674ec80000081169082161115612486576001600160401b037f000000000000000000000000000000000000000000000000bc16d674ec800000166020830152612496565b6001600160401b03811660208301525b6000838152603660209081526040918290208451815492860151938601516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516919092161792909217928316821781556060850151859391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561253457612534614d76565b02179055505060405164ffffffffff8b1681527f2d0800bbc377ea54a08c5db6a87aafff5e3e9c8fead0eda110e40e0c10441449915060200160405180910390a17f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df898c84602001516040516125cf9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1633b9aca0082602001516001600160401b03166125f4919061577f565b9b9a5050505050505050505050565b6000815160301461268c5760405162461bcd60e51b815260206004820152604760248201527f456967656e506f642e5f63616c63756c61746556616c696461746f725075626b60448201527f657948617368206d75737420626520612034382d6279746520424c53207075626064820152666c6963206b657960c81b608482015260a4016106a4565b6040516002906126a39084906000906020016157d9565b60408051601f19818403018152908290526126bd91615808565b602060405180830381855afa1580156126da573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610c6491906153fd565b60408051600160f81b60208201526000602182015230606090811b6bffffffffffffffffffffffff1916602c8301529101604051602081830303815290604052905090565b60008061278184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061324692505050565b905060006127c185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b6000818152603660209081526040808320815160808101835281546001600160401b038082168352600160401b8204811695830195909552600160801b8104909416928101929092529394509192906060830190600160c01b900460ff16600281111561283057612830614d76565b600281111561284157612841614d76565b8152505090508a6001600160401b031681604001516001600160401b0316106128f85760405162461bcd60e51b815260206004820152605c60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20566160448201527f6c696461746f72732062616c616e63652068617320616c72656164792062656560648201527f6e207570646174656420666f7220746869732074696d657374616d7000000000608482015260a4016106a4565b60018160600151600281111561291057612910614d76565b146129785760405162461bcd60e51b815260206004820152603260248201527f456967656e506f642e76657269667942616c616e63655570646174653a2056616044820152716c696461746f72206e6f742061637469766560701b60648201526084016106a4565b6129818b6134c2565b6001600160401b03166129c68787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b031611612a69576000836001600160401b031611612a695760405162461bcd60e51b815260206004820152604d60248201527f456967656e506f642e76657269667942616c616e63655570646174653a20766160448201527f6c696461746f7220697320776974686472617761626c6520627574206861732060648201526c3737ba103bb4ba34323930bbb760991b608482015260a4016106a4565b612a778987878b8b8f61326b565b602081015160006001600160401b037f000000000000000000000000000000000000000000000000bc16d674ec80000081169086161115612ad957507f000000000000000000000000000000000000000000000000bc16d674ec800000612adc565b50835b6001600160401b0380821660208086019182528f831660408088019182526000898152603690935290912086518154935192518516600160801b0267ffffffffffffffff60801b19938616600160401b026001600160801b031990951691909516179290921790811683178255606086015186939091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b836002811115612b8457612b84614d76565b0217905550905050816001600160401b0316816001600160401b031614612c10577f0e5fac175b83177cc047381e030d8fb3b42b37bd1c025e22c280facad62c32df8c8e83604051612bfb9392919064ffffffffff9390931683526001600160401b03918216602084015216604082015260600190565b60405180910390a1612c0d81836135c4565b95505b5050505050979650505050505050565b61180282826135e3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526116299084906136fc565b6040805180820190915260008082526020820152612ca1612c9c89615889565b6137ce565b6033546001600160401b03600160a01b909104811690821611612cd65760405162461bcd60e51b81526004016106a490615362565b6000612ce4612c9c8b615889565b90506000612d2488888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061320d92505050565b905060008082815260366020526040902054600160c01b900460ff166002811115612d5157612d51614d76565b1415612e085760405162461bcd60e51b815260206004820152607460248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a2056616c696461746f72206e657665722070726f76656e20746f2060648201527f68617665207769746864726177616c2063726564656e7469616c7320706f696e6084820152731d1959081d1bc81d1a1a5cc818dbdb9d1c9858dd60621b60a482015260c4016106a4565b60008181526035602090815260408083206001600160401b038616845290915290205460ff1615612ec75760405162461bcd60e51b815260206004820152605b60248201527f456967656e506f642e5f766572696679416e6450726f6365737357697468647260448201527f6177616c3a207769746864726177616c2068617320616c72656164792062656560648201527f6e2070726f76656e20666f7220746869732074696d657374616d700000000000608482015260a4016106a4565b6001603560008381526020019081526020016000206000846001600160401b03166001600160401b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550612fa48c87878e7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b03166344e71c806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9f91906159c5565b6137de565b6000612fe28787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506141ff92505050565b9050612ff28d8a8a8e8e8661326b565b600061303088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061421792505050565b905061306e8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506135ac92505050565b6001600160401b03166130886130838f615889565b61422f565b6001600160401b03161061314057603354600084815260366020908152604091829020825160808101845281546001600160401b038082168352600160401b8204811694830194909452600160801b81049093169381019390935261313593869388938a936001600160a01b03909316928892916060830190600160c01b900460ff16600281111561311c5761311c614d76565b600281111561312d5761312d614d76565b905250614241565b95505050505061315a565b60335461313590839086906001600160a01b03168461447f565b5098975050505050505050565b603354604051633036cd5360e21b81526001600160a01b03918216600482015283821660248201527f0000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe69091169063c0db354c9083906044016000604051808303818588803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b50505050505050565b60008361320386858561455d565b1495945050505050565b6000816000815181106132225761322261545c565b60200260200101519050919050565b6000816001815181106132225761322261545c565b6000610c648260028151811061325e5761325e61545c565b60200260200101516146a9565b61327760036002615ac6565b84146133025760405162461bcd60e51b815260206004820152604e60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2056616c696461746f72206669656c64732068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b600561331060286001614b54565b61331a9190614b54565b61332590602061577f565b82146133a55760405162461bcd60e51b815260206004820152604360248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a2050726f6f662068617320696e636f7272656374206c656e6064820152620cee8d60eb1b608482015260a4016106a4565b600064ffffffffff82166133bb60286001614b54565b600b901b179050600061340087878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b905061344685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508591508690506131f5565b6134b85760405162461bcd60e51b815260206004820152603d60248201527f426561636f6e436861696e50726f6f66732e76657269667956616c696461746f60448201527f724669656c64733a20496e76616c6964206d65726b6c652070726f6f6600000060648201526084016106a4565b5050505050505050565b60007f0000000000000000000000000000000000000000000000000000000065156ac06001600160401b0316826001600160401b0316101561356c5760405162461bcd60e51b815260206004820152603760248201527f456967656e506f642e5f74696d657374616d70546f45706f63683a2074696d6560448201527f7374616d70206973206265666f72652067656e6573697300000000000000000060648201526084016106a4565b613578600c6020615ad2565b6135a27f0000000000000000000000000000000000000000000000000000000065156ac084615736565b610c649190615b01565b6000610c648260078151811061325e5761325e61545c565b60006135dc6001600160401b03808416908516615b27565b9392505050565b804710156136335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106a4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b50509050806116295760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016106a4565b6000613751826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166149bd9092919063ffffffff16565b805190915015611629578080602001905181019061376f919061524c565b6116295760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016106a4565b6000610c648261014001516146a9565b6137e9600280615ac6565b831461385d5760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c4669656c64732068617320696e636f7272656064820152680c6e840d8cadccee8d60bb1b608482015260a4016106a4565b613869600d6002615ac6565b61387960c0840160a08501615b66565b6001600160401b0316106138e35760405162461bcd60e51b815260206004820152603f6024820152600080516020615bd983398151915260448201527f616c3a20626c6f636b526f6f74496e64657820697320746f6f206c617267650060648201526084016106a4565b6138ef60046002615ac6565b613900610100840160e08501615b66565b6001600160401b03161061396c576040805162461bcd60e51b8152602060048201526024810191909152600080516020615bd983398151915260448201527f616c3a207769746864726177616c496e64657820697320746f6f206c6172676560648201526084016106a4565b61397860186002615ac6565b61398860e0840160c08501615b66565b6001600160401b031610613a025760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279496e64657820697320746f6064820152666f206c6172676560c81b608482015260a4016106a4565b60006001600160401b038216613a1a612c9c85615889565b6001600160401b031610613a2f576005613a32565b60045b9050613a3f600482614b54565b613a4a906001614b54565b613a5590602061577f565b613a5f8480615416565b905014613ad35760405162461bcd60e51b81526020600482015260486024820152600080516020615bd983398151915260448201527f616c3a207769746864726177616c50726f6f662068617320696e636f727265636064820152670e840d8cadccee8d60c31b608482015260a4016106a4565b613adf60046003614b54565b613aea90602061577f565b613af76040850185615416565b905014613b715760405162461bcd60e51b815260206004820152604e6024820152600080516020615bd983398151915260448201527f616c3a20657865637574696f6e5061796c6f616450726f6f662068617320696e60648201526d0c6dee4e4cac6e840d8cadccee8d60931b608482015260a4016106a4565b613b7d6003602061577f565b613b8a6020850185615416565b905014613bf85760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20736c6f7450726f6f662068617320696e636f7272656374206c656e676064820152610e8d60f31b608482015260a4016106a4565b613c0381602061577f565b613c106060850185615416565b905014613c835760405162461bcd60e51b81526020600482015260476024820152600080516020615bd983398151915260448201527f616c3a2074696d657374616d7050726f6f662068617320696e636f7272656374606482015266040d8cadccee8d60cb1b608482015260a4016106a4565b600d613c9160186001614b54565b613c9c906005614b54565b613ca7906001614b54565b613cb19190614b54565b613cbc90602061577f565b613cc96080850185615416565b905014613d525760405162461bcd60e51b81526020600482015260586024820152600080516020615bd983398151915260448201527f616c3a20686973746f726963616c53756d6d617279426c6f636b526f6f74507260648201527f6f6f662068617320696e636f7272656374206c656e6774680000000000000000608482015260a4016106a4565b6000613d6460c0850160a08601615b66565b6001600160401b03166000613d7b600d6001614b54565b613d8b60e0880160c08901615b66565b6001600160401b0316901b600d613da460186001614b54565b613daf906001614b54565b613db99190614b54565b601b901b1717179050613e14613dd26080860186615416565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92505050610100870135846131f5565b613e875760405162461bcd60e51b815260206004820152604a6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420686973746f726963616c73756d6d617279206d656064820152693935b63290383937b7b360b11b608482015260a4016106a4565b613ede613e976020860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506101008a013593506101208a0135925090506131f5565b613f3e5760405162461bcd60e51b815260206004820152603d6024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420736c6f74206d65726b6c652070726f6f6600000060648201526084016106a4565b6049613f96613f506040870187615416565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050610100870135610160880135846131f5565b6140085760405162461bcd60e51b81526020600482015260496024820152600080516020615bd983398151915260448201527f616c3a20496e76616c696420657865637574696f6e5061796c6f6164206d657260648201526835b63290383937b7b360b91b608482015260a4016106a4565b506140606140196060860186615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016086013561014087013560096131f5565b6140cb5760405162461bcd60e51b81526020600482015260426024820152600080516020615bd983398151915260448201527f616c3a20496e76616c69642074696d657374616d70206d65726b6c652070726f60648201526137b360f11b608482015260a4016106a4565b60006140de610100860160e08701615b66565b6001600160401b03166140f360046001614b54565b600e901b179050600061413888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061471092505050565b90506141886141478780615416565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505061016088013583856131f5565b6141f45760405162461bcd60e51b81526020600482015260436024820152600080516020615bd983398151915260448201527f616c3a20496e76616c6964207769746864726177616c206d65726b6c6520707260648201526237b7b360e91b608482015260a4016106a4565b505050505050505050565b6000610c648260018151811061325e5761325e61545c565b6000610c648260038151811061325e5761325e61545c565b600060206135a28361012001516146a9565b604080518082019091526000808252602082015260007f000000000000000000000000000000000000000000000000bc16d674ec8000006001600160401b0316846001600160401b031611156142b857507f000000000000000000000000000000000000000000000000bc16d674ec8000006142bb565b50825b60408051808201909152600080825260208201526142d98286615736565b6001600160401b0390811682526034805484926000916142fb91859116615b83565b92506101000a8154816001600160401b0302191690836001600160401b0316021790555061432d8285602001516135c4565b602082015260028460600151600281111561434a5761434a614d76565b1461436c576039805490600061435f83615bae565b9091555050600260608501525b600060208086018281528a83526036909152604091829020865181549251938801516001600160401b03908116600160801b0267ffffffffffffffff60801b19958216600160401b026001600160801b0319909516929091169190911792909217928316821781556060870151879391929091839160ff60c01b191668ffffffffffffffffff60801b1990911617600160c01b83600281111561441157614411614d76565b0217905550506040805164ffffffffff8c1681526001600160401b038a8116602083015288168183015290516001600160a01b03891692507fb76a93bb649ece524688f1a01d184e0bbebcda58eae80c28a898bec3fb5a09639181900360600190a298975050505050505050565b60408051808201909152600080825260208201526040805164ffffffffff871681526001600160401b0380871660208301528416918101919091526001600160a01b038416907f8a7335714231dbd551aaba6314f4a97a14c201e53a3e25e1140325cdf67d7a4e9060600160405180910390a2603880548391906000906145109084906001600160401b0316615b83565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506040518060400160405280836001600160401b0316815260200160008152509050949350505050565b6000835160001415801561457c57506020845161457a919061570e565b155b61460b5760405162461bcd60e51b815260206004820152605460248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f665368613260448201527f35363a2070726f6f66206c656e6774682073686f756c642062652061206e6f6e60648201527316bd32b9379036bab63a34b836329037b310199960611b608482015260a4016106a4565b604080516020808201909252848152905b8551811161469f5761462f60028561570e565b614662578151600052808601516020526020826040600060026107d05a03fa61465757600080fd5b60028404935061468d565b8086015160005281516020526020826040600060026107d05a03fa61468657600080fd5b6002840493505b614698602082614b54565b905061461c565b5051949350505050565b60f881901c60e882901c61ff00161760d882901c62ff0000161760c882901c63ff000000161764ff0000000060b883901c161765ff000000000060a883901c161766ff000000000000609883901c161767ff0000000000000060889290921c919091161790565b600080600283516147219190615722565b90506000816001600160401b0381111561473d5761473d614f83565b604051908082528060200260200182016040528015614766578160200160208202803683370190505b50905060005b8281101561486d57600285614781838361577f565b815181106147915761479161545c565b6020026020010151868360026147a7919061577f565b6147b2906001614b54565b815181106147c2576147c261545c565b60200260200101516040516020016147e4929190918252602082015260400190565b60408051601f19818403018152908290526147fe91615808565b602060405180830381855afa15801561481b573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061483e91906153fd565b8282815181106148505761485061545c565b602090810291909101015280614865816154e2565b91505061476c565b50614879600283615722565b91505b81156149995760005b828110156149865760028261489a838361577f565b815181106148aa576148aa61545c565b6020026020010151838360026148c0919061577f565b6148cb906001614b54565b815181106148db576148db61545c565b60200260200101516040516020016148fd929190918252602082015260400190565b60408051601f198184030181529082905261491791615808565b602060405180830381855afa158015614934573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061495791906153fd565b8282815181106149695761496961545c565b60209081029190910101528061497e816154e2565b915050614885565b50614992600283615722565b915061487c565b806000815181106149ac576149ac61545c565b602002602001015192505050919050565b60606149cc84846000856149d4565b949350505050565b606082471015614a355760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106a4565b6001600160a01b0385163b614a8c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a4565b600080866001600160a01b03168587604051614aa89190615808565b60006040518083038185875af1925050503d8060008114614ae5576040519150601f19603f3d011682016040523d82523d6000602084013e614aea565b606091505b5091509150614afa828286614b05565b979650505050505050565b60608315614b145750816135dc565b825115614b245782518084602001fd5b8160405162461bcd60e51b81526004016106a49190615bc5565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b6757614b67614b3e565b500190565b6001600160401b0381168114611fb857600080fd5b8035614b8c81614b6c565b919050565b60008060408385031215614ba457600080fd5b823591506020830135614bb681614b6c565b809150509250929050565b600060408284031215614bd357600080fd5b50919050565b60008083601f840112614beb57600080fd5b5081356001600160401b03811115614c0257600080fd5b6020830191508360208260051b8501011115614c1d57600080fd5b9250929050565b60008060008060008060008060a0898b031215614c4057600080fd5b8835614c4b81614b6c565b975060208901356001600160401b0380821115614c6757600080fd5b614c738c838d01614bc1565b985060408b0135915080821115614c8957600080fd5b614c958c838d01614bd9565b909850965060608b0135915080821115614cae57600080fd5b614cba8c838d01614bd9565b909650945060808b0135915080821115614cd357600080fd5b50614ce08b828c01614bd9565b999c989b5096995094979396929594505050565b60008083601f840112614d0657600080fd5b5081356001600160401b03811115614d1d57600080fd5b602083019150836020828501011115614c1d57600080fd5b60008060208385031215614d4857600080fd5b82356001600160401b03811115614d5e57600080fd5b614d6a85828601614cf4565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b60038110614daa57634e487b7160e01b600052602160045260246000fd5b9052565b60208101610c648284614d8c565b600060208284031215614dce57600080fd5b5035919050565b60006080820190506001600160401b03808451168352806020850151166020840152806040850151166040840152506060830151614e166060840182614d8c565b5092915050565b600080600080600060608688031215614e3557600080fd5b85356001600160401b0380821115614e4c57600080fd5b614e5889838a01614cf4565b90975095506020880135915080821115614e7157600080fd5b50614e7e88828901614cf4565b96999598509660400135949350505050565b60008060008060008060008060a0898b031215614eac57600080fd5b8835614eb781614b6c565b975060208901356001600160401b0380821115614ed357600080fd5b614edf8c838d01614bd9565b909950975060408b0135915080821115614ef857600080fd5b614f048c838d01614bc1565b965060608b0135915080821115614cae57600080fd5b6001600160a01b0381168114611fb857600080fd5b8035614b8c81614f1a565b60008060408385031215614f4d57600080fd5b8235614f5881614f1a565b946020939093013593505050565b600060208284031215614f7857600080fd5b81356135dc81614f1a565b634e487b7160e01b600052604160045260246000fd5b60405161018081016001600160401b0381118282101715614fbc57614fbc614f83565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fea57614fea614f83565b604052919050565b60006001600160401b0382111561500b5761500b614f83565b5060051b60200190565b600082601f83011261502657600080fd5b8135602061503b61503683614ff2565b614fc2565b82815260059290921b8401810191818101908684111561505a57600080fd5b8286015b84811015615075578035835291830191830161505e565b509695505050505050565b60008060006060848603121561509557600080fd5b83356001600160401b03808211156150ac57600080fd5b818601915086601f8301126150c057600080fd5b813560206150d061503683614ff2565b82815260059290921b8401810191818101908a8411156150ef57600080fd5b948201945b8386101561511657853561510781614f1a565b825294820194908201906150f4565b9750508701359250508082111561512c57600080fd5b5061513986828701615015565b92505061514860408501614f2f565b90509250925092565b60008060008060008060008060008060c08b8d03121561517057600080fd5b6151798b614b81565b995060208b01356001600160401b038082111561519557600080fd5b6151a18e838f01614bc1565b9a5060408d01359150808211156151b757600080fd5b6151c38e838f01614bd9565b909a50985060608d01359150808211156151dc57600080fd5b6151e88e838f01614bd9565b909850965060808d013591508082111561520157600080fd5b61520d8e838f01614bd9565b909650945060a08d013591508082111561522657600080fd5b506152338d828e01614bd9565b915080935050809150509295989b9194979a5092959850565b60006020828403121561525e57600080fd5b815180151581146135dc57600080fd5b6020808252603e908201527f456967656e506f642e6f6e6c795768656e4e6f745061757365643a20696e646560408201527f782069732070617573656420696e20456967656e506f644d616e616765720000606082015260800190565b60208082526028908201527f456967656e506f642e6f6e6c79456967656e506f644f776e65723a206e6f74206040820152673837b227bbb732b960c11b606082015260800190565b6020808252602f908201527f456967656e506f642e6861734e6576657252657374616b65643a20726573746160408201526e1ada5b99c81a5cc8195b98589b1959608a1b606082015260800190565b6020808252606f908201527f456967656e506f642e70726f6f664973466f7256616c696454696d657374616d60408201527f703a20626561636f6e20636861696e2070726f6f66206d75737420626520666f60608201527f722074696d657374616d70206166746572206d6f7374526563656e745769746860808201526e064726177616c54696d657374616d7608c1b60a082015260c00190565b60006020828403121561540f57600080fd5b5051919050565b6000808335601e1984360301811261542d57600080fd5b8301803591506001600160401b0382111561544757600080fd5b602001915036819003821315614c1d57600080fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561548457600080fd5b813564ffffffffff811681146135dc57600080fd5b6000808335601e198436030181126154b057600080fd5b8301803591506001600160401b038211156154ca57600080fd5b6020019150600581901b3603821315614c1d57600080fd5b60006000198214156154f6576154f6614b3e565b5060010190565b60208082526031908201527f456967656e506f642e6f6e6c79456967656e506f644d616e616765723a206e6f6040820152703a1032b4b3b2b72837b226b0b730b3b2b960791b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60005b8381101561559257818101518382015260200161557a565b838111156121435750506000910152565b600081518084526155bb816020860160208601615577565b601f01601f19169290920160200192915050565b6080815260006155e360808301888a61554e565b82810360208401526155f581886155a3565b9050828103604084015261560a81868861554e565b915050826060830152979650505050505050565b6020815260006149cc60208301848661554e565b600080821280156001600160ff1b038490038513161561565457615654614b3e565b600160ff1b839003841281161561566d5761566d614b3e565b50500190565b60006001600160ff1b038184138284138082168684048611161561569957615699614b3e565b600160ff1b60008712828116878305891216156156b8576156b8614b3e565b600087129250878205871284841616156156d4576156d4614b3e565b878505871281841616156156ea576156ea614b3e565b505050929093029392505050565b634e487b7160e01b600052601260045260246000fd5b60008261571d5761571d6156f8565b500690565b600082615731576157316156f8565b500490565b60006001600160401b038381169083168181101561575657615756614b3e565b039392505050565b6000823561017e1983360301811261577557600080fd5b9190910192915050565b600081600019048311821515161561579957615799614b3e565b500290565b6000828210156157b0576157b0614b3e565b500390565b80516020808301519190811015614bd35760001960209190910360031b1b16919050565b600083516157eb818460208801615577565b6001600160801b0319939093169190920190815260100192915050565b60008251615775818460208701615577565b600082601f83011261582b57600080fd5b81356001600160401b0381111561584457615844614f83565b615857601f8201601f1916602001614fc2565b81815284602083860101111561586c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000610180823603121561589c57600080fd5b6158a4614f99565b82356001600160401b03808211156158bb57600080fd5b6158c73683870161581a565b835260208501359150808211156158dd57600080fd5b6158e93683870161581a565b6020840152604085013591508082111561590257600080fd5b61590e3683870161581a565b6040840152606085013591508082111561592757600080fd5b6159333683870161581a565b6060840152608085013591508082111561594c57600080fd5b506159593682860161581a565b60808301525061596b60a08401614b81565b60a082015261597c60c08401614b81565b60c082015261598d60e08401614b81565b60e082015261010083810135908201526101208084013590820152610140808401359082015261016092830135928101929092525090565b6000602082840312156159d757600080fd5b81516135dc81614b6c565b600181815b80851115615a1d578160001904821115615a0357615a03614b3e565b80851615615a1057918102915b93841c93908002906159e7565b509250929050565b600082615a3457506001610c64565b81615a4157506000610c64565b8160018114615a575760028114615a6157615a7d565b6001915050610c64565b60ff841115615a7257615a72614b3e565b50506001821b610c64565b5060208310610133831016604e8410600b8410161715615aa0575081810a610c64565b615aaa83836159e2565b8060001904821115615abe57615abe614b3e565b029392505050565b60006135dc8383615a25565b60006001600160401b0380831681851681830481118215151615615af857615af8614b3e565b02949350505050565b60006001600160401b0380841680615b1b57615b1b6156f8565b92169190910492915050565b60008083128015600160ff1b850184121615615b4557615b45614b3e565b6001600160ff1b0384018313811615615b6057615b60614b3e565b50500390565b600060208284031215615b7857600080fd5b81356135dc81614b6c565b60006001600160401b03808316818516808303821115615ba557615ba5614b3e565b01949350505050565b600081615bbd57615bbd614b3e565b506000190190565b6020815260006135dc60208301846155a356fe426561636f6e436861696e50726f6f66732e7665726966795769746864726177a2646970667358221220691dcd5f8d90539995d3bfd78ba8af9d2650b2da35d409dc1708e0da1fbdd66964736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x8f86403a4de0bb5791fa46b8e795c547942fe4cf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0x4826533b4897376654bb4d4ad88b7fafd0c985280001","0x1":"0x0","0x64":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x96":"0x1","0x9c":"0x3","0x9d":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x9e":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xc351628eb244ec633d5f21fbd6621e1a683b1181","0x683723e34a772b6e4f2c919bba7fa32ed8ea11a8325f54da7db716e9d9dd98c7":"0x643a9800002710","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c":"0x809d550fca64d94bd9f66e60752a544199cfac3d","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539d":"0x9d4454b023096f34b160d6b654540c56a1f81688","0xaf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539e":"0x5eb3bc0a489c5a8288765d2336659ebca68fcd00","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x95401dc811bb5740090279ba06cfa8fcf6113778":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0xf5059a5d33d5853360d16c683c16e67980206f36","0x64":"0xde0b6b3a7640000","0x65":"0x56bc75e2d63100000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0x959922be3caee4b8cd9a407cc3ac1c251c2007b1":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061014b5760003560e01c806385594e58116100b6578063e4f4f8871161006f578063e4f4f887146103cc578063e5db06c014610405578063eb990c5914610425578063ecb7cb1b14610445578063f2fde38b14610472578063fabc1cbc1461049257600080fd5b806385594e5814610317578063886f1195146103445780638da5cb5b14610364578063c0db354c14610382578063ca661c0414610395578063d44e1b76146103ac57600080fd5b806350f73e7c1161010857806350f73e7c14610254578063595c6a67146102785780635ac86ab71461028d5780635c975abb146102cd578063715018a6146102e257806375608896146102f757600080fd5b806310d67a2f14610150578063136439dd146101725780631f39d87f146101925780633e1de008146101c85780634665bcda146101e85780634d50f9a414610234575b600080fd5b34801561015c57600080fd5b5061017061016b36600461196d565b6104b2565b005b34801561017e57600080fd5b5061017061018d366004611991565b61056e565b34801561019e57600080fd5b506101b26101ad36600461196d565b6106ad565b6040516101bf91906119c8565b60405180910390f35b3480156101d457600080fd5b506101b26101e336600461196d565b6108a8565b3480156101f457600080fd5b5061021c7f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6040516001600160a01b0390911681526020016101bf565b34801561024057600080fd5b5061017061024f366004611991565b6109ee565b34801561026057600080fd5b5061026a60c95481565b6040519081526020016101bf565b34801561028457600080fd5b506101706109ff565b34801561029957600080fd5b506102bd6102a8366004611a15565b609854600160ff9092169190911b9081161490565b60405190151581526020016101bf565b3480156102d957600080fd5b5060985461026a565b3480156102ee57600080fd5b50610170610ac6565b34801561030357600080fd5b506102bd610312366004611a38565b610ada565b34801561032357600080fd5b50610337610332366004611a38565b610b5d565b6040516101bf9190611a64565b34801561035057600080fd5b5060975461021c906001600160a01b031681565b34801561037057600080fd5b506033546001600160a01b031661021c565b610170610390366004611a72565b610bdd565b3480156103a157600080fd5b5061026a62034bc081565b3480156103b857600080fd5b506101706103c7366004611991565b610e9d565b3480156103d857600080fd5b5061026a6103e736600461196d565b6001600160a01b0316600090815260ca602052604090206001015490565b34801561041157600080fd5b50610170610420366004611a38565b610f31565b34801561043157600080fd5b50610170610440366004611aab565b610fc6565b34801561045157600080fd5b5061046561046036600461196d565b6110ee565b6040516101bf9190611af1565b34801561047e57600080fd5b5061017061048d36600461196d565b6111a8565b34801561049e57600080fd5b506101706104ad366004611991565b61121e565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190611b47565b6001600160a01b0316336001600160a01b0316146105625760405162461bcd60e51b815260040161055990611b64565b60405180910390fd5b61056b8161137a565b50565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156105b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105da9190611bae565b6105f65760405162461bcd60e51b815260040161055990611bd0565b6098548181161461066f5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926106da8383611c2e565b90508060005b82811015610786576001600160a01b038716600090815260ca6020526040812060010161070d8388611c45565b8154811061071d5761071d611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061076391611c45565b4310156107735781925050610786565b508061077e81611c73565b9150506106e0565b508060008167ffffffffffffffff8111156107a3576107a3611c8e565b6040519080825280602002602001820160405280156107e857816020015b60408051808201909152600080825260208201528152602001906001900390816107c15790505b509050811561089d5760005b8281101561089b576001600160a01b038916600090815260ca602052604090206001016108218289611c45565b8154811061083157610831611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810191909152825183908390811061087d5761087d611c5d565b6020026020010181905250808061089390611c73565b9150506107f4565b505b979650505050505050565b6001600160a01b038116600090815260ca6020526040812080546001909101546060926108d58383611c2e565b905060008167ffffffffffffffff8111156108f2576108f2611c8e565b60405190808252806020026020018201604052801561093757816020015b60408051808201909152600080825260208201528152602001906001900390816109105790505b50905060005b828110156109e4576001600160a01b038716600090815260ca6020526040902060010161096a8287611c45565b8154811061097a5761097a611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff169181019190915282518390839081106109c6576109c6611c5d565b602002602001018190525080806109dc90611c73565b91505061093d565b5095945050505050565b6109f6611471565b61056b816114cb565b60975460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6b9190611bae565b610a875760405162461bcd60e51b815260040161055990611bd0565b600019609881905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610ace611471565b610ad86000611593565b565b6001600160a01b038216600090815260ca60205260408120548210801590610b54575060c9546001600160a01b038416600090815260ca60205260409020600101805484908110610b2d57610b2d611c5d565b600091825260209091200154610b509190600160e01b900463ffffffff16611c45565b4310155b90505b92915050565b60408051808201909152600080825260208201526001600160a01b038316600090815260ca60205260409020600101805483908110610b9e57610b9e611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff16918101919091529392505050565b60405163a38406a360e01b81526001600160a01b038084166004830152839133917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063a38406a390602401602060405180830381865afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b9190611b47565b6001600160a01b031614610ce75760405162461bcd60e51b815260206004820152603d60248201527f44656c617965645769746864726177616c526f757465722e6f6e6c794569676560448201527f6e506f643a206e6f7420706f644f776e6572277320456967656e506f640000006064820152608401610559565b60985460009060019081161415610d105760405162461bcd60e51b815260040161055990611ca4565b6001600160a01b038316610da65760405162461bcd60e51b815260206004820152605160248201527f44656c617965645769746864726177616c526f757465722e637265617465446560448201527f6c617965645769746864726177616c3a20726563697069656e742063616e6e6f60648201527074206265207a65726f206164647265737360781b608482015260a401610559565b346001600160e01b03811615610e96576040805180820182526001600160e01b03808416825263ffffffff43811660208085019182526001600160a01b038a16600081815260ca8352968720600190810180548083018255818a5293892088519551909616600160e01b029490961693909317939091019290925593525490917fb8f1b14c7caf74150801dcc9bc18d575cbeaf5b421943497e409df92c92e0f5991889188918691610e5791611c2e565b604080516001600160a01b0395861681529490931660208501526001600160e01b039091169183019190915260608201526080015b60405180910390a1505b5050505050565b60026065541415610ef05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610f1e5760405162461bcd60e51b815260040161055990611ca4565b610f2833836115e5565b50506001606555565b60026065541415610f845760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610559565b600260655560985460009060019081161415610fb25760405162461bcd60e51b815260040161055990611ca4565b610fbc83836115e5565b5050600160655550565b600054610100900460ff1615808015610fe65750600054600160ff909116105b806110005750303b158015611000575060005460ff166001145b6110635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610559565b6000805460ff191660011790558015611086576000805461ff0019166101001790555b61108f85611593565b6110998484611750565b6110a2826114cb565b8015610e96576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b6040805180820190915260008152606060208201526001600160a01b038216600090815260ca6020908152604080832081518083018352815481526001820180548451818702810187019095528085529195929486810194939192919084015b8282101561119a57600084815260209081902060408051808201909152908401546001600160e01b0381168252600160e01b900463ffffffff168183015282526001909201910161114e565b505050915250909392505050565b6111b0611471565b6001600160a01b0381166112155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61056b81611593565b609760009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112959190611b47565b6001600160a01b0316336001600160a01b0316146112c55760405162461bcd60e51b815260040161055990611b64565b6098541981196098541916146113435760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610559565b609881905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016106a2565b6001600160a01b0381166114085760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610559565b609754604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610ad85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610559565b62034bc08111156115525760405162461bcd60e51b815260206004820152604560248201527f44656c617965645769746864726177616c526f757465722e5f7365745769746860448201527f64726177616c44656c6179426c6f636b733a206e657756616c756520746f6f206064820152646c6172676560d81b608482015260a401610559565b60c95460408051918252602082018390527f4ffb00400574147429ee377a5633386321e66d45d8b14676014b5fa393e61e9e910160405180910390a160c955565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600090815260ca602052604081208054600190910154825b848110801561161e57508161161c8285611c45565b105b156116cb576001600160a01b038616600090815260ca602052604081206001016116488386611c45565b8154811061165857611658611c5d565b6000918252602091829020604080518082019091529101546001600160e01b0381168252600160e01b900463ffffffff1691810182905260c95490925061169e91611c45565b4310156116ab57506116cb565b80516116c0906001600160e01b031686611c45565b945050600101611607565b6116d58184611c45565b6001600160a01b038716600090815260ca602052604090205583156116fe576116fe868561183a565b7f6b7151500bd0b5cc211bcc47b3029831b769004df4549e8e1c9a69da05bb0943868561172b8487611c45565b604080516001600160a01b039094168452602084019290925290820152606001610e8c565b6097546001600160a01b031615801561177157506001600160a01b03821615155b6117f35760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610559565b609881905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26118368261137a565b5050565b8047101561188a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610559565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146118d7576040519150601f19603f3d011682016040523d82523d6000602084013e6118dc565b606091505b50509050806119535760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610559565b505050565b6001600160a01b038116811461056b57600080fd5b60006020828403121561197f57600080fd5b813561198a81611958565b9392505050565b6000602082840312156119a357600080fd5b5035919050565b80516001600160e01b0316825260209081015163ffffffff16910152565b602080825282518282018190526000919060409081850190868401855b82811015611a08576119f88483516119aa565b92840192908501906001016119e5565b5091979650505050505050565b600060208284031215611a2757600080fd5b813560ff8116811461198a57600080fd5b60008060408385031215611a4b57600080fd5b8235611a5681611958565b946020939093013593505050565b60408101610b5782846119aa565b60008060408385031215611a8557600080fd5b8235611a9081611958565b91506020830135611aa081611958565b809150509250929050565b60008060008060808587031215611ac157600080fd5b8435611acc81611958565b93506020850135611adc81611958565b93969395505050506040820135916060013590565b602080825282518282015282810151604080840181905281516060850181905260009392830191849160808701905b8084101561089b57611b338286516119aa565b938501936001939093019290820190611b20565b600060208284031215611b5957600080fd5b815161198a81611958565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611bc057600080fd5b8151801515811461198a57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015611c4057611c40611c18565b500390565b60008219821115611c5857611c58611c18565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415611c8757611c87611c18565b5060010190565b634e487b7160e01b600052604160045260246000fd5b60208082526019908201527f5061757361626c653a20696e646578206973207061757365640000000000000060408201526060019056fea2646970667358221220a7b0cb3cf71cdb5256fb15bfe475d018f2b85f6e5dc28544afc2cd784e4aa59c64736f6c634300080c0033","storage":{"0x0":"0xff"}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x99bba657f2bbc93c02d617f8ba121cb8fc104acf":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x33":"0x1","0x66":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xca":"0x4826533b4897376654bb4d4ad88b7fafd0c98528","0xcb":"0x0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x9a676e781a523b5d0c0e43731313a708cb607508":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80637cf72bba1161010f578063d98128c0116100a2578063e921d4fa11610071578063e921d4fa146103c6578063f2fde38b1461044c578063f73b7519146102a9578063fabc1cbc1461045f57600080fd5b8063d98128c014610430578063da16e29b14610322578063df5cf723146102ba578063e58398361461043e57600080fd5b80638da5cb5b116100de5780638da5cb5b146103b5578063a49db732146103c6578063c747075b146103da578063d7b7fa13146103ee57600080fd5b80637cf72bba146103465780638105e04314610354578063855fcc4a1461036b578063886f1195146103a257600080fd5b806339b70e38116101875780636f0c2f74116101565780636f0c2f7414610322578063715018a614610330578063723e59c7146103385780637259a45c1461024257600080fd5b806339b70e38146102ba578063595c6a67146102d55780635ac86ab7146102dd5780635c975abb1461031057600080fd5b80631794bb3c116101c35780631794bb3c1461022f5780631874e5ae14610242578063282670fc1461027257806338c8ee64146102a957600080fd5b80630ffabbce146101f557806310d67a2f14610209578063136439dd1461021c578063175d3205146101f5575b600080fd5b610207610203366004610b25565b5050565b005b610207610217366004610b5a565b610472565b61020761022a366004610b7e565b61052b565b61020761023d366004610b97565b505050565b610258610250366004610b25565b600092915050565b60405163ffffffff90911681526020015b60405180910390f35b610285610280366004610bd8565b61066a565b60408051825163ffffffff9081168252602093840151169281019290925201610269565b6102076102b7366004610b5a565b50565b60005b6040516001600160a01b039091168152602001610269565b610207610685565b6103006102eb366004610c04565b606654600160ff9092169190911b9081161490565b6040519015158152602001610269565b6066545b604051908152602001610269565b610258610250366004610c27565b61020761074c565b610314610250366004610b25565b610207610203366004610c60565b610300610362366004610cd5565b60009392505050565b610385610379366004610c27565b60008060009250925092565b604080519315158452602084019290925290820152606001610269565b6065546102bd906001600160a01b031681565b6033546001600160a01b03166102bd565b6103146103d4366004610b5a565b50600090565b6102076103e8366004610d13565b50505050565b6104016103fc366004610c27565b610760565b60408051825163ffffffff90811682526020808501518216908301529282015190921690820152606001610269565b610300610250366004610c27565b6103006103d4366004610b5a565b61020761045a366004610b5a565b610782565b61020761046d366004610b7e565b6107f8565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e99190610d60565b6001600160a01b0316336001600160a01b0316146105225760405162461bcd60e51b815260040161051990610d7d565b60405180910390fd5b6102b781610954565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610573573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105979190610dc7565b6105b35760405162461bcd60e51b815260040161051990610de9565b6066548181161461062c5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60408051808201909152600080825260208201525b92915050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f19190610dc7565b61070d5760405162461bcd60e51b815260040161051990610de9565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610754610a4b565b61075e6000610aa5565b565b604080516060810182526000808252602082018190529181019190915261067f565b61078a610a4b565b6001600160a01b0381166107ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610519565b6102b781610aa5565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086f9190610d60565b6001600160a01b0316336001600160a01b03161461089f5760405162461bcd60e51b815260040161051990610d7d565b60665419811960665419161461091d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610519565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161065f565b6001600160a01b0381166109e25760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610519565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b0316331461075e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610519565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146102b757600080fd5b803563ffffffff81168114610b2057600080fd5b919050565b60008060408385031215610b3857600080fd5b8235610b4381610af7565b9150610b5160208401610b0c565b90509250929050565b600060208284031215610b6c57600080fd5b8135610b7781610af7565b9392505050565b600060208284031215610b9057600080fd5b5035919050565b600080600060608486031215610bac57600080fd5b8335610bb781610af7565b92506020840135610bc781610af7565b929592945050506040919091013590565b60008060408385031215610beb57600080fd5b8235610bf681610af7565b946020939093013593505050565b600060208284031215610c1657600080fd5b813560ff81168114610b7757600080fd5b60008060408385031215610c3a57600080fd5b8235610c4581610af7565b91506020830135610c5581610af7565b809150509250929050565b60008060208385031215610c7357600080fd5b823567ffffffffffffffff80821115610c8b57600080fd5b818501915085601f830112610c9f57600080fd5b813581811115610cae57600080fd5b8660208260051b8501011115610cc357600080fd5b60209290920196919550909350505050565b600080600060608486031215610cea57600080fd5b8335610cf581610af7565b9250610d0360208501610b0c565b9150604084013590509250925092565b60008060008060808587031215610d2957600080fd5b8435610d3481610af7565b9350610d4260208601610b0c565b9250610d5060408601610b0c565b9396929550929360600135925050565b600060208284031215610d7257600080fd5b8151610b7781610af7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215610dd957600080fd5b81518015158114610b7757600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b60608201526080019056fea2646970667358221220b9a0b1d8df8cd92b847388841ab1f1297b81cc8e649136efd63d722bd4db6bc364736f6c634300080c0033","storage":{}},"0x9d4454b023096f34b160d6b654540c56a1f81688":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610708565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b606061028583836040518060600160405280602781526020016108076027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f5565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051d565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055d565b60606104258461028c565b6104805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049b91906107b7565b600060405180830381855af49150503d80600081146104d6576040519150601f19603f3d011682016040523d82523d6000602084013e6104db565b606091505b50915091506104eb828286610606565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b6105268161063f565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c25760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610615575081610285565b8251156106255782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d3565b6106488161028c565b6106aa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e5565b80356001600160a01b03811681146106e857600080fd5b919050565b6000602082840312156106ff57600080fd5b610285826106d1565b60008060006040848603121561071d57600080fd5b610726846106d1565b9250602084013567ffffffffffffffff8082111561074357600080fd5b818601915086601f83011261075757600080fd5b81358181111561076657600080fd5b87602082850101111561077857600080fd5b6020830194508093505050509250925092565b60005b838110156107a657818101518382015260200161078e565b838111156103c05750506000910152565b600082516107c981846020870161078b565b9190910192915050565b60208152600082518060208401526107f281604085016020870161078b565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ab35762b4d1f75b1e263a7d35551d76364ebe42ec4dea28ea9653eb442534bbd64736f6c634300080c0033","storage":{"0x17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec":"0x1","0x295841a49a1089f4b560f91cfbb0133326654dcbb1041861fc5dde96c724a22f":"0x8000000000000000000000000000000000000000000000000","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb7278a61aa25c888815afc32ad3cc52ff24fe575","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x70e0ba845a1a0f2da3359c97e0285013525ffc49"}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063c298557814602d575b600080fd5b600060405190815260200160405180910390f3fea26469706673582212209882247b872d905a05380b42c11d1716ad43e9b19643a0cf588a80c0958bf20d64736f6c634300080c0033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":1,"balance":"0x21d8f1965e57864f178","code":"0x","storage":{}},"0xa513e6e4b8f2a923d98304ec87f64353c4d5c853":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x4c116bb629bff7a8373c2378bbd919f8349b8f25","0x9c":"0x65c36ac0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb306bf915c4d645ff596e518faf3f9669b97016","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106103785760003560e01c806360d7faed116101d3578063b7f06ebe11610104578063cf80873e116100a2578063f16172b01161007c578063f16172b01461097d578063f2fde38b14610990578063f698da25146109a3578063fabc1cbc146109ab57600080fd5b8063cf80873e14610936578063da8be86414610957578063eea9064b1461096a57600080fd5b8063c488375a116100de578063c488375a14610853578063c5e480db14610873578063c94b511114610919578063ca661c041461092c57600080fd5b8063b7f06ebe146107f9578063bb45fef21461081c578063c448feb81461084a57600080fd5b8063886f1195116101715780639104c3191161014b5780639104c3191461078457806399be81c81461079f578063a1788484146107b2578063b1344271146107d257600080fd5b8063886f1195146107405780638da5cb5b14610753578063900413471461076457600080fd5b80636d70f7ae116101ad5780636d70f7ae146106e7578063715018a6146106fa578063778e55f3146107025780637f5480711461072d57600080fd5b806360d7faed14610698578063635bbd10146106ab57806365da1264146106be57600080fd5b806329c77d4f116102ad5780634fc40b611161024b5780635ac86ab7116102255780635ac86ab71461062e5780635c975abb146106515780635cfe8d2c146106595780635f966f141461066c57600080fd5b80634fc40b6114610609578063595c6a6714610613578063597b36da1461061b57600080fd5b80633cdeb5e0116102875780633cdeb5e0146105695780633e28391d1461059857806343377382146105bb5780634665bcda146105e257600080fd5b806329c77d4f146104f7578063334043961461051757806339b70e381461052a57600080fd5b8063136439dd1161031a5780631bbce091116102f45780631bbce0911461049757806320606b70146104aa57806322bf40e4146104d157806328a573ae146104e457600080fd5b8063136439dd146104385780631522bf021461044b578063169283651461045e57600080fd5b80630dd8dd02116103565780630dd8dd02146103dd5780630f589e59146103fd57806310d67a2f14610412578063132d49671461042557600080fd5b80630449ca391461037d57806304a4f979146103a35780630b9f487a146103ca575b600080fd5b61039061038b366004614adb565b6109be565b6040519081526020015b60405180910390f35b6103907f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad81565b6103906103d8366004614b41565b610a43565b6103f06103eb366004614adb565b610b05565b60405161039a9190614b9c565b61041061040b366004614c39565b610e6e565b005b610410610420366004614c8c565b610fbe565b610410610433366004614cb0565b611071565b610410610446366004614cf1565b611128565b610410610459366004614d0a565b611267565b61039061046c366004614c8c565b6001600160a01b0316600090815260996020526040902060010154600160a01b900463ffffffff1690565b6103906104a5366004614cb0565b61127b565b6103907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6104106104df366004614d75565b6112a9565b6104106104f2366004614cb0565b6113ed565b610390610505366004614c8c565b609b6020526000908152604090205481565b610410610525366004614e1c565b61149d565b6105517f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570781565b6040516001600160a01b03909116815260200161039a565b610551610577366004614c8c565b6001600160a01b039081166000908152609960205260409020600101541690565b6105ab6105a6366004614c8c565b6115da565b604051901515815260200161039a565b6103907f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b81565b6105517f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85381565b6103906213c68081565b6104106115fa565b61039061062936600461513b565b6116c1565b6105ab61063c366004615177565b606654600160ff9092169190911b9081161490565b606654610390565b6104106106673660046151ed565b6116f1565b61055161067a366004614c8c565b6001600160a01b039081166000908152609960205260409020541690565b6104106106a636600461534d565b61199c565b6104106106b9366004614cf1565b611a37565b6105516106cc366004614c8c565b609a602052600090815260409020546001600160a01b031681565b6105ab6106f5366004614c8c565b611a48565b610410611a68565b6103906107103660046153dc565b609860209081526000928352604080842090915290825290205481565b61041061073b3660046154bd565b611a7c565b606554610551906001600160a01b031681565b6033546001600160a01b0316610551565b61077761077236600461554d565b611b81565b60405161039a91906155d7565b61055173beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6104106107ad3660046155ea565b611c5b565b6103906107c0366004614c8c565b609f6020526000908152604090205481565b6105517f0000000000000000000000000165878a594ca255338adfa4d48449f69242eb8f81565b6105ab610807366004614cf1565b609e6020526000908152604090205460ff1681565b6105ab61082a36600461561f565b609c60209081526000928352604080842090915290825290205460ff1681565b610390609d5481565b610390610861366004614c8c565b60a16020526000908152604090205481565b6108e3610881366004614c8c565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260998352839020835191820184528054851682526001015493841691810191909152600160a01b90920463ffffffff169082015290565b6040805182516001600160a01b039081168252602080850151909116908201529181015163ffffffff169082015260600161039a565b61039061092736600461564b565b611d2d565b61039062034bc081565b610949610944366004614c8c565b611de6565b60405161039a9291906156cc565b6103f0610965366004614c8c565b61219e565b6104106109783660046156f1565b612662565b61041061098b366004615749565b61266e565b61041061099e366004614c8c565b6126ff565b610390612775565b6104106109b9366004614cf1565b6127b3565b609d54600090815b83811015610a3b57600060a160008787858181106109e6576109e6615765565b90506020020160208101906109fb9190614c8c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811115610a2a578092505b50610a3481615791565b90506109c6565b509392505050565b604080517f14bde674c9f64b2ad00eaaee4a8bed1fabef35c7507e3c5b9cfc9436909a2dad6020808301919091526001600160a01b038681168385015288811660608401528716608083015260a0820185905260c08083018590528351808403909101815260e0909201909252805191012060009081610ac1612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f19018152919052805160209091012098975050505050505050565b60665460609060019060029081161415610b3a5760405162461bcd60e51b8152600401610b31906157ac565b60405180910390fd5b6000836001600160401b03811115610b5457610b54614ebe565b604051908082528060200260200182016040528015610b7d578160200160208202803683370190505b50336000908152609a60205260408120549192506001600160a01b03909116905b85811015610e6357868682818110610bb857610bb8615765565b9050602002810190610bca91906157e3565b610bd8906020810190615803565b9050878783818110610bec57610bec615765565b9050602002810190610bfe91906157e3565b610c089080615803565b905014610c7d5760405162461bcd60e51b815260206004820152603860248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a20696e707574206c656e677468206d69736d6174636800000000000000006064820152608401610b31565b33878783818110610c9057610c90615765565b9050602002810190610ca291906157e3565b610cb3906060810190604001614c8c565b6001600160a01b031614610d2f5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e717565756557697468647261776160448201527f6c3a2077697468647261776572206d757374206265207374616b6572000000006064820152608401610b31565b610e343383898985818110610d4657610d46615765565b9050602002810190610d5891906157e3565b610d69906060810190604001614c8c565b8a8a86818110610d7b57610d7b615765565b9050602002810190610d8d91906157e3565b610d979080615803565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508e92508d9150889050818110610ddd57610ddd615765565b9050602002810190610def91906157e3565b610dfd906020810190615803565b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061290f92505050565b838281518110610e4657610e46615765565b602090810291909101015280610e5b81615791565b915050610b9e565b509095945050505050565b336000908152609960205260409020546001600160a01b031615610f085760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e726567697374657241734f70657260448201527f61746f723a206f70657261746f722068617320616c72656164792072656769736064820152641d195c995960da1b608482015260a401610b31565b610f123384612ecf565b604080518082019091526060815260006020820152610f34338083600061316b565b336001600160a01b03167f8e8485583a2310d41f7c82b9427d0bd49bad74bb9cff9d3402a29d8f9b28a0e285604051610f6d919061584c565b60405180910390a2336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908484604051610fb092919061589e565b60405180910390a250505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103591906158cd565b6001600160a01b0316336001600160a01b0316146110655760405162461bcd60e51b8152600401610b31906158ea565b61106e81613510565b50565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757071614806110d05750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6110ec5760405162461bcd60e51b8152600401610b3190615934565b6110f5836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613607565b505b505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111949190615991565b6111b05760405162461bcd60e51b8152600401610b31906159ae565b606654818116146112295760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b61126f613682565b611121848484846136dc565b6001600160a01b0383166000908152609b60205260408120546112a085828686611d2d565b95945050505050565b600054610100900460ff16158080156112c95750600054600160ff909116105b806112e35750303b1580156112e3575060005460ff166001145b6113465760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b31565b6000805460ff191660011790558015611369576000805461ff0019166101001790555b6113738888613902565b61137b6139e8565b60975561138789613a7f565b61139086613ad1565b61139c858585856136dc565b80156113e2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b336001600160a01b037f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f87570716148061144c5750336001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316145b6114685760405162461bcd60e51b8152600401610b3190615934565b611471836115da565b15611123576001600160a01b038084166000908152609a60205260409020541661112181858585613bcb565b606654600290600490811614156114c65760405162461bcd60e51b8152600401610b31906157ac565b600260c95414156115195760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c95560005b888110156115c9576115b98a8a8381811061153e5761153e615765565b905060200281019061155091906159f6565b89898481811061156257611562615765565b90506020028101906115749190615803565b89898681811061158657611586615765565b9050602002013588888781811061159f5761159f615765565b90506020020160208101906115b49190615a0c565b613c46565b6115c281615791565b9050611521565b5050600160c9555050505050505050565b6001600160a01b039081166000908152609a602052604090205416151590565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116669190615991565b6116825760405162461bcd60e51b8152600401610b31906159ae565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b6000816040516020016116d49190615a9d565b604051602081830303815290604052805190602001209050919050565b60005b815181101561199857600082828151811061171157611711615765565b602002602001015190506000807f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031663cd293f6f846040518263ffffffff1660e01b815260040161176a9190615ab0565b60408051808303816000875af1158015611788573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ac9190615b5c565b91509150811561198a576040808401516001600160a01b0381166000908152609f602052918220805491928291906117e383615791565b919050555060006040518060e00160405280846001600160a01b031681526020018760a001516001600160a01b031681526020018760600151600001516001600160a01b03168152602001838152602001876080015163ffffffff16815260200187600001518152602001876020015181525090506000611863826116c1565b6000818152609e602052604090205490915060ff16156118f95760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e6d6967726174655175657565645760448201527f69746864726177616c733a207769746864726177616c20616c72656164792065606482015264786973747360d81b608482015260a401610b31565b6000818152609e602052604090819020805460ff19166001179055517f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f9906119449083908590615b8a565b60405180910390a160408051868152602081018390527fdc00758b65eef71dc3780c04ebe36cab6bdb266c3a698187e29e0f0dca012630910160405180910390a1505050505b8360010193505050506116f4565b5050565b606654600290600490811614156119c55760405162461bcd60e51b8152600401610b31906157ac565b600260c9541415611a185760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b31565b600260c955611a2a8686868686613c46565b5050600160c95550505050565b611a3f613682565b61106e81613ad1565b6001600160a01b0390811660009081526099602052604090205416151590565b611a70613682565b611a7a6000613a7f565b565b4283602001511015611b005760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e64656c6567617465546f4279536960448201527f676e61747572653a207374616b6572207369676e6174757265206578706972656064820152601960fa1b608482015260a401610b31565b6000609b6000876001600160a01b03166001600160a01b031681526020019081526020016000205490506000611b3c8783888860200151611d2d565b6001600160a01b0388166000908152609b602052604090206001840190558551909150611b6c9088908390614430565b611b788787868661316b565b50505050505050565b6060600082516001600160401b03811115611b9e57611b9e614ebe565b604051908082528060200260200182016040528015611bc7578160200160208202803683370190505b50905060005b8351811015610a3b576001600160a01b03851660009081526098602052604081208551909190869084908110611c0557611c05615765565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110611c4057611c40615765565b6020908102919091010152611c5481615791565b9050611bcd565b611c6433611a48565b611ce65760405162461bcd60e51b815260206004820152604760248201527f44656c65676174696f6e4d616e616765722e7570646174654f70657261746f7260448201527f4d657461646174615552493a2063616c6c6572206d75737420626520616e206f6064820152663832b930ba37b960c91b608482015260a401610b31565b336001600160a01b03167f02a919ed0e2acad1dd90f17ef2fa4ae5462ee1339170034a8531cca4b67080908383604051611d2192919061589e565b60405180910390a25050565b604080517f39111bc4a4d688e1f685123d7497d4615370152a8ee4a0593e647bd06ad8bb0b6020808301919091526001600160a01b0387811683850152851660608301526080820186905260a08083018590528351808403909101815260c0909201909252805191012060009081611da3612775565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b6040516360f4062b60e01b81526001600160a01b03828116600483015260609182916000917f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853909116906360f4062b90602401602060405180830381865afa158015611e56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7a9190615ba3565b6040516394f649dd60e01b81526001600160a01b03868116600483015291925060009182917f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707909116906394f649dd90602401600060405180830381865afa158015611eea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f129190810190615c17565b9150915060008313611f2957909590945092505050565b606080835160001415611fe3576040805160018082528183019092529060208083019080368337505060408051600180825281830190925292945090506020808301908036833701905050905073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600081518110611f9e57611f9e615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600081518110611fd257611fd2615765565b602002602001018181525050612191565b8351611ff0906001615cd1565b6001600160401b0381111561200757612007614ebe565b604051908082528060200260200182016040528015612030578160200160208202803683370190505b50915081516001600160401b0381111561204c5761204c614ebe565b604051908082528060200260200182016040528015612075578160200160208202803683370190505b50905060005b845181101561210f5784818151811061209657612096615765565b60200260200101518382815181106120b0576120b0615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508381815181106120e2576120e2615765565b60200260200101518282815181106120fc576120fc615765565b602090810291909101015260010161207b565b5073beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac082600184516121349190615ce9565b8151811061214457612144615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508481600184516121749190615ce9565b8151811061218457612184615765565b6020026020010181815250505b9097909650945050505050565b606654606090600190600290811614156121ca5760405162461bcd60e51b8152600401610b31906157ac565b6121d3836115da565b6122535760405162461bcd60e51b8152602060048201526044602482018190527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a207374908201527f616b6572206d7573742062652064656c65676174656420746f20756e64656c656064820152636761746560e01b608482015260a401610b31565b61225c83611a48565b156122cf5760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a206f7060448201527f657261746f72732063616e6e6f7420626520756e64656c6567617465640000006064820152608401610b31565b6001600160a01b03831661234b5760405162461bcd60e51b815260206004820152603c60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6e6e6f7420756e64656c6567617465207a65726f2061646472657373000000006064820152608401610b31565b6001600160a01b038084166000818152609a60205260409020549091169033148061237e5750336001600160a01b038216145b806123a557506001600160a01b038181166000908152609960205260409020600101541633145b6124175760405162461bcd60e51b815260206004820152603d60248201527f44656c65676174696f6e4d616e616765722e756e64656c65676174653a20636160448201527f6c6c65722063616e6e6f7420756e64656c6567617465207374616b65720000006064820152608401610b31565b60008061242386611de6565b9092509050336001600160a01b0387161461247957826001600160a01b0316866001600160a01b03167ff0eddf07e6ea14f388b47e1e94a0f464ecbd9eed4171130e0fc0e99fb4030a8a60405160405180910390a35b826001600160a01b0316866001600160a01b03167ffee30966a256b71e14bc0ebfc94315e28ef4a97a7131a9e2b7a310a73af4467660405160405180910390a36001600160a01b0386166000908152609a6020526040902080546001600160a01b031916905581516124fb576040805160008152602081019091529450612659565b81516001600160401b0381111561251457612514614ebe565b60405190808252806020026020018201604052801561253d578160200160208202803683370190505b50945060005b8251811015612657576040805160018082528183019092526000916020808301908036833750506040805160018082528183019092529293506000929150602080830190803683370190505090508483815181106125a3576125a3615765565b6020026020010151826000815181106125be576125be615765565b60200260200101906001600160a01b031690816001600160a01b0316815250508383815181106125f0576125f0615765565b60200260200101518160008151811061260b5761260b615765565b60200260200101818152505061262489878b858561290f565b88848151811061263657612636615765565b6020026020010181815250505050808061264f90615791565b915050612543565b505b50505050919050565b6111233384848461316b565b61267733611a48565b6126f55760405162461bcd60e51b815260206004820152604360248201527f44656c65676174696f6e4d616e616765722e6d6f646966794f70657261746f7260448201527f44657461696c733a2063616c6c6572206d75737420626520616e206f706572616064820152623a37b960e91b608482015260a401610b31565b61106e3382612ecf565b612707613682565b6001600160a01b03811661276c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b31565b61106e81613a7f565b60007f00000000000000000000000000000000000000000000000000000000000042684614156127a6575060975490565b6127ae6139e8565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906158cd565b6001600160a01b0316336001600160a01b03161461285a5760405162461bcd60e51b8152600401610b31906158ea565b6066541981196066541916146128d85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610b31565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200161125c565b60006001600160a01b0386166129a65760405162461bcd60e51b815260206004820152605060248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374616b65722063616e6e6f7460648201526f206265207a65726f206164647265737360801b608482015260a401610b31565b8251612a305760405162461bcd60e51b815260206004820152604d60248201527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448201527f6e6451756575655769746864726177616c3a207374726174656769657320636160648201526c6e6e6f7420626520656d70747960981b608482015260a401610b31565b60005b8351811015612ddd576001600160a01b03861615612a8957612a898688868481518110612a6257612a62615765565b6020026020010151868581518110612a7c57612a7c615765565b6020026020010151613607565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06001600160a01b0316848281518110612ab957612ab9615765565b60200260200101516001600160a01b03161415612b82577f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c8536001600160a01b031663beffbb8988858481518110612b1257612b12615765565b60200260200101516040518363ffffffff1660e01b8152600401612b4b9291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015612b6557600080fd5b505af1158015612b79573d6000803e3d6000fd5b50505050612dd5565b846001600160a01b0316876001600160a01b03161480612c5457507f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316639b4da03d858381518110612bde57612bde615765565b60200260200101516040518263ffffffff1660e01b8152600401612c1191906001600160a01b0391909116815260200190565b602060405180830381865afa158015612c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c529190615991565b155b612d205760405162461bcd60e51b8152602060048201526084602482018190527f44656c65676174696f6e4d616e616765722e5f72656d6f76655368617265734160448301527f6e6451756575655769746864726177616c3a2077697468647261776572206d7560648301527f73742062652073616d652061646472657373206173207374616b657220696620908201527f746869726450617274795472616e7366657273466f7262696464656e2061726560a482015263081cd95d60e21b60c482015260e401610b31565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b0316638c80d4e588868481518110612d6257612d62615765565b6020026020010151868581518110612d7c57612d7c615765565b60200260200101516040518463ffffffff1660e01b8152600401612da293929190615d00565b600060405180830381600087803b158015612dbc57600080fd5b505af1158015612dd0573d6000803e3d6000fd5b505050505b600101612a33565b506001600160a01b0386166000908152609f60205260408120805491829190612e0583615791565b919050555060006040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001876001600160a01b031681526020018381526020014363ffffffff1681526020018681526020018581525090506000612e6d826116c1565b6000818152609e602052604090819020805460ff19166001179055519091507f9009ab153e8014fbfb02f2217f5cde7aa7f9ad734ae85ca3ee3f4ca2fdd499f990612ebb9083908590615b8a565b60405180910390a198975050505050505050565b6000612ede6020830183614c8c565b6001600160a01b03161415612f785760405162461bcd60e51b815260206004820152605460248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a2063616e6e6f742073657420606561726e696e677352656365696064820152737665726020746f207a65726f206164647265737360601b608482015260a401610b31565b6213c680612f8c6060830160408401615d24565b63ffffffff1611156130415760405162461bcd60e51b815260206004820152606c60248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527f63616e6e6f74206265203e204d41585f5354414b45525f4f50545f4f55545f5760848201526b494e444f575f424c4f434b5360a01b60a482015260c401610b31565b6001600160a01b0382166000908152609960205260409081902060010154600160a01b900463ffffffff169061307d9060608401908401615d24565b63ffffffff1610156131135760405162461bcd60e51b815260206004820152605360248201527f44656c65676174696f6e4d616e616765722e5f7365744f70657261746f72446560448201527f7461696c733a207374616b65724f70744f757457696e646f77426c6f636b732060648201527218d85b9b9bdd08189948191958dc99585cd959606a1b608482015260a401610b31565b6001600160a01b038216600090815260996020526040902081906131378282615d61565b505060405133907ffebe5cd24b2cbc7b065b9d0fdeb904461e4afcff57dd57acda1e7832031ba7ac90611d2190849061584c565b606654600090600190811614156131945760405162461bcd60e51b8152600401610b31906157ac565b61319d856115da565b1561321a5760405162461bcd60e51b815260206004820152604160248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2073746160448201527f6b657220697320616c7265616479206163746976656c792064656c65676174656064820152601960fa1b608482015260a401610b31565b61322384611a48565b6132a35760405162461bcd60e51b815260206004820152604560248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a206f706560448201527f7261746f72206973206e6f74207265676973746572656420696e20456967656e6064820152642630bcb2b960d91b608482015260a401610b31565b6001600160a01b038085166000908152609960205260409020600101541680158015906132d95750336001600160a01b03821614155b80156132ee5750336001600160a01b03861614155b1561345b57428460200151101561336d5760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f766572207369676e617475726520657870697265640000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845290915290205460ff16156134075760405162461bcd60e51b815260206004820152603760248201527f44656c65676174696f6e4d616e616765722e5f64656c65676174653a2061707060448201527f726f76657253616c7420616c7265616479207370656e740000000000000000006064820152608401610b31565b6001600160a01b0381166000908152609c6020908152604080832086845282528220805460ff19166001179055850151613448908890889085908890610a43565b905061345982828760000151614430565b505b6001600160a01b038681166000818152609a602052604080822080546001600160a01b031916948a169485179055517fc3ee9f2e5fda98e8066a1f745b2df9285f416fe98cf2559cd21484b3d87433049190a36000806134ba88611de6565b9150915060005b82518110156113e257613508888a8584815181106134e1576134e1615765565b60200260200101518585815181106134fb576134fb615765565b6020026020010151613bcb565b6001016134c1565b6001600160a01b03811661359e5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610b31565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0380851660009081526098602090815260408083209386168352929052908120805483929061363e908490615ce9565b92505081905550836001600160a01b03167f6909600037b75d7b4733aedd815442b5ec018a827751c832aaff64eba5d6d2dd848484604051610fb093929190615d00565b6033546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b31565b8281146137645760405162461bcd60e51b815260206004820152604a60248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a20696e707574206c656e67746064820152690d040dad2e6dac2e8c6d60b31b608482015260a401610b31565b8260005b818110156138fa57600086868381811061378457613784615765565b90506020020160208101906137999190614c8c565b6001600160a01b038116600090815260a160205260408120549192508686858181106137c7576137c7615765565b90506020020135905062034bc081111561388b5760405162461bcd60e51b815260206004820152607360248201527f44656c65676174696f6e4d616e616765722e5f7365745374726174656779576960448201527f746864726177616c44656c6179426c6f636b733a205f7769746864726177616c60648201527f44656c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544860848201527244524157414c5f44454c41595f424c4f434b5360681b60a482015260c401610b31565b6001600160a01b038316600081815260a160209081526040918290208490558151928352820184905281018290527f0e7efa738e8b0ce6376a0c1af471655540d2e9a81647d7b09ed823018426576d9060600160405180910390a1505050806138f390615791565b9050613768565b505050505050565b6065546001600160a01b031615801561392357506001600160a01b03821615155b6139a55760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610b31565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261199882613510565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62034bc0811115613b8a5760405162461bcd60e51b815260206004820152607160248201527f44656c65676174696f6e4d616e616765722e5f7365744d696e5769746864726160448201527f77616c44656c6179426c6f636b733a205f6d696e5769746864726177616c446560648201527f6c6179426c6f636b732063616e6e6f74206265203e204d41585f5749544844526084820152704157414c5f44454c41595f424c4f434b5360781b60a482015260c401610b31565b609d5460408051918252602082018390527fafa003cd76f87ff9d62b35beea889920f33c0c42b8d45b74954d61d50f4b6b69910160405180910390a1609d55565b6001600160a01b03808516600090815260986020908152604080832093861683529290529081208054839290613c02908490615cd1565b92505081905550836001600160a01b03167f1ec042c965e2edd7107b51188ee0f383e22e76179041ab3a9d18ff151405166c848484604051610fb093929190615d00565b6000613c5461062987615dc4565b6000818152609e602052604090205490915060ff16613cd55760405162461bcd60e51b81526020600482015260436024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20616374696f6e206973206e6f7420696e20717560648201526265756560e81b608482015260a401610b31565b609d544390613cea60a0890160808a01615d24565b63ffffffff16613cfa9190615cd1565b1115613d825760405162461bcd60e51b815260206004820152605f6024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206d696e5769746864726177616c44656c61794260648201527f6c6f636b7320706572696f6420686173206e6f74207965742070617373656400608482015260a401610b31565b613d926060870160408801614c8c565b6001600160a01b0316336001600160a01b031614613e1f5760405162461bcd60e51b81526020600482015260506024820152600080516020615efc83398151915260448201527f645769746864726177616c3a206f6e6c7920776974686472617765722063616e60648201526f1031b7b6b83632ba329030b1ba34b7b760811b608482015260a401610b31565b8115613ea157613e3260a0870187615803565b85149050613ea15760405162461bcd60e51b81526020600482015260426024820152600080516020615efc83398151915260448201527f645769746864726177616c3a20696e707574206c656e677468206d69736d61746064820152610c6d60f31b608482015260a401610b31565b6000818152609e60205260409020805460ff1916905581156140065760005b613ecd60a0880188615803565b9050811015614000574360a16000613ee860a08b018b615803565b85818110613ef857613ef8615765565b9050602002016020810190613f0d9190614c8c565b6001600160a01b03168152602081019190915260400160002054613f3760a08a0160808b01615d24565b63ffffffff16613f479190615cd1565b1115613f655760405162461bcd60e51b8152600401610b3190615dd6565b613ff8613f756020890189614c8c565b33613f8360a08b018b615803565b85818110613f9357613f93615765565b9050602002016020810190613fa89190614c8c565b613fb560c08c018c615803565b86818110613fc557613fc5615765565b905060200201358a8a87818110613fde57613fde615765565b9050602002016020810190613ff39190614c8c565b6145ea565b600101613ec0565b506143f5565b336000908152609a60205260408120546001600160a01b0316905b61402e60a0890189615803565b90508110156143f2574360a1600061404960a08c018c615803565b8581811061405957614059615765565b905060200201602081019061406e9190614c8c565b6001600160a01b0316815260208101919091526040016000205461409860a08b0160808c01615d24565b63ffffffff166140a89190615cd1565b11156140c65760405162461bcd60e51b8152600401610b3190615dd6565b73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac06140e860a08a018a615803565b838181106140f8576140f8615765565b905060200201602081019061410d9190614c8c565b6001600160a01b0316141561425d57600061412b60208a018a614c8c565b905060006001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c85316630e81073c8361416c60c08e018e615803565b8781811061417c5761417c615765565b6040516001600160e01b031960e087901b1681526001600160a01b03909416600485015260200291909101356024830152506044016020604051808303816000875af11580156141d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141f49190615ba3565b6001600160a01b038084166000908152609a602052604090205491925016801561425557614255818461422a60a08f018f615803565b8881811061423a5761423a615765565b905060200201602081019061424f9190614c8c565b85613bcb565b5050506143ea565b7f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f8757076001600160a01b031663c4623ea13389898581811061429f5761429f615765565b90506020020160208101906142b49190614c8c565b6142c160a08d018d615803565b868181106142d1576142d1615765565b90506020020160208101906142e69190614c8c565b6142f360c08e018e615803565b8781811061430357614303615765565b60405160e088901b6001600160e01b03191681526001600160a01b03968716600482015294861660248601529290941660448401526020909102013560648201526084019050600060405180830381600087803b15801561436357600080fd5b505af1158015614377573d6000803e3d6000fd5b505050506001600160a01b038216156143ea576143ea823361439c60a08c018c615803565b858181106143ac576143ac615765565b90506020020160208101906143c19190614c8c565b6143ce60c08d018d615803565b868181106143de576143de615765565b90506020020135613bcb565b600101614021565b50505b6040518181527fc97098c2f658800b4df29001527f7324bcdffcf6e8751a699ab920a1eced5b1d9060200160405180910390a1505050505050565b6001600160a01b0383163b1561454a57604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144709086908690600401615e5e565b602060405180830381865afa15801561448d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b19190615ebb565b6001600160e01b031916146111235760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a401610b31565b826001600160a01b031661455e838361472a565b6001600160a01b0316146111235760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a401610b31565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014156146955760405162387b1360e81b81526001600160a01b037f000000000000000000000000a513e6e4b8f2a923d98304ec87f64353c4d5c853169063387b13009061465e90889088908790600401615d00565b600060405180830381600087803b15801561467857600080fd5b505af115801561468c573d6000803e3d6000fd5b50505050614723565b60405163c608c7f360e01b81526001600160a01b03858116600483015284811660248301526044820184905282811660648301527f0000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707169063c608c7f390608401600060405180830381600087803b15801561470f57600080fd5b505af11580156113e2573d6000803e3d6000fd5b5050505050565b60008060006147398585614746565b91509150610a3b816147b6565b60008082516041141561477d5760208301516040840151606085015160001a61477187828585614971565b945094505050506147af565b8251604014156147a7576020830151604084015161479c868383614a5e565b9350935050506147af565b506000905060025b9250929050565b60008160048111156147ca576147ca615ee5565b14156147d35750565b60018160048111156147e7576147e7615ee5565b14156148355760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610b31565b600281600481111561484957614849615ee5565b14156148975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b31565b60038160048111156148ab576148ab615ee5565b14156149045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b31565b600481600481111561491857614918615ee5565b141561106e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b31565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156149a85750600090506003614a55565b8460ff16601b141580156149c057508460ff16601c14155b156149d15750600090506004614a55565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614a25573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614a4e57600060019250925050614a55565b9150600090505b94509492505050565b6000806001600160ff1b03831681614a7b60ff86901c601b615cd1565b9050614a8987828885614971565b935093505050935093915050565b60008083601f840112614aa957600080fd5b5081356001600160401b03811115614ac057600080fd5b6020830191508360208260051b85010111156147af57600080fd5b60008060208385031215614aee57600080fd5b82356001600160401b03811115614b0457600080fd5b614b1085828601614a97565b90969095509350505050565b6001600160a01b038116811461106e57600080fd5b8035614b3c81614b1c565b919050565b600080600080600060a08688031215614b5957600080fd5b8535614b6481614b1c565b94506020860135614b7481614b1c565b93506040860135614b8481614b1c565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b81811015614bd457835183529284019291840191600101614bb8565b50909695505050505050565b600060608284031215614bf257600080fd5b50919050565b60008083601f840112614c0a57600080fd5b5081356001600160401b03811115614c2157600080fd5b6020830191508360208285010111156147af57600080fd5b600080600060808486031215614c4e57600080fd5b614c588585614be0565b925060608401356001600160401b03811115614c7357600080fd5b614c7f86828701614bf8565b9497909650939450505050565b600060208284031215614c9e57600080fd5b8135614ca981614b1c565b9392505050565b600080600060608486031215614cc557600080fd5b8335614cd081614b1c565b92506020840135614ce081614b1c565b929592945050506040919091013590565b600060208284031215614d0357600080fd5b5035919050565b60008060008060408587031215614d2057600080fd5b84356001600160401b0380821115614d3757600080fd5b614d4388838901614a97565b90965094506020870135915080821115614d5c57600080fd5b50614d6987828801614a97565b95989497509550505050565b60008060008060008060008060c0898b031215614d9157600080fd5b8835614d9c81614b1c565b97506020890135614dac81614b1c565b9650604089013595506060890135945060808901356001600160401b0380821115614dd657600080fd5b614de28c838d01614a97565b909650945060a08b0135915080821115614dfb57600080fd5b50614e088b828c01614a97565b999c989b5096995094979396929594505050565b6000806000806000806000806080898b031215614e3857600080fd5b88356001600160401b0380821115614e4f57600080fd5b614e5b8c838d01614a97565b909a50985060208b0135915080821115614e7457600080fd5b614e808c838d01614a97565b909850965060408b0135915080821115614e9957600080fd5b614ea58c838d01614a97565b909650945060608b0135915080821115614dfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715614ef657614ef6614ebe565b60405290565b604080519081016001600160401b0381118282101715614ef657614ef6614ebe565b60405160c081016001600160401b0381118282101715614ef657614ef6614ebe565b604051601f8201601f191681016001600160401b0381118282101715614f6857614f68614ebe565b604052919050565b63ffffffff8116811461106e57600080fd5b8035614b3c81614f70565b60006001600160401b03821115614fa657614fa6614ebe565b5060051b60200190565b600082601f830112614fc157600080fd5b81356020614fd6614fd183614f8d565b614f40565b82815260059290921b84018101918181019086841115614ff557600080fd5b8286015b8481101561501957803561500c81614b1c565b8352918301918301614ff9565b509695505050505050565b600082601f83011261503557600080fd5b81356020615045614fd183614f8d565b82815260059290921b8401810191818101908684111561506457600080fd5b8286015b848110156150195780358352918301918301615068565b600060e0828403121561509157600080fd5b615099614ed4565b90506150a482614b31565b81526150b260208301614b31565b60208201526150c360408301614b31565b6040820152606082013560608201526150de60808301614f82565b608082015260a08201356001600160401b03808211156150fd57600080fd5b61510985838601614fb0565b60a084015260c084013591508082111561512257600080fd5b5061512f84828501615024565b60c08301525092915050565b60006020828403121561514d57600080fd5b81356001600160401b0381111561516357600080fd5b61516f8482850161507f565b949350505050565b60006020828403121561518957600080fd5b813560ff81168114614ca957600080fd5b6000604082840312156151ac57600080fd5b6151b4614efc565b905081356151c181614b1c565b815260208201356bffffffffffffffffffffffff811681146151e257600080fd5b602082015292915050565b6000602080838503121561520057600080fd5b82356001600160401b038082111561521757600080fd5b818501915085601f83011261522b57600080fd5b8135615239614fd182614f8d565b81815260059190911b8301840190848101908883111561525857600080fd5b8585015b83811015615332578035858111156152745760008081fd5b860160e0818c03601f190181131561528c5760008081fd5b615294614f1e565b89830135888111156152a65760008081fd5b6152b48e8c83870101614fb0565b825250604080840135898111156152cb5760008081fd5b6152d98f8d83880101615024565b8c8401525060606152eb818601614b31565b82840152608091506152ff8f83870161519a565b9083015261530f60c08501614f82565b9082015261531e838301614b31565b60a08201528552505091860191860161525c565b5098975050505050505050565b801515811461106e57600080fd5b60008060008060006080868803121561536557600080fd5b85356001600160401b038082111561537c57600080fd5b9087019060e0828a03121561539057600080fd5b909550602087013590808211156153a657600080fd5b506153b388828901614a97565b9095509350506040860135915060608601356153ce8161533f565b809150509295509295909350565b600080604083850312156153ef57600080fd5b82356153fa81614b1c565b9150602083013561540a81614b1c565b809150509250929050565b60006040828403121561542757600080fd5b61542f614efc565b905081356001600160401b038082111561544857600080fd5b818401915084601f83011261545c57600080fd5b813560208282111561547057615470614ebe565b615482601f8301601f19168201614f40565b9250818352868183860101111561549857600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600080600080600060a086880312156154d557600080fd5b85356154e081614b1c565b945060208601356154f081614b1c565b935060408601356001600160401b038082111561550c57600080fd5b61551889838a01615415565b9450606088013591508082111561552e57600080fd5b5061553b88828901615415565b95989497509295608001359392505050565b6000806040838503121561556057600080fd5b823561556b81614b1c565b915060208301356001600160401b0381111561558657600080fd5b61559285828601614fb0565b9150509250929050565b600081518084526020808501945080840160005b838110156155cc578151875295820195908201906001016155b0565b509495945050505050565b602081526000614ca9602083018461559c565b600080602083850312156155fd57600080fd5b82356001600160401b0381111561561357600080fd5b614b1085828601614bf8565b6000806040838503121561563257600080fd5b823561563d81614b1c565b946020939093013593505050565b6000806000806080858703121561566157600080fd5b843561566c81614b1c565b935060208501359250604085013561568381614b1c565b9396929550929360600135925050565b600081518084526020808501945080840160005b838110156155cc5781516001600160a01b0316875295820195908201906001016156a7565b6040815260006156df6040830185615693565b82810360208401526112a0818561559c565b60008060006060848603121561570657600080fd5b833561571181614b1c565b925060208401356001600160401b0381111561572c57600080fd5b61573886828701615415565b925050604084013590509250925092565b60006060828403121561575b57600080fd5b614ca98383614be0565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156157a5576157a561577b565b5060010190565b60208082526019908201527f5061757361626c653a20696e6465782069732070617573656400000000000000604082015260600190565b60008235605e198336030181126157f957600080fd5b9190910192915050565b6000808335601e1984360301811261581a57600080fd5b8301803591506001600160401b0382111561583457600080fd5b6020019150600581901b36038213156147af57600080fd5b60608101823561585b81614b1c565b6001600160a01b03908116835260208401359061587782614b1c565b166020830152604083013561588b81614f70565b63ffffffff811660408401525092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156158df57600080fd5b8151614ca981614b1c565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526037908201527f44656c65676174696f6e4d616e616765723a206f6e6c7953747261746567794d60408201527f616e616765724f72456967656e506f644d616e61676572000000000000000000606082015260800190565b6000602082840312156159a357600080fd5b8151614ca98161533f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b6000823560de198336030181126157f957600080fd5b600060208284031215615a1e57600080fd5b8135614ca98161533f565b600060018060a01b03808351168452806020840151166020850152806040840151166040850152506060820151606084015263ffffffff608083015116608084015260a082015160e060a0850152615a8460e0850182615693565b905060c083015184820360c08601526112a0828261559c565b602081526000614ca96020830184615a29565b602081526000825160e06020840152615acd610100840182615693565b90506020840151601f19848303016040850152615aea828261559c565b915050604084015160018060a01b03808216606086015260608601519150808251166080860152506bffffffffffffffffffffffff60208201511660a0850152506080840151615b4260c085018263ffffffff169052565b5060a08401516001600160a01b03811660e0850152610a3b565b60008060408385031215615b6f57600080fd5b8251615b7a8161533f565b6020939093015192949293505050565b82815260406020820152600061516f6040830184615a29565b600060208284031215615bb557600080fd5b5051919050565b600082601f830112615bcd57600080fd5b81516020615bdd614fd183614f8d565b82815260059290921b84018101918181019086841115615bfc57600080fd5b8286015b848110156150195780518352918301918301615c00565b60008060408385031215615c2a57600080fd5b82516001600160401b0380821115615c4157600080fd5b818501915085601f830112615c5557600080fd5b81516020615c65614fd183614f8d565b82815260059290921b84018101918181019089841115615c8457600080fd5b948201945b83861015615cab578551615c9c81614b1c565b82529482019490820190615c89565b91880151919650909350505080821115615cc457600080fd5b5061559285828601615bbc565b60008219821115615ce457615ce461577b565b500190565b600082821015615cfb57615cfb61577b565b500390565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060208284031215615d3657600080fd5b8135614ca981614f70565b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135615d6c81614b1c565b615d768183615d41565b50600181016020830135615d8981614b1c565b615d938183615d41565b506040830135615da281614f70565b815463ffffffff60a01b191660a09190911b63ffffffff60a01b161790555050565b6000615dd0368361507f565b92915050565b6020808252606e90820152600080516020615efc83398151915260408201527f645769746864726177616c3a207769746864726177616c44656c6179426c6f6360608201527f6b7320706572696f6420686173206e6f74207965742070617373656420666f7260808201526d207468697320737472617465677960901b60a082015260c00190565b82815260006020604081840152835180604085015260005b81811015615e9257858101830151858201606001528201615e76565b81811115615ea4576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215615ecd57600080fd5b81516001600160e01b031981168114614ca957600080fd5b634e487b7160e01b600052602160045260246000fdfe44656c65676174696f6e4d616e616765722e5f636f6d706c6574655175657565a2646970667358221220d66f588615166c5a17b325e84a4667d637f2966626a1aabc3c0fecdfe833625064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xa85233c63b9ee964add6f2cffe00fd84eb32338f":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x3f1c547b21f65e10480de3ad8e19faac46c95034","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xb0d4afd8879ed9f52b28595d31b441d079b2ca07":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061022d5760003560e01c80636fe9b41a1161013b578063b98fba4f116100b8578063efcf4edb1161007c578063efcf4edb146105b5578063f2fde38b146105c8578063f63c5bab146105ad578063f8c8765e146105db578063fabc1cbc146105ee57600080fd5b8063b98fba4f14610558578063cf4b17101461056b578063da16491f14610573578063df5cf72314610586578063ef024458146105ad57600080fd5b80638da5cb5b116100ff5780638da5cb5b146104ef57806395eebee614610500578063a168e3c014610523578063a35d2e0514610543578063b98d09081461054b57600080fd5b80636fe9b41a14610499578063715018a6146104ac5780637afa1eed146104b4578063886f1195146104ce5780638cbc379a146104e157600080fd5b8063416c7e5e116101c95780635c975abb1161018d5780635c975abb146103fb5780635df4594614610403578063683048351461042a5780636d14a987146104515780636efb46361461047857600080fd5b8063416c7e5e1461036c5780634f19ade71461037f578063595c6a67146103ad5780635ac86ab7146103b55780635ace2df7146103e857600080fd5b806310d67a2f14610232578063136439dd14610247578063171f1d5b1461025a5780631ad4318914610289578063245a7bfc146102c5578063292f7a4e146102e55780632e44b3491461030f57806332a8ad1e1461031f5780633df4c86614610339575b600080fd5b6102456102403660046136fc565b610601565b005b610245610255366004613719565b6106bd565b61026d610268366004613897565b6107ea565b6040805192151583529015156020830152015b60405180910390f35b6102b07f000000000000000000000000000000000000000000000000000000000000001e81565b60405163ffffffff9091168152602001610280565b60ca546102d8906001600160a01b031681565b60405161028091906138e8565b6102f86102f3366004613bfa565b610974565b604080519215158352602083019190915201610280565b60c9546102b09063ffffffff1681565b610327600281565b60405160ff9091168152602001610280565b60c9546103549064010000000090046001600160401b031681565b6040516001600160401b039091168152602001610280565b61024561037a366004613c9d565b610a41565b61039f61038d366004613cba565b60cb6020526000908152604090205481565b604051908152602001610280565b610245610bb6565b6103d86103c3366004613ce4565b606654600160ff9092169190911b9081161490565b6040519015158152602001610280565b6102456103f6366004613d2b565b610c70565b60665461039f565b6102d87f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168881565b6102d87f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81565b6102d87f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b61048b610486366004613dbc565b610cfa565b604051610280929190613e86565b6103d86104a7366004613ee1565b611c07565b610245611c77565b60c9546102d890600160601b90046001600160a01b031681565b6065546102d8906001600160a01b031681565b60c95463ffffffff166102b0565b6033546001600160a01b03166102d8565b6103d861050e366004613cba565b60cd6020526000908152604090205460ff1681565b61039f610531366004613cba565b60cc6020526000908152604090205481565b610327600181565b6097546103d89060ff1681565b6103d8610566366004613f55565b611c8b565b610327600081565b610245610581366004613fb3565b611cea565b6102d87f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b6102b0606481565b6102456105c3366004614034565b612015565b6102456105d63660046136fc565b6123c6565b6102456105e93660046140a9565b61243c565b6102456105fc366004613719565b61259b565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106789190614105565b6001600160a01b0316336001600160a01b0316146106b15760405162461bcd60e51b81526004016106a890614122565b60405180910390fd5b6106ba816126f2565b50565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906106ed9033906004016138e8565b602060405180830381865afa15801561070a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072e919061416c565b61074a5760405162461bcd60e51b81526004016106a890614189565b606654818116146107be5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b60648201526084016106a8565b60668190556040518181523390600080516020614921833981519152906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610832576108326141d1565b60200201518951600160200201518a60200151600060028110610857576108576141d1565b60200201518b60200151600160028110610873576108736141d1565b602090810291909101518c518d8301516040516108d09a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6108f391906141e7565b905061096661090c61090588846127e9565b8690612880565b610914612914565b61095c61094d85610947604080518082018252600080825260209182015281518083019092526001825260029082015290565b906127e9565b6109568c6129d4565b90612880565b886201d4c0612a64565b909890975095505050505050565b6000806000806109878a8a8a8a8a610cfa565b9150915060005b88811015610a2d578563ffffffff16836020015182815181106109b3576109b36141d1565b60200260200101516109c5919061421f565b6001600160601b0316606463ffffffff16846000015183815181106109ec576109ec6141d1565b60200260200101516109fe919061421f565b6001600160601b03161015610a1b5750600093509150610a369050565b80610a258161424e565b91505061098e565b50600193509150505b965096945050505050565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac39190614105565b6001600160a01b0316336001600160a01b031614610b6f5760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016106a8565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b60655460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e90610be69033906004016138e8565b602060405180830381865afa158015610c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c27919061416c565b610c435760405162461bcd60e51b81526004016106a890614189565b600019606681905560405190815233906000805160206149218339815191529060200160405180910390a2565b60665460029060049081161415610c995760405162461bcd60e51b81526004016106a890614269565b6000610ca86020860186613cba565b9050610cb48686612c88565b610cf157604051339063ffffffff8316907f0c6923c4a98292e75c5d677a1634527f87b6d19cf2c7d396aece99790c44a79590600090a350610cf3565b505b5050505050565b6040805180820190915260608082526020820152600084610d6b5760405162461bcd60e51b815260206004820152603760248201526000805160206149818339815191526044820152761c995cce88195b5c1d1e481c5d5bdc9d5b481a5b9c1d5d604a1b60648201526084016106a8565b60408301515185148015610d83575060a08301515185145b8015610d93575060c08301515185145b8015610da3575060e08301515185145b610e0d5760405162461bcd60e51b8152602060048201526041602482015260008051602061498183398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016106a8565b82515160208401515114610e855760405162461bcd60e51b815260206004820152604460248201819052600080516020614981833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016106a8565b4363ffffffff168463ffffffff1610610ef45760405162461bcd60e51b815260206004820152603c602482015260008051602061498183398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016106a8565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115610f3557610f35613732565b604051908082528060200260200182016040528015610f5e578160200160208202803683370190505b506020820152866001600160401b03811115610f7c57610f7c613732565b604051908082528060200260200182016040528015610fa5578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115610fd957610fd9613732565b604051908082528060200260200182016040528015611002578160200160208202803683370190505b5081526020860151516001600160401b0381111561102257611022613732565b60405190808252806020026020018201604052801561104b578160200160208202803683370190505b508160200181905250600061111d8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf169350639aa1653d925060048083019260209291908290030181865afa1580156110f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611118919061429c565b612c91565b905060005b8760200151518110156113b85761116788602001518281518110611148576111486141d1565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061117d5761117d6141d1565b6020908102919091010152801561123d57602083015161119e6001836142b9565b815181106111ae576111ae6141d1565b602002602001015160001c836020015182815181106111cf576111cf6141d1565b602002602001015160001c1161123d576040805162461bcd60e51b815260206004820152602481019190915260008051602061498183398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016106a8565b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b03166304ec635184602001518381518110611282576112826141d1565b60200260200101518b8b6000015185815181106112a1576112a16141d1565b60200260200101516040518463ffffffff1660e01b81526004016112de9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156112fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131f91906142d0565b6001600160c01b03168360000151828151811061133e5761133e6141d1565b6020026020010181815250506113a4610905611378848660000151858151811061136a5761136a6141d1565b602002602001015116612d09565b8a60200151848151811061138e5761138e6141d1565b6020026020010151612d3490919063ffffffff16565b9450806113b08161424e565b915050611122565b50506113c383612e18565b60975490935060ff166000816113da57600061145c565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906142f9565b905060005b8a811015611ada5782156115bc578963ffffffff16827f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b031663249a0c428f8f868181106114b8576114b86141d1565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa1580156114f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151c91906142f9565b6115269190614312565b116115bc5760405162461bcd60e51b8152602060048201526066602482015260008051602061498183398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016106a8565b7f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b03166368bccaac8d8d848181106115fd576115fd6141d1565b9050013560f81c60f81b60f81c8c8c60a001518581518110611621576116216141d1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa15801561167d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a1919061432a565b6001600160401b0319166116c48a604001518381518110611148576111486141d1565b67ffffffffffffffff1916146117605760405162461bcd60e51b8152602060048201526061602482015260008051602061498183398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016106a8565b61179089604001518281518110611779576117796141d1565b60200260200101518761288090919063ffffffff16565b95507f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031663c8294c568d8d848181106117d3576117d36141d1565b9050013560f81c60f81b60f81c8c8c60c0015185815181106117f7576117f76141d1565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118779190614355565b8560200151828151811061188d5761188d6141d1565b6001600160601b039092166020928302919091018201528501518051829081106118b9576118b96141d1565b6020026020010151856000015182815181106118d7576118d76141d1565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a6020015151811015611ac55761194f86600001518281518110611921576119216141d1565b60200260200101518f8f8681811061193b5761193b6141d1565b600192013560f81c9290921c811614919050565b15611ab3577f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031663f2be94ae8f8f86818110611995576119956141d1565b9050013560f81c60f81b60f81c8e896020015185815181106119b9576119b96141d1565b60200260200101518f60e0015188815181106119d7576119d76141d1565b602002602001015187815181106119f0576119f06141d1565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190614355565b8751805185908110611a8c57611a8c6141d1565b60200260200101818151611aa0919061437e565b6001600160601b03169052506001909101905b80611abd8161424e565b9150506118fb565b50508080611ad29061424e565b915050611461565b505050600080611af48c868a606001518b608001516107ea565b9150915081611b655760405162461bcd60e51b8152602060048201526043602482015260008051602061498183398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016106a8565b80611bc25760405162461bcd60e51b815260206004820152603960248201526000805160206149818339815191526044820152781c995cce881cda59db985d1d5c99481a5cc81a5b9d985b1a59603a1b60648201526084016106a8565b50506000878260200151604051602001611bdd9291906143a6565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6000611c1284612eb3565b823514611c315760405162461bcd60e51b81526004016106a8906143ee565b611c3f836040013583612ed1565b611c5b5760405162461bcd60e51b81526004016106a89061441b565b6000611c6685612f51565b6020840135149150505b9392505050565b611c7f612f81565b611c896000612fdb565b565b6000611c968461302d565b823514611cb55760405162461bcd60e51b81526004016106a8906143ee565b611cc3836020013583612ed1565b611cdf5760405162461bcd60e51b81526004016106a89061441b565b6000611c6685613066565b60ca546001600160a01b03163314611d445760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c657200000060448201526064016106a8565b60665460019060029081161415611d6d5760405162461bcd60e51b81526004016106a890614269565b6000611d7c6020860186613cba565b9050366000611d8e6080880188614446565b90925090506000611da56080890160608a01613cba565b905060cb6000611db860208a018a613cba565b63ffffffff1663ffffffff16815260200190815260200160002054611ddc89613079565b14611e1b5760405162461bcd60e51b815260206004820152600f60248201526e0aee4dedcce40e8c2e6d640d0c2e6d608b1b60448201526064016106a8565b600060cc81611e2d60208b018b613cba565b63ffffffff1663ffffffff1681526020019081526020016000205414611e8e5760405162461bcd60e51b815260206004820152601660248201527515185cdac8185b1c9958591e481c995cdc1bdb99195960521b60448201526064016106a8565b611eb87f000000000000000000000000000000000000000000000000000000000000001e8561448c565b63ffffffff164363ffffffff161115611f0c5760405162461bcd60e51b815260206004820152601660248201527514995cdc1bdb9cd9481d1a5b5948195e18d95959195960521b60448201526064016106a8565b6000611f178861308c565b9050600080611f2a8387878a8d89610974565b9150915081611f6c5760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b60448201526064016106a8565b6040805180820190915263ffffffff4316815260208101829052611f9f81611f99368e90038e018e6144b4565b9061309f565b60cc6000611fb060208f018f613cba565b63ffffffff1663ffffffff168152602001908152602001600020819055507f8016fcc5ad5dcf12fff2e128d239d9c6eb61f4041126bbac2c93fa8962627c1b8b82604051611fff92919061453a565b60405180910390a1505050505050505050505050565b60c954600160601b90046001600160a01b031633146120805760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b60648201526084016106a8565b606654600090600190811614156120a95760405162461bcd60e51b81526004016106a890614269565b606463ffffffff851611156121125760405162461bcd60e51b815260206004820152602960248201527f51756f72756d207468726573686f6c642067726561746572207468616e2064656044820152683737b6b4b730ba37b960b91b60648201526084016106a8565b856001600160401b0316856001600160401b031610156121835760405162461bcd60e51b815260206004820152602660248201527f66726f6d54696d657374616d702067726561746572207468616e20746f54696d6044820152650657374616d760d41b60648201526084016106a8565b42856001600160401b031611156121ef5760405162461bcd60e51b815260206004820152602a60248201527f746f54696d657374616d702067726561746572207468616e2063757272656e7460448201526902074696d657374616d760b41b60648201526084016106a8565b6001600160401b038616158061221b575060c9546001600160401b036401000000009091048116908716115b61228d5760405162461bcd60e51b815260206004820152603a60248201527f66726f6d54696d657374616d70206e6f742067726561746572207468616e206c60448201527f61737420636865636b706f696e7420746f54696d657374616d7000000000000060648201526084016106a8565b60006040518060a001604052804363ffffffff168152602001886001600160401b03168152602001876001600160401b031681526020018663ffffffff16815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050612313816130d2565b60c9805463ffffffff908116600090815260cb60205260409081902093909355905491519116907f78aec7310ea6fd468e3d3bbd16a806fd4987515634d5b5bf4cf4f036d9c3322590612367908490614564565b60405180910390a260c9546123839063ffffffff16600161448c565b60c980546001600160401b03909816640100000000026bffffffffffffffffffffffff1990981663ffffffff929092169190911796909617909555505050505050565b6123ce612f81565b6001600160a01b0381166124335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a8565b6106ba81612fdb565b600054610100900460ff161580801561245c5750600054600160ff909116105b806124765750303b158015612476575060005460ff166001145b6124d95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106a8565b6000805460ff1916600117905580156124fc576000805461ff0019166101001790555b6125078560006130e5565b61251084612fdb565b60ca80546001600160a01b0319166001600160a01b038581169190911790915560c980546001600160601b0316600160601b928516929092029190911790558015610cf3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126129190614105565b6001600160a01b0316336001600160a01b0316146126425760405162461bcd60e51b81526004016106a890614122565b6066541981196066541916146126bb5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b60648201526084016106a8565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107df565b6001600160a01b0381166127805760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016106a8565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015261280561360d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156128385761283a565bfe5b50806128785760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016106a8565b505092915050565b604080518082019091526000808252602082015261289c61362b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156128385750806128785760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016106a8565b61291c613649565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080612a04600080516020614941833981519152866141e7565b90505b612a10816131bd565b9093509150600080516020614941833981519152828309831415612a4a576040805180820190915290815260208101919091529392505050565b600080516020614941833981519152600182089050612a07565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190612a9661366e565b60005b6002811015612c5b576000612aaf826006614602565b9050848260028110612ac357612ac36141d1565b60200201515183612ad5836000614312565b600c8110612ae557612ae56141d1565b6020020152848260028110612afc57612afc6141d1565b60200201516020015183826001612b139190614312565b600c8110612b2357612b236141d1565b6020020152838260028110612b3a57612b3a6141d1565b6020020151515183612b4d836002614312565b600c8110612b5d57612b5d6141d1565b6020020152838260028110612b7457612b746141d1565b6020020151516001602002015183612b8d836003614312565b600c8110612b9d57612b9d6141d1565b6020020152838260028110612bb457612bb46141d1565b602002015160200151600060028110612bcf57612bcf6141d1565b602002015183612be0836004614312565b600c8110612bf057612bf06141d1565b6020020152838260028110612c0757612c076141d1565b602002015160200151600160028110612c2257612c226141d1565b602002015183612c33836005614312565b600c8110612c4357612c436141d1565b60200201525080612c538161424e565b915050612a99565b50612c6461368d565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b60005b92915050565b600080612c9d8461323f565b9050808360ff166001901b11611c705760405162461bcd60e51b815260206004820152603f602482015260008051602061496183398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016106a8565b6000805b8215612c8b57612d1e6001846142b9565b9092169180612d2c81614621565b915050612d0d565b60408051808201909152600080825260208201526102008261ffff1610612d905760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016106a8565b8161ffff1660011415612da4575081612c8b565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610612e0d57600161ffff871660ff83161c81161415612df057612ded8484612880565b93505b612dfa8384612880565b92506201fffe600192831b169101612dc0565b509195945050505050565b60408051808201909152600080825260208201528151158015612e3d57506020820151155b15612e5b575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206149418339815191528460200151612e8e91906141e7565b612ea6906000805160206149418339815191526142b9565b905292915050565b919050565b6000612ec26020830183614643565b6001600160401b031692915050565b6000610100612ee3606084018461465e565b905011158015612ef95750610100826080013511155b612f3f5760405162461bcd60e51b81526020600482015260176024820152760a6d2c8ca40dcdec8cae640caf0c6cacac840c8cae0e8d604b1b60448201526064016106a8565b612f48826133a8565b90921492915050565b600081604051602001612f6491906146a7565b604051602081830303815290604052805190602001209050919050565b6033546001600160a01b03163314611c895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a8565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000604061303e6020840184613cba565b63ffffffff16901b6130566040840160208501614643565b6001600160401b03161792915050565b600081604051602001612f649190614785565b600081604051602001612f649190614818565b600081604051602001612f6491906148d3565b600082826040516020016130b49291906148e1565b60405160208183030381529060405280519060200120905092915050565b600081604051602001612f649190614564565b6065546001600160a01b031615801561310657506001600160a01b03821615155b6131885760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016106a8565b606681905560405181815233906000805160206149218339815191529060200160405180910390a26131b9826126f2565b5050565b60008080600080516020614941833981519152600360008051602061494183398151915286600080516020614941833981519152888909090890506000613233827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206149418339815191526134a5565b91959194509092505050565b6000610100825111156132b65760405162461bcd60e51b815260206004820152604460248201819052600080516020614961833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016106a8565b81516132c457506000919050565b600080836000815181106132da576132da6141d1565b0160200151600160f89190911c81901b92505b845181101561339f57848181518110613308576133086141d1565b0160200151600160f89190911c1b915082821161338b5760405162461bcd60e51b8152602060048201526047602482015260008051602061496183398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016106a8565b918117916133988161424e565b90506132ed565b50909392505050565b60006133b261360d565b60408051843560208201526000910160405160208183030381529060405280519060200120905060006133e683838761354d565b905060006133fa60808701356101006142b9565b83901c90506000805b876080013581101561349957600060408901356001831b166134535761342c60608a018a61465e565b846134368161424e565b9550818110613447576134476141d1565b90506020020135613456565b60005b90506001821b84166134765761346f87600187846135f2565b9450613486565b61348387600183886135f2565b94505b50806134918161424e565b915050613403565b50919695505050505050565b6000806134b061368d565b6134b86136ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156128385750826135425760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016106a8565b505195945050505050565b600060208201356135d95760a082013561356957506000611c70565b828260a0013514156135bd5760405162461bcd60e51b815260206004820152601f60248201527f6e6f6e4d656d626572736869704c656166206e6f7420756e72656c617465640060448201526064016106a8565b6135d28460008460a001358560c001356135f2565b9050611c70565b6135ea8460008585602001356135f2565b949350505050565b60008385535060018401919091526021830152506041902090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061365c6136c9565b81526020016136696136c9565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146106ba57600080fd5b60006020828403121561370e57600080fd5b8135611c70816136e7565b60006020828403121561372b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561376a5761376a613732565b60405290565b60405161010081016001600160401b038111828210171561376a5761376a613732565b604051601f8201601f191681016001600160401b03811182821017156137bb576137bb613732565b604052919050565b6000604082840312156137d557600080fd5b6137dd613748565b9050813581526020820135602082015292915050565b600082601f83011261380457600080fd5b604051604081018181106001600160401b038211171561382657613826613732565b806040525080604084018581111561383d57600080fd5b845b81811015612e0d57803583526020928301920161383f565b60006080828403121561386957600080fd5b613871613748565b905061387d83836137f3565b815261388c83604084016137f3565b602082015292915050565b60008060008061012085870312156138ae57600080fd5b843593506138bf86602087016137c3565b92506138ce8660608701613857565b91506138dd8660e087016137c3565b905092959194509250565b6001600160a01b0391909116815260200190565b60008083601f84011261390e57600080fd5b5081356001600160401b0381111561392557600080fd5b60208301915083602082850101111561393d57600080fd5b9250929050565b803563ffffffff81168114612eae57600080fd5b60006001600160401b0382111561397157613971613732565b5060051b60200190565b600082601f83011261398c57600080fd5b813560206139a161399c83613958565b613793565b82815260059290921b840181019181810190868411156139c057600080fd5b8286015b848110156139e2576139d581613944565b83529183019183016139c4565b509695505050505050565b600082601f8301126139fe57600080fd5b81356020613a0e61399c83613958565b82815260069290921b84018101918181019086841115613a2d57600080fd5b8286015b848110156139e257613a4388826137c3565b835291830191604001613a31565b600082601f830112613a6257600080fd5b81356020613a7261399c83613958565b82815260059290921b84018101918181019086841115613a9157600080fd5b8286015b848110156139e25780356001600160401b03811115613ab45760008081fd5b613ac28986838b010161397b565b845250918301918301613a95565b60006101808284031215613ae357600080fd5b613aeb613770565b905081356001600160401b0380821115613b0457600080fd5b613b108583860161397b565b83526020840135915080821115613b2657600080fd5b613b32858386016139ed565b60208401526040840135915080821115613b4b57600080fd5b613b57858386016139ed565b6040840152613b698560608601613857565b6060840152613b7b8560e086016137c3565b6080840152610120840135915080821115613b9557600080fd5b613ba18583860161397b565b60a0840152610140840135915080821115613bbb57600080fd5b613bc78583860161397b565b60c0840152610160840135915080821115613be157600080fd5b50613bee84828501613a51565b60e08301525092915050565b60008060008060008060a08789031215613c1357600080fd5b8635955060208701356001600160401b0380821115613c3157600080fd5b613c3d8a838b016138fc565b9097509550859150613c5160408a01613944565b94506060890135915080821115613c6757600080fd5b50613c7489828a01613ad0565b925050613c8360808801613944565b90509295509295509295565b80151581146106ba57600080fd5b600060208284031215613caf57600080fd5b8135611c7081613c8f565b600060208284031215613ccc57600080fd5b611c7082613944565b60ff811681146106ba57600080fd5b600060208284031215613cf657600080fd5b8135611c7081613cd5565b600060a08284031215613d1357600080fd5b50919050565b600060608284031215613d1357600080fd5b60008060008084860360e0811215613d4257600080fd5b85356001600160401b0380821115613d5957600080fd5b613d6589838a01613d01565b9650613d748960208a01613d19565b95506040607f1984011215613d8857600080fd5b60808801945060c0880135925080831115613da257600080fd5b5050613db0878288016139ed565b91505092959194509250565b600080600080600060808688031215613dd457600080fd5b8535945060208601356001600160401b0380821115613df257600080fd5b613dfe89838a016138fc565b9096509450849150613e1260408901613944565b93506060880135915080821115613e2857600080fd5b50613e3588828901613ad0565b9150509295509295909350565b600081518084526020808501945080840160005b83811015613e7b5781516001600160601b031687529582019590820190600101613e56565b509495945050505050565b6040815260008351604080840152613ea16080840182613e42565b90506020850151603f19848303016060850152613ebe8282613e42565b925050508260208301529392505050565b600060e08284031215613d1357600080fd5b600080600060a08486031215613ef657600080fd5b83356001600160401b0380821115613f0d57600080fd5b613f1987838801613d19565b9450613f288760208801613d19565b93506080860135915080821115613f3e57600080fd5b50613f4b86828701613ecf565b9150509250925092565b6000806000838503610140811215613f6c57600080fd5b60c0811215613f7a57600080fd5b50839250613f8b8560c08601613d19565b91506101208401356001600160401b03811115613fa757600080fd5b613f4b86828701613ecf565b600080600060a08486031215613fc857600080fd5b83356001600160401b0380821115613fdf57600080fd5b613feb87838801613d01565b9450613ffa8760208801613d19565b9350608086013591508082111561401057600080fd5b50613f4b86828701613ad0565b80356001600160401b0381168114612eae57600080fd5b60008060008060006080868803121561404c57600080fd5b6140558661401d565b94506140636020870161401d565b935061407160408701613944565b925060608601356001600160401b0381111561408c57600080fd5b614098888289016138fc565b969995985093965092949392505050565b600080600080608085870312156140bf57600080fd5b84356140ca816136e7565b935060208501356140da816136e7565b925060408501356140ea816136e7565b915060608501356140fa816136e7565b939692955090935050565b60006020828403121561411757600080fd5b8151611c70816136e7565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561417e57600080fd5b8151611c7081613c8f565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261420457634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b60006001600160601b038083168185168183048111821515161561424557614245614209565b02949350505050565b600060001982141561426257614262614209565b5060010190565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6000602082840312156142ae57600080fd5b8151611c7081613cd5565b6000828210156142cb576142cb614209565b500390565b6000602082840312156142e257600080fd5b81516001600160c01b0381168114611c7057600080fd5b60006020828403121561430b57600080fd5b5051919050565b6000821982111561432557614325614209565b500190565b60006020828403121561433c57600080fd5b815167ffffffffffffffff1981168114611c7057600080fd5b60006020828403121561436757600080fd5b81516001600160601b0381168114611c7057600080fd5b60006001600160601b038381169083168181101561439e5761439e614209565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156143e1578151855293820193908201906001016143c5565b5092979650505050505050565b6020808252601390820152720aee4dedcce40dacae6e6c2ceca40d2dcc8caf606b1b604082015260600190565b60208082526011908201527024b73b30b634b21029a6aa10383937b7b360791b604082015260600190565b6000808335601e1984360301811261445d57600080fd5b8301803591506001600160401b0382111561447757600080fd5b60200191503681900382131561393d57600080fd5b600063ffffffff8083168185168083038211156144ab576144ab614209565b01949350505050565b6000606082840312156144c657600080fd5b604051606081018181106001600160401b03821117156144e8576144e8613732565b6040526144f483613944565b815260208301356020820152604083013560408201528091505092915050565b63ffffffff61452282613944565b16825260208181013590830152604090810135910152565b60a081016145488285614514565b825163ffffffff16606083015260208301516080830152611c70565b6000602080835263ffffffff8085511682850152818501516001600160401b038082166040870152806040880151166060870152505080606086015116608085015250608084015160a08085015280518060c086015260005b818110156145d95782810184015186820160e0015283016145bd565b818111156145eb57600060e083880101525b50601f01601f19169390930160e001949350505050565b600081600019048311821515161561461c5761461c614209565b500290565b600061ffff8083168181141561463957614639614209565b6001019392505050565b60006020828403121561465557600080fd5b611c708261401d565b6000808335601e1984360301811261467557600080fd5b8301803591506001600160401b0382111561468f57600080fd5b6020019150600581901b360382131561393d57600080fd5b60006020808352608083016001600160401b03806146c48761401d565b16838601526146d483870161401d565b604082821681880152808801359150601e198836030182126146f557600080fd5b9087019081358381111561470857600080fd5b60609350838102360389131561471d57600080fd5b87840184905293849052908401926000919060a08801835b8281101561477757863582528787013588830152838701356001600160801b038116808214614762578687fd5b83860152509585019590850190600101614735565b509998505050505050505050565b60c0810163ffffffff61479784613944565b1682526147a66020840161401d565b6001600160401b038082166020850152806147c36040870161401d565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208152600063ffffffff8061482d85613944565b16602084015261483f6020850161401d565b6001600160401b0380821660408601528061485c6040880161401d565b1660608601528261486f60608801613944565b16608086015260808601359250601e1986360301831261488e57600080fd5b9185019182359150808211156148a357600080fd5b508036038513156148b357600080fd5b60a0808501526148ca60c0850182602085016147ef565b95945050505050565b60608101612c8b8284614514565b825163ffffffff168152602080840151908201526040808401519082015260a08101611c706060830184805163ffffffff16825260209081015191015256feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd474269746d61705574696c732e6f72646572656442797465734172726179546f42424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212209faf97f29eb662e279c65d2456120e7cf4fe7f7cfbe637d2dffff638424b608564736f6c634300080c0033","storage":{"0x0":"0xff","0x97":"0x1"}},"0xb7278a61aa25c888815afc32ad3cc52ff24fe575":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80636d14a987116100925780636d14a987146102985780637916cea6146102bf5780637ff81a8714610300578063a3db80e214610333578063bf79ce581461035a578063d5254a8c1461036d578063de29fac01461038d578063e8bb9ae6146103ad578063f4e24fe5146103d657600080fd5b8062a1f4cb146100fa57806313542a4e1461013b57806326d941f21461015c578063377ed99d146101715780633fb27952146101a957806347b314e8146101bc5780635f61a884146101fd578063605747d51461021d57806368bccaac1461026b575b600080fd5b610121610108366004611891565b6003602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61014e610149366004611891565b6103e9565b604051908152602001610132565b61016f61016a3660046118c4565b610404565b005b61019461017f3660046118c4565b60ff1660009081526004602052604090205490565b60405163ffffffff9091168152602001610132565b61016f6101b736600461194f565b61055d565b6101e56101ca3660046119f5565b6000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610132565b61021061020b3660046118c4565b610605565b6040516101329190611a0e565b61023061022b366004611a25565b61063a565b60408051825167ffffffffffffffff1916815260208084015163ffffffff908116918301919091529282015190921690820152606001610132565b61027e610279366004611a4f565b6106cd565b60405167ffffffffffffffff199091168152602001610132565b6101e57f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf81565b6102d26102cd366004611a25565b610868565b6040805167ffffffffffffffff19909416845263ffffffff9283166020850152911690820152606001610132565b61031361030e366004611891565b6108b3565b604080518351815260209384015193810193909352820152606001610132565b6101216103413660046118c4565b6005602052600090815260409020805460019091015482565b61014e610368366004611a97565b610974565b61038061037b366004611af4565b610da4565b6040516101329190611b6c565b61014e61039b366004611891565b60016020526000908152604090205481565b6101e56103bb3660046119f5565b6002602052600090815260409020546001600160a01b031681565b61016f6103e436600461194f565b610fbe565b6001600160a01b031660009081526001602052604090205490565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146104555760405162461bcd60e51b815260040161044c90611bb6565b60405180910390fd5b60ff8116600090815260046020526040902054156104d45760405162461bcd60e51b815260206004820152603660248201527f424c5341706b52656769737472792e696e697469616c697a6551756f72756d3a6044820152752071756f72756d20616c72656164792065786973747360501b606482015260840161044c565b60ff166000908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146105a55760405162461bcd60e51b815260040161044c90611bb6565b60006105b0836108b3565b5090506105bd8282611051565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e836105e8856103e9565b846040516105f893929190611c2a565b60405180910390a1505050565b61060d6117a4565b5060ff16600090815260056020908152604091829020825180840190935280548352600101549082015290565b604080516060810182526000808252602080830182905282840182905260ff86168252600490529190912080548390811061067757610677611c96565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b60ff831660009081526004602052604081208054829190849081106106f4576106f4611c96565b600091825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107bb5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a20696e64657820746f6f20726563656e740000606482015260840161044c565b604081015163ffffffff1615806107e15750806040015163ffffffff168463ffffffff16105b61085f5760405162461bcd60e51b815260206004820152604360248201527f424c5341706b52656769737472792e5f76616c696461746541706b486173684160448201527f74426c6f636b4e756d6265723a206e6f74206c61746573742061706b2075706460648201526261746560e81b608482015260a40161044c565b51949350505050565b6004602052816000526040600020818154811061088457600080fd5b600091825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b6108bb6117a4565b6001600160a01b03821660008181526003602090815260408083208151808301835281548152600191820154818501529484529091528120549091908061096a5760405162461bcd60e51b815260206004820152603e60248201527f424c5341706b52656769737472792e676574526567697374657265645075626b60448201527f65793a206f70657261746f72206973206e6f7420726567697374657265640000606482015260840161044c565b9094909350915050565b6000336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146109be5760405162461bcd60e51b815260040161044c90611bb6565b60006109ec6109d536869003860160408701611cac565b805160009081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5811415610a74576040805162461bcd60e51b8152602060048201526024810191909152600080516020611ec383398151915260448201527f4b65793a2063616e6e6f74207265676973746572207a65726f207075626b6579606482015260840161044c565b6001600160a01b03851660009081526001602052604090205415610afe5760405162461bcd60e51b81526020600482015260476024820152600080516020611ec383398151915260448201527f4b65793a206f70657261746f7220616c72656164792072656769737465726564606482015266207075626b657960c81b608482015260a40161044c565b6000818152600260205260409020546001600160a01b031615610b825760405162461bcd60e51b81526020600482015260426024820152600080516020611ec383398151915260448201527f4b65793a207075626c6963206b657920616c7265616479207265676973746572606482015261195960f21b608482015260a40161044c565b604080516000917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610bdb918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611cde565b6040516020818303038152906040528051906020012060001c610bfe9190611d29565b9050610c74610c37610c2283610c1c368a90038a0160408b01611cac565b90611290565b610c3136899003890189611cac565b9061131b565b610c3f6113a3565b610c5d610c4e85610c1c611463565b610c31368a90038a018a611cac565b610c6f368a90038a0160808b01611d9b565b611484565b610d0f5760405162461bcd60e51b815260206004820152606c6024820152600080516020611ec383398151915260448201527f4b65793a2065697468657220746865204731207369676e61747572652069732060648201527f77726f6e672c206f7220473120616e642047322070726976617465206b65792060848201526b0c8de40dcdee840dac2e8c6d60a31b60a482015260c40161044c565b6001600160a01b03861660008181526003602090815260408083208982018035825560608b013560019283015590835281842087905586845260029092529182902080546001600160a01b0319168417905590517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610d939160808a0190611df8565b60405180910390a250949350505050565b606060008367ffffffffffffffff811115610dc157610dc16118df565b604051908082528060200260200182016040528015610dea578160200160208202803683370190505b50905060005b84811015610fb5576000868683818110610e0c57610e0c611c96565b919091013560f81c6000818152600460205260409020549092509050801580610e6f575060ff821660009081526004602052604081208054909190610e5357610e53611c96565b600091825260209091200154600160c01b900463ffffffff1686105b15610efc5760405162461bcd60e51b815260206004820152605160248201527f424c5341706b52656769737472792e67657441706b496e64696365734174426c60448201527f6f636b4e756d6265723a20626c6f636b4e756d626572206973206265666f7265606482015270207468652066697273742075706461746560781b608482015260a40161044c565b805b8015610f9f5760ff831660009081526004602052604090208790610f23600184611e42565b81548110610f3357610f33611c96565b600091825260209091200154600160c01b900463ffffffff1611610f8d57610f5c600182611e42565b858581518110610f6e57610f6e611c96565b602002602001019063ffffffff16908163ffffffff1681525050610f9f565b80610f9781611e59565b915050610efe565b5050508080610fad90611e70565b915050610df0565b50949350505050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf16146110065760405162461bcd60e51b815260040161044c90611bb6565b6000611011836108b3565b50905061102682611021836116f1565b611051565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e836105e8856103e9565b6110596117a4565b60005b835181101561128a57600084828151811061107957611079611c96565b0160209081015160f81c60008181526004909252604090912054909150806111095760405162461bcd60e51b815260206004820152603d60248201527f424c5341706b52656769737472792e5f70726f6365737351756f72756d41706b60448201527f5570646174653a2071756f72756d20646f6573206e6f74206578697374000000606482015260840161044c565b60ff8216600090815260056020908152604091829020825180840190935280548352600101549082015261113d908661131b565b60ff831660008181526005602090815260408083208551808255868401805160019384015590855251835281842094845260049092528220939750919290916111869085611e42565b8154811061119657611196611c96565b600091825260209091200180549091504363ffffffff908116600160c01b9092041614156111d75780546001600160c01b031916604083901c178155611273565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88166000908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b50505050808061128290611e70565b91505061105c565b50505050565b6112986117a4565b6112a06117be565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156112d3576112d5565bfe5b50806113135760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b604482015260640161044c565b505092915050565b6113236117a4565b61132b6117dc565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156112d35750806113135760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b604482015260640161044c565b6113ab6117fa565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b61146b6117a4565b5060408051808201909152600181526002602082015290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916114b361181f565b60005b60028110156116785760006114cc826006611e8b565b90508482600281106114e0576114e0611c96565b602002015151836114f2836000611eaa565b600c811061150257611502611c96565b602002015284826002811061151957611519611c96565b602002015160200151838260016115309190611eaa565b600c811061154057611540611c96565b602002015283826002811061155757611557611c96565b602002015151518361156a836002611eaa565b600c811061157a5761157a611c96565b602002015283826002811061159157611591611c96565b60200201515160016020020151836115aa836003611eaa565b600c81106115ba576115ba611c96565b60200201528382600281106115d1576115d1611c96565b6020020151602001516000600281106115ec576115ec611c96565b6020020151836115fd836004611eaa565b600c811061160d5761160d611c96565b602002015283826002811061162457611624611c96565b60200201516020015160016002811061163f5761163f611c96565b602002015183611650836005611eaa565b600c811061166057611660611c96565b6020020152508061167081611e70565b9150506114b6565b5061168161183e565b60006020826101808560086107d05a03fa90508080156112d35750806116e15760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b604482015260640161044c565b5051151598975050505050505050565b6116f96117a4565b815115801561170a57506020820151155b15611728575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47846020015161176d9190611d29565b611797907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611e42565b905292915050565b919050565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061180d61185c565b815260200161181a61185c565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461179f57600080fd5b6000602082840312156118a357600080fd5b6118ac8261187a565b9392505050565b803560ff8116811461179f57600080fd5b6000602082840312156118d657600080fd5b6118ac826118b3565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611918576119186118df565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611947576119476118df565b604052919050565b6000806040838503121561196257600080fd5b61196b8361187a565b915060208084013567ffffffffffffffff8082111561198957600080fd5b818601915086601f83011261199d57600080fd5b8135818111156119af576119af6118df565b6119c1601f8201601f1916850161191e565b915080825287848285010111156119d757600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215611a0757600080fd5b5035919050565b8151815260208083015190820152604081016106c7565b60008060408385031215611a3857600080fd5b611a41836118b3565b946020939093013593505050565b600080600060608486031215611a6457600080fd5b611a6d846118b3565b9250602084013563ffffffff81168114611a8657600080fd5b929592945050506040919091013590565b6000806000838503610160811215611aae57600080fd5b611ab78561187a565b9350610100601f1982011215611acc57600080fd5b602085019250604061011f1982011215611ae557600080fd5b50610120840190509250925092565b600080600060408486031215611b0957600080fd5b833567ffffffffffffffff80821115611b2157600080fd5b818601915086601f830112611b3557600080fd5b813581811115611b4457600080fd5b876020828501011115611b5657600080fd5b6020928301989097509590910135949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611baa57835163ffffffff1683529284019291840191600101611b88565b50909695505050505050565b6020808252604e908201527f424c5341706b52656769737472792e6f6e6c795265676973747279436f6f726460408201527f696e61746f723a2063616c6c6572206973206e6f74207468652072656769737460608201526d393c9031b7b7b93234b730ba37b960911b608082015260a00190565b60018060a01b038416815260006020848184015260606040840152835180606085015260005b81811015611c6c57858101830151858201608001528201611c50565b81811115611c7e576000608083870101525b50601f01601f19169290920160800195945050505050565b634e487b7160e01b600052603260045260246000fd5b600060408284031215611cbe57600080fd5b611cc66118f5565b82358152602083013560208201528091505092915050565b8881528760208201528660408201528560608201526040856080830137600060c082016000815260408682375050610100810192909252610120820152610140019695505050505050565b600082611d4657634e487b7160e01b600052601260045260246000fd5b500690565b600082601f830112611d5c57600080fd5b611d646118f5565b806040840185811115611d7657600080fd5b845b81811015611d90578035845260209384019301611d78565b509095945050505050565b600060808284031215611dad57600080fd5b6040516040810181811067ffffffffffffffff82111715611dd057611dd06118df565b604052611ddd8484611d4b565b8152611dec8460408501611d4b565b60208201529392505050565b823581526020808401359082015260c081016040838184013760808201600081526040808501823750600081529392505050565b634e487b7160e01b600052601160045260246000fd5b600082821015611e5457611e54611e2c565b500390565b600081611e6857611e68611e2c565b506000190190565b6000600019821415611e8457611e84611e2c565b5060010190565b6000816000190483118215151615611ea557611ea5611e2c565b500290565b60008219821115611ebd57611ebd611e2c565b50019056fe424c5341706b52656769737472792e7265676973746572424c535075626c6963a2646970667358221220ddede8559e28f5e5a06bdde4d1bac1435dc9017a2cffbdaed6846a95d536750064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063d79aceab1161007c578063d79aceab146102f8578063df5cf7231461031f578063ec76f44214610346578063f2fde38b14610359578063f698da251461036c578063fabc1cbc1461037457600080fd5b80638da5cb5b1461029b5780639926ee7d146102ac578063a1060c88146102bf578063a364f4da146102d2578063a98fb355146102e557600080fd5b806349075da31161010a57806349075da3146101fa578063595c6a67146102355780635ac86ab71461023d5780635c975abb14610260578063715018a614610268578063886f11951461027057600080fd5b806310d67a2f14610147578063136439dd1461015c5780631794bb3c1461016f57806320606b7014610182578063374823b5146101bc575b600080fd5b61015a6101553660046118ab565b610387565b005b61015a61016a3660046118cf565b610443565b61015a61017d3660046118e8565b610582565b6101a97f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6040519081526020015b60405180910390f35b6101ea6101ca366004611929565b609960209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101b3565b610228610208366004611955565b609860209081526000928352604080842090915290825290205460ff1681565b6040516101b391906119a4565b61015a6106ac565b6101ea61024b3660046119cc565b606654600160ff9092169190911b9081161490565b6066546101a9565b61015a610773565b606554610283906001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b6033546001600160a01b0316610283565b61015a6102ba366004611a5f565b610787565b6101a96102cd366004611b46565b610b1a565b61015a6102e03660046118ab565b610bd3565b61015a6102f3366004611b8c565b610d3c565b6101a97fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd81565b6102837f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c981565b61015a6103543660046118cf565b610d83565b61015a6103673660046118ab565b610e2e565b6101a9610ea4565b61015a6103823660046118cf565b610ee2565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103fe9190611bfe565b6001600160a01b0316336001600160a01b0316146104375760405162461bcd60e51b815260040161042e90611c1b565b60405180910390fd5b6104408161103e565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190611c65565b6104cb5760405162461bcd60e51b815260040161042e90611c87565b606654818116146105445760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b600054610100900460ff16158080156105a25750600054600160ff909116105b806105bc5750303b1580156105bc575060005460ff166001145b61061f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161042e565b6000805460ff191660011790558015610642576000805461ff0019166101001790555b61064c8383611135565b61065461121f565b609755610660846112b6565b80156106a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190611c65565b6107345760405162461bcd60e51b815260040161042e90611c87565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b61077b611308565b61078560006112b6565b565b606654600090600190811614156107dc5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b42826040015110156108445760405162461bcd60e51b815260206004820152603e6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72207369676e617475726520657870697265640000606482015260840161042e565b60013360009081526098602090815260408083206001600160a01b038816845290915290205460ff16600181111561087e5761087e61198e565b14156108e05760405162461bcd60e51b815260206004820152603f6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f7220616c7265616479207265676973746572656400606482015260840161042e565b6001600160a01b038316600090815260996020908152604080832085830151845290915290205460ff16156109645760405162461bcd60e51b81526020600482015260366024820152600080516020611dac8339815191526044820152751594ce881cd85b1d08185b1c9958591e481cdc195b9d60521b606482015260840161042e565b6040516336b87bd760e11b81526001600160a01b0384811660048301527f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91690636d70f7ae90602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee9190611c65565b610a645760405162461bcd60e51b815260206004820152604d6024820152600080516020611dac83398151915260448201527f56533a206f70657261746f72206e6f74207265676973746572656420746f204560648201526c1a59d95b93185e595c881e595d609a1b608482015260a40161042e565b6000610a7a843385602001518660400151610b1a565b9050610a8b84828560000151611362565b3360008181526098602090815260408083206001600160a01b0389168085529083528184208054600160ff199182168117909255609985528386208a860151875290945293829020805490931684179092555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610b0c91906119a4565b60405180910390a350505050565b604080517fda2c89bafdd34776a2b8bb9c83c82f419e20cc8c67207f70edd58249b92661bd6020808301919091526001600160a01b0387811683850152861660608301526080820185905260a08083018590528351808403909101815260c0909201909252805191012060009081610b90610ea4565b60405161190160f01b602082015260228101919091526042810183905260620160408051808303601f190181529190528051602090910120979650505050505050565b60665460009060019081161415610c285760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604482015260640161042e565b60013360009081526098602090815260408083206001600160a01b038716845290915290205460ff166001811115610c6257610c6261198e565b14610cd55760405162461bcd60e51b815260206004820152603f60248201527f4156534469726563746f72792e646572656769737465724f70657261746f724660448201527f726f6d4156533a206f70657261746f72206e6f74207265676973746572656400606482015260840161042e565b3360008181526098602090815260408083206001600160a01b0387168085529252808320805460ff191690555190917ff0952b1c65271d819d39983d2abb044b9cace59bcc4d4dd389f586ebdcb15b4191610d3091906119a4565b60405180910390a35050565b336001600160a01b03167fa89c1dc243d8908a96dd84944bcc97d6bc6ac00dd78e20621576be6a3c9437138383604051610d77929190611ccf565b60405180910390a25050565b33600090815260996020908152604080832084845290915290205460ff1615610e085760405162461bcd60e51b815260206004820152603160248201527f4156534469726563746f72792e63616e63656c53616c743a2063616e6e6f742060448201527018d85b98d95b081cdc195b9d081cd85b1d607a1b606482015260840161042e565b33600090815260996020908152604080832093835292905220805460ff19166001179055565b610e36611308565b6001600160a01b038116610e9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161042e565b610440816112b6565b60007f0000000000000000000000000000000000000000000000000000000000004268461415610ed5575060975490565b610edd61121f565b905090565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f599190611bfe565b6001600160a01b0316336001600160a01b031614610f895760405162461bcd60e51b815260040161042e90611c1b565b6066541981196066541916146110075760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161042e565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610577565b6001600160a01b0381166110cc5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161042e565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031615801561115657506001600160a01b03821615155b6111d85760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161042e565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261121b8261103e565b5050565b604080518082018252600a81526922b4b3b2b72630bcb2b960b11b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f71b625cfad44bac63b13dba07f2e1d6084ee04b6f8752101ece6126d584ee6ea81840152466060820152306080808301919091528351808303909101815260a0909101909252815191012090565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6033546001600160a01b031633146107855760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161042e565b6001600160a01b0383163b1561148157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906113a29086908690600401611cfe565b602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190611d5b565b6001600160e01b0319161461147c5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161042e565b505050565b826001600160a01b03166114958383611521565b6001600160a01b03161461147c5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161042e565b60008060006115308585611545565b9150915061153d816115b5565b509392505050565b60008082516041141561157c5760208301516040840151606085015160001a61157087828585611770565b945094505050506115ae565b8251604014156115a6576020830151604084015161159b86838361185d565b9350935050506115ae565b506000905060025b9250929050565b60008160048111156115c9576115c961198e565b14156115d25750565b60018160048111156115e6576115e661198e565b14156116345760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161042e565b60028160048111156116485761164861198e565b14156116965760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161042e565b60038160048111156116aa576116aa61198e565b14156117035760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161042e565b60048160048111156117175761171761198e565b14156104405760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161042e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156117a75750600090506003611854565b8460ff16601b141580156117bf57508460ff16601c14155b156117d05750600090506004611854565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611824573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661184d57600060019250925050611854565b9150600090505b94509492505050565b6000806001600160ff1b0383168161187a60ff86901c601b611d85565b905061188887828885611770565b935093505050935093915050565b6001600160a01b038116811461044057600080fd5b6000602082840312156118bd57600080fd5b81356118c881611896565b9392505050565b6000602082840312156118e157600080fd5b5035919050565b6000806000606084860312156118fd57600080fd5b833561190881611896565b9250602084013561191881611896565b929592945050506040919091013590565b6000806040838503121561193c57600080fd5b823561194781611896565b946020939093013593505050565b6000806040838503121561196857600080fd5b823561197381611896565b9150602083013561198381611896565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600283106119c657634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156119de57600080fd5b813560ff811681146118c857600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611a2857611a286119ef565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611a5757611a576119ef565b604052919050565b60008060408385031215611a7257600080fd5b8235611a7d81611896565b915060208381013567ffffffffffffffff80821115611a9b57600080fd5b9085019060608288031215611aaf57600080fd5b611ab7611a05565b823582811115611ac657600080fd5b8301601f81018913611ad757600080fd5b803583811115611ae957611ae96119ef565b611afb601f8201601f19168701611a2e565b93508084528986828401011115611b1157600080fd5b808683018786013760008682860101525050818152838301358482015260408301356040820152809450505050509250929050565b60008060008060808587031215611b5c57600080fd5b8435611b6781611896565b93506020850135611b7781611896565b93969395505050506040820135916060013590565b60008060208385031215611b9f57600080fd5b823567ffffffffffffffff80821115611bb757600080fd5b818501915085601f830112611bcb57600080fd5b813581811115611bda57600080fd5b866020828501011115611bec57600080fd5b60209290920196919550909350505050565b600060208284031215611c1057600080fd5b81516118c881611896565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215611c7757600080fd5b815180151581146118c857600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b82815260006020604081840152835180604085015260005b81811015611d3257858101830151858201606001528201611d16565b81811115611d44576000606083870101525b50601f01601f191692909201606001949350505050565b600060208284031215611d6d57600080fd5b81516001600160e01b0319811681146118c857600080fd5b60008219821115611da657634e487b7160e01b600052601160045260246000fd5b50019056fe4156534469726563746f72792e72656769737465724f70657261746f72546f41a2646970667358221220417e740b15991a84d5959cee174069515fd054ff2b9bf9b349bc13e72db8820064736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xc351628eb244ec633d5f21fbd6621e1a683b1181":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061029f5760003560e01c80635df4594611610167578063a50857bf116100ce578063dd8283f311610087578063dd8283f31461071c578063e65797ad1461072f578063f2fde38b146107ab578063f8581191146107be578063fabc1cbc146107d1578063fd39105a146107e457600080fd5b8063a50857bf14610694578063c391425e146106a7578063ca0de882146106c7578063ca4f2d97146106ee578063d72d8dd614610701578063d75b4c881461070957600080fd5b8063886f119511610120578063886f1195146105f35780638da5cb5b1461060c5780639aa1653d146106145780639b5d177b146106335780639e9923c2146106465780639feab8591461066d57600080fd5b80635df45946146105645780636347c9001461058b578063683048351461059e5780636e3b17db146105c5578063715018a6146105d8578063871ef049146105e057600080fd5b806328f61b311161020b5780635140a548116101c45780635140a548146104ef5780635865c60c14610502578063595c6a67146105225780635ac86ab71461052a5780635b0b829f146105495780635c975abb1461055c57600080fd5b806328f61b311461045c578063296bb0641461046f57806329d1e0c3146104825780632cdd1e86146104955780633998fdd3146104a85780633c2a7f4c146104cf57600080fd5b806313542a4e1161025d57806313542a4e1461035d578063136439dd146103865780631478851f146103995780631eb812da146103cc578063249a0c4214610415578063268f06e01461043557600080fd5b8062cf2ab5146102a457806303fd3492146102b957806304ec6351146102ec578063054310e6146103175780630cf4b7671461033757806310d67a2f1461034a575b600080fd5b6102b76102b2366004614a0d565b610820565b005b6102d96102c7366004614a4e565b60009081526098602052604090205490565b6040519081526020015b60405180910390f35b6102ff6102fa366004614a79565b610836565b6040516001600160c01b0390911681526020016102e3565b609d5461032a906001600160a01b031681565b6040516102e39190614ab1565b6102b7610345366004614bac565b610a0d565b6102b7610358366004614c21565b610af5565b6102d961036b366004614c21565b6001600160a01b031660009081526099602052604090205490565b6102b7610394366004614a4e565b610ba8565b6103bc6103a7366004614a4e565b609a6020526000908152604090205460ff1681565b60405190151581526020016102e3565b6103df6103da366004614c3e565b610cd3565b60408051825163ffffffff908116825260208085015190911690820152918101516001600160c01b0316908201526060016102e3565b6102d9610423366004614c71565b609b6020526000908152604090205481565b61032a7f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57081565b609e5461032a906001600160a01b031681565b61032a61047d366004614a4e565b610d64565b6102b7610490366004614c21565b610df0565b6102b76104a3366004614c21565b610e01565b61032a7f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf81565b6104e26104dd366004614c21565b610e12565b6040516102e39190614c8c565b6102b76104fd366004614ce4565b610e91565b610515610510366004614c21565b610eab565b6040516102e39190614d87565b6102b7610f1f565b6103bc610538366004614c71565b6001805460ff9092161b9081161490565b6102b7610557366004614e0c565b610fde565b6001546102d9565b61032a7f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168881565b61032a610599366004614a4e565b61106f565b61032a7f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81565b6102b76105d3366004614e40565b611099565b6102b76110ac565b6102ff6105ee366004614a4e565b6110c0565b60005461032a906201000090046001600160a01b031681565b61032a6110cb565b6096546106219060ff1681565b60405160ff90911681526020016102e3565b6102b7610641366004614f60565b6110e4565b61032a7f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0081565b6102d97f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de681565b6102b76106a2366004615059565b611108565b6106ba6106b5366004615124565b611126565b6040516102e391906151ce565b6102d97f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a81565b6102b76106fc366004615218565b6111df565b609c546102d9565b6102b76107173660046152fe565b6111f1565b6102b761072a3660046154b1565b611204565b61079e61073d366004614c71565b60408051606080820183526000808352602080840182905292840181905260ff9490941684526097825292829020825193840183525463ffffffff8116845261ffff600160201b8204811692850192909252600160301b9004169082015290565b6040516102e39190615585565b6102b76107b9366004614c21565b611507565b6102d96107cc3660046155f6565b61157d565b6102b76107df366004614a4e565b6115c4565b6108136107f2366004614c21565b6001600160a01b031660009081526099602052604090206001015460ff1690565b6040516102e391906156ab565b61082861171b565b610832828261178a565b5050565b6000838152609860205260408120805482919084908110610859576108596156b9565b600091825260209182902060408051606081018252929091015463ffffffff808216808552600160201b8304821695850195909552600160401b9091046001600160c01b031691830191909152909250851610156109465760405162461bcd60e51b81526020600482015260656024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d20616674657220626c6f636b4e6084820152643ab6b132b960d91b60a482015260c4015b60405180910390fd5b602081015163ffffffff16158061096c5750806020015163ffffffff168463ffffffff16105b610a015760405162461bcd60e51b81526020600482015260666024820152600080516020615ec083398151915260448201527f6d61704174426c6f636b4e756d6265724279496e6465783a2071756f72756d4260648201527f69746d61705570646174652069732066726f6d206265666f726520626c6f636b608482015265273ab6b132b960d11b60a482015260c40161093d565b60400151949350505050565b60013360009081526099602052604090206001015460ff166002811115610a3657610a36614d4f565b14610aa95760405162461bcd60e51b815260206004820152603c60248201527f5265676973747279436f6f7264696e61746f722e757064617465536f636b657460448201527f3a206f70657261746f72206973206e6f74207265676973746572656400000000606482015260840161093d565b33600090815260996020526040908190205490517fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa90610aea90849061571c565b60405180910390a250565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6c919061572f565b6001600160a01b0316336001600160a01b031614610b9c5760405162461bcd60e51b815260040161093d9061574c565b610ba581611891565b50565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610bdd903390600401614ab1565b602060405180830381865afa158015610bfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1e9190615796565b610c3a5760405162461bcd60e51b815260040161093d906157b8565b60015481811614610cae5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b606482015260840161093d565b60018190556040518181523390600080516020615f2083398151915290602001610aea565b60408051606081018252600080825260208201819052918101919091526000838152609860205260409020805483908110610d1057610d106156b9565b600091825260209182902060408051606081018252919092015463ffffffff8082168352600160201b820416938201939093526001600160c01b03600160401b909304929092169082015290505b92915050565b6040516308f6629d60e31b8152600481018290526000907f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b0316906347b314e890602401602060405180830381865afa158015610dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5e919061572f565b610df8611997565b610ba5816119f6565b610e09611997565b610ba581611a5f565b6040805180820190915260008082526020820152610d5e610e8c7f2bd82124057f0913bc3b772ce7b83e8057c1ad1f3510fc83778be20f10ec5de684604051602001610e719291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120611ac8565b611b16565b610e9961171b565b610ea584848484611ba6565b50505050565b60408051808201909152600080825260208201526001600160a01b0382166000908152609960209081526040918290208251808401909352805483526001810154909183019060ff166002811115610f0557610f05614d4f565b6002811115610f1657610f16614d4f565b90525092915050565b60005460405163237dfb4760e11b8152620100009091046001600160a01b0316906346fbf68e90610f54903390600401614ab1565b602060405180830381865afa158015610f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f959190615796565b610fb15760405162461bcd60e51b815260040161093d906157b8565b60001960018190556040519081523390600080516020615f208339815191529060200160405180910390a2565b610fe6611997565b609654829060ff908116908216106110605760405162461bcd60e51b815260206004820152603760248201527f5265676973747279436f6f7264696e61746f722e71756f72756d4578697374736044820152760e881c5d5bdc9d5b48191bd95cc81b9bdd08195e1a5cdd604a1b606482015260840161093d565b61106a8383612130565b505050565b609c818154811061107f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6110a161171b565b61106a8383836121ce565b6110b4611997565b6110be600061228e565b565b6000610d5e826122e0565b60006110df6064546001600160a01b031690565b905090565b6110ec61171b565b6110fd898989898989898989612349565b505050505050505050565b61111061171b565b61111e868686868686612680565b505050505050565b6060600082516001600160401b0381111561114357611143614ac5565b60405190808252806020026020018201604052801561116c578160200160208202803683370190505b50905060005b83518110156111d75761119e85858381518110611191576111916156b9565b6020026020010151612804565b8282815181106111b0576111b06156b9565b63ffffffff90921660209283029190910190910152806111cf81615816565b915050611172565b509392505050565b6111e761171b565b610832828261292e565b6111f9611997565b61106a838383612995565b600054610100900460ff16158080156112245750600054600160ff909116105b8061123e5750303b15801561123e575060005460ff166001145b6112a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161093d565b6000805460ff1916600117905580156112c4576000805461ff0019166101001790555b825184511480156112d6575081518351145b6113405760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e696e697469616c697a653a206044820152740d2dce0eae840d8cadccee8d040dad2e6dac2e8c6d605b1b606482015260840161093d565b6113498961228e565b6113538686612bac565b61135c886119f6565b61136587611a5f565b609c80546001818101835560008381527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c92830180546001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d81166001600160a01b03199283161790925585548085018755850180547f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688841690831617905585549384019095559190920180547f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0090921691909316179091555b84518110156114b6576114a4858281518110611463576114636156b9565b602002602001015185838151811061147d5761147d6156b9565b6020026020010151858481518110611497576114976156b9565b6020026020010151612995565b806114ae81615816565b915050611445565b5080156110fd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050505050505050565b61150f611997565b6001600160a01b0381166115745760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093d565b610ba58161228e565b60006115bb7f4d404e3276e7ac2163d8ee476afa6a41d1f68fb71f2d8b6546b24e55ce01b72a86868686604051602001610e71959493929190615831565b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163b919061572f565b6001600160a01b0316336001600160a01b03161461166b5760405162461bcd60e51b815260040161093d9061574c565b6001541981196001541916146116e45760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b606482015260840161093d565b600181905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610aea565b7f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5706001600160a01b031663bfe107386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561177657600080fd5b505af1158015610ea5573d6000803e3d6000fd5b600154600290600490811614156117b35760405162461bcd60e51b815260040161093d906158a7565b60005b82811015610ea55760008484838181106117d2576117d26156b9565b90506020020160208101906117e79190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff16600281111561183257611832614d4f565b600281111561184357611843614d4f565b90525080519091506000611856826122e0565b9050600061186c826001600160c01b0316612c86565b9050611879858583612d52565b5050505050808061188990615816565b9150506117b6565b6001600160a01b03811661191f5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161093d565b7f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6600060029054906101000a90046001600160a01b0316826040516119659291906158da565b60405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b336119a06110cb565b6001600160a01b0316146110be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161093d565b609d546040517f315457d8a8fe60f04af17c16e2f5a5e1db612b31648e58030360759ef8f3528c91611a35916001600160a01b039091169084906158da565b60405180910390a1609d80546001600160a01b0319166001600160a01b0392909216919091179055565b609e546040517f8f30ab09f43a6c157d7fce7e0a13c003042c1c95e8a72e7a146a21c0caa24dc991611a9e916001600160a01b039091169084906158da565b60405180910390a1609e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d5e611ad5612e3f565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b604080518082019091526000808252602082015260008080611b46600080516020615f408339815191528661590a565b90505b611b5281612f66565b9093509150600080516020615f40833981519152828309831415611b8c576040805180820190915290815260208101919091529392505050565b600080516020615f40833981519152600182089050611b49565b60015460029060049081161415611bcf5760405162461bcd60e51b815260040161093d906158a7565b6000611c1784848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050611c2281613067565b611c925760405162461bcd60e51b81526020600482015260476024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20736f6d652071756f72756d7320646f206e6f6064820152661d08195e1a5cdd60ca1b608482015260a40161093d565b848314611d015760405162461bcd60e51b81526020600482015260436024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a20696e707574206c656e677468206d69736d616064820152620e8c6d60eb1b608482015260a40161093d565b60005b83811015612127576000858583818110611d2057611d206156b9565b919091013560f81c91503690506000898985818110611d4157611d416156b9565b9050602002810190611d53919061591e565b6040516379a0849160e11b815260ff8616600482015291935091507f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd006001600160a01b03169063f341092290602401602060405180830381865afa158015611dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de39190615967565b63ffffffff168114611e7f5760405162461bcd60e51b81526020600482015260656024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206e756d626572206f6620757064617465642060648201527f6f70657261746f727320646f6573206e6f74206d617463682071756f72756d206084820152641d1bdd185b60da1b60a482015260c40161093d565b6000805b828110156120c6576000848483818110611e9f57611e9f6156b9565b9050602002016020810190611eb49190614c21565b6001600160a01b03811660009081526099602090815260408083208151808301909252805482526001810154949550929390929183019060ff166002811115611eff57611eff614d4f565b6002811115611f1057611f10614d4f565b90525080519091506000611f23826122e0565b905060016001600160c01b03821660ff8b161c811614611fa75760405162461bcd60e51b815260206004820152604460248201819052600080516020615ee0833981519152908201527f6f7273466f7251756f72756d3a206f70657261746f72206e6f7420696e2071756064820152636f72756d60e01b608482015260a40161093d565b856001600160a01b0316846001600160a01b0316116120525760405162461bcd60e51b81526020600482015260676024820152600080516020615ee083398151915260448201527f6f7273466f7251756f72756d3a206f70657261746f7273206172726179206d7560648201527f737420626520736f7274656420696e20617363656e64696e6720616464726573608482015266399037b93232b960c91b60a482015260c40161093d565b506120b083838f8f8d908e60016120699190615984565b926120769392919061599c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5292505050565b509092506120bf905081615816565b9050611e83565b5060ff84166000818152609b6020908152604091829020439081905591519182527f46077d55330763f16269fd75e5761663f4192d2791747c0189b16ad31db07db4910160405180910390a2505050508061212090615816565b9050611d04565b50505050505050565b60ff821660008181526097602090815260409182902084518154928601518487015161ffff908116600160301b0267ffff0000000000001991909216600160201b0265ffffffffffff1990951663ffffffff909316929092179390931716919091179055517f3ee6fe8d54610244c3e9d3c066ae4aee997884aa28f10616ae821925401318ac906121c2908490615585565b60405180910390a25050565b609e546001600160a01b0316331461224e5760405162461bcd60e51b815260206004820152603a60248201527f5265676973747279436f6f7264696e61746f722e6f6e6c79456a6563746f723a60448201527f2063616c6c6572206973206e6f742074686520656a6563746f72000000000000606482015260840161093d565b61106a8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b606480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600081815260986020526040812054806122fd5750600092915050565b60008381526098602052604090206123166001836159c6565b81548110612326576123266156b9565b600091825260209091200154600160401b90046001600160c01b03169392505050565b6001805460009190811614156123715760405162461bcd60e51b815260040161093d906158a7565b8389146123f45760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f7257697468436875726e3a20696e707574206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a40161093d565b60006124003388613549565b905061245f818787808060200260200160405190810160405280939291908181526020016000905b8282101561245457612445604083028601368190038101906159dd565b81526020019060010190612428565b50505050508661367b565b60006124a633838e8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b905060005b8b811015612671576000609760008f8f858181106124cb576124cb6156b9565b919091013560f81c82525060208082019290925260409081016000208151606081018352905463ffffffff811680835261ffff600160201b8304811695840195909552600160301b90910490931691810191909152845180519193509084908110612538576125386156b9565b602002602001015163ffffffff16111561265e576125d98e8e84818110612561576125616156b9565b9050013560f81c60f81b60f81c84604001518481518110612584576125846156b9565b602002602001015133866020015186815181106125a3576125a36156b9565b60200260200101518d8d888181106125bd576125bd6156b9565b9050604002018036038101906125d391906159dd565b86613d5f565b61265e8989848181106125ee576125ee6156b9565b90506040020160200160208101906126069190614c21565b8f8f85908660016126179190615984565b926126249392919061599c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b508061266981615816565b9150506124ab565b50505050505050505050505050565b6001805460009190811614156126a85760405162461bcd60e51b815260040161093d906158a7565b60006126b43385613549565b905060006126fd33838b8b8b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613805915050565b51905060005b888110156127f85760008a8a8381811061271f5761271f6156b9565b919091013560f81c600081815260976020526040902054855191935063ffffffff169150849084908110612755576127556156b9565b602002602001015163ffffffff1611156127e55760405162461bcd60e51b8152602060048201526044602482018190527f5265676973747279436f6f7264696e61746f722e72656769737465724f706572908201527f61746f723a206f70657261746f7220636f756e742065786365656473206d6178606482015263696d756d60e01b608482015260a40161093d565b50806127f081615816565b915050612703565b50505050505050505050565b600081815260986020526040812054815b8181101561289657600161282982846159c6565b61283391906159c6565b92508463ffffffff16609860008681526020019081526020016000208463ffffffff1681548110612866576128666156b9565b60009182526020909120015463ffffffff1611612884575050610d5e565b8061288e81615816565b915050612815565b5060405162461bcd60e51b815260206004820152606c6024820152600080516020615ec083398151915260448201527f6d6170496e6465784174426c6f636b4e756d6265723a206e6f206269746d617060648201527f2075706461746520666f756e6420666f72206f70657261746f7249642061742060848201526b313637b1b590373ab6b132b960a11b60a482015260c40161093d565b60018054600290811614156129555760405162461bcd60e51b815260040161093d906158a7565b61106a3384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061309a92505050565b60965460ff1660c08110612a095760405162461bcd60e51b815260206004820152603560248201527f5265676973747279436f6f7264696e61746f722e63726561746551756f72756d6044820152740e881b585e081c5d5bdc9d5b5cc81c995858da1959605a1b606482015260840161093d565b612a148160016159f9565b6096805460ff191660ff9290921691909117905580612a338186612130565b60405160016296b58960e01b031981526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d169063ff694a7790612a8690849088908890600401615a1e565b600060405180830381600087803b158015612aa057600080fd5b505af1158015612ab4573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd006001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b1c57600080fd5b505af1158015612b30573d6000803e3d6000fd5b505060405163136ca0f960e11b815260ff841660048201527f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b031692506326d941f29150602401600060405180830381600087803b158015612b9857600080fd5b505af11580156110fd573d6000803e3d6000fd5b6000546201000090046001600160a01b0316158015612bd357506001600160a01b03821615155b612c555760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161093d565b60018190556040518181523390600080516020615f208339815191529060200160405180910390a261083282611891565b6060600080612c9484614034565b61ffff166001600160401b03811115612caf57612caf614ac5565b6040519080825280601f01601f191660200182016040528015612cd9576020820181803683370190505b5090506000805b825182108015612cf1575061010081105b15612d48576001811b935085841615612d38578060f81b838381518110612d1a57612d1a6156b9565b60200101906001600160f81b031916908160001a9053508160010191505b612d4181615816565b9050612ce0565b5090949350505050565b600182602001516002811115612d6a57612d6a614d4f565b14612d7457505050565b81516040516333567f7f60e11b81526000906001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16906366acfefe90612dc990889086908890600401615a97565b6020604051808303816000875af1158015612de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0c9190615abe565b90506001600160c01b03811615612e3857612e3885612e33836001600160c01b0316612c86565b61309a565b5050505050565b6000306001600160a01b037f000000000000000000000000c351628eb244ec633d5f21fbd6621e1a683b118116148015612e9857507f0000000000000000000000000000000000000000000000000000000000007a6946145b15612ec257507f3c76dd3e3a11d13343807370b8cba2bef53120b6c35960fabeed299514350ed790565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f6ec8a99f0e7f9ebde7354a446dcb9423f3af9c58f386a53c59c5b384f9e82d11828401527f6bda7e3f385e48841048390444cced5cc795af87758af67622e5f4f0882c4a9960608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008080600080516020615f408339815191526003600080516020615f4083398151915286600080516020615f40833981519152888909090890506000612fdc827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615f4083398151915261405f565b91959194509092505050565b600080612ff48461410e565b9050808360ff166001901b116130605760405162461bcd60e51b815260206004820152603f6024820152600080516020615fa083398151915260448201527f69746d61703a206269746d61702065786365656473206d61782076616c756500606482015260840161093d565b9392505050565b60965460009081906130819060019060ff1681901b6159c6565b90506130606001600160c01b0384811690831681161490565b6001600160a01b0382166000908152609960205260409020805460018083015460ff1660028111156130ce576130ce614d4f565b1461313b5760405162461bcd60e51b81526020600482015260436024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f7420726567697374656064820152621c995960ea1b608482015260a40161093d565b60965460009061314f90859060ff16612fe8565b9050600061315c836122e0565b90506001600160c01b0382166131c85760405162461bcd60e51b815260206004820152603b6024820152600080516020615f6083398151915260448201527f70657261746f723a206269746d61702063616e6e6f7420626520300000000000606482015260840161093d565b6131d182613067565b61323c5760405162461bcd60e51b81526020600482015260426024820152600080516020615f6083398151915260448201527f70657261746f723a20736f6d652071756f72756d7320646f206e6f74206578696064820152611cdd60f21b608482015260a40161093d565b6132536001600160c01b0383811690831681161490565b6132d55760405162461bcd60e51b81526020600482015260596024820152600080516020615f6083398151915260448201527f70657261746f723a206f70657261746f72206973206e6f74207265676973746560648201527872656420666f72207370656369666965642071756f72756d7360381b608482015260a40161093d565b6001600160c01b03828116198216166132ee8482614277565b6001600160c01b0381166133c05760018501805460ff191660021790556040516351b27a6d60e11b81527f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf6001600160a01b03169063a364f4da90613357908a90600401614ab1565b600060405180830381600087803b15801561337157600080fd5b505af1158015613385573d6000803e3d6000fd5b50506040518692506001600160a01b038a1691507f396fdcb180cb0fea26928113fb0fd1c3549863f9cd563e6a184f1d578116c8e490600090a35b60405163f4e24fe560e01b81526001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f81688169063f4e24fe59061340e908a908a90600401615ae7565b600060405180830381600087803b15801561342857600080fd5b505af115801561343c573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16925063bd29b8cd915061348e9087908a90600401615b0b565b600060405180830381600087803b1580156134a857600080fd5b505af11580156134bc573d6000803e3d6000fd5b505060405163bd29b8cd60e01b81526001600160a01b037f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd0016925063bd29b8cd915061350e9087908a90600401615b0b565b600060405180830381600087803b15801561352857600080fd5b505af115801561353c573d6000803e3d6000fd5b5050505050505050505050565b6040516309aa152760e11b81526000906001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f8168816906313542a4e90613598908690600401614ab1565b602060405180830381865afa1580156135b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135d99190615b24565b905080610d5e577f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816886001600160a01b031663bf79ce58848461361a87610e12565b6040518463ffffffff1660e01b815260040161363893929190615b3d565b6020604051808303816000875af1158015613657573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130609190615b24565b6020808201516000908152609a909152604090205460ff16156137215760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cd85b1d08185b1c9958591e481d5cd95960721b608482015260a40161093d565b42816040015110156137b65760405162461bcd60e51b815260206004820152605260248201527f5265676973747279436f6f7264696e61746f722e5f766572696679436875726e60448201527f417070726f7665725369676e61747572653a20636875726e417070726f766572606482015271081cda59db985d1d5c9948195e1c1a5c995960721b608482015260a40161093d565b602080820180516000908152609a909252604091829020805460ff19166001179055609d5490519183015161106a926001600160a01b03909216916137fe918791879161157d565b8351614437565b61382960405180606001604052806060815260200160608152602001606081525090565b600061387186868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060965460ff169150612fe89050565b9050600061387e886122e0565b90506001600160c01b0382166138e65760405162461bcd60e51b81526020600482015260396024820152600080516020615f8083398151915260448201527807261746f723a206269746d61702063616e6e6f74206265203603c1b606482015260840161093d565b6138ef82613067565b613951576040805162461bcd60e51b8152602060048201526024810191909152600080516020615f8083398151915260448201527f7261746f723a20736f6d652071756f72756d7320646f206e6f74206578697374606482015260840161093d565b8082166001600160c01b0316156139f55760405162461bcd60e51b81526020600482015260686024820152600080516020615f8083398151915260448201527f7261746f723a206f70657261746f7220616c726561647920726567697374657260648201527f656420666f7220736f6d652071756f72756d73206265696e672072656769737460848201526732b932b2103337b960c11b60a482015260c40161093d565b6001600160c01b0381811690831617613a0e8982614277565b887fec2963ab21c1e50e1e582aa542af2e4bf7bf38e6e1403c27b42e1c5d6e621eaa87604051613a3e919061571c565b60405180910390a260016001600160a01b038b1660009081526099602052604090206001015460ff166002811115613a7857613a78614d4f565b14613b91576040805180820182528a8152600160208083018281526001600160a01b038f166000908152609990925293902082518155925183820180549394939192909160ff191690836002811115613ad357613ad3614d4f565b021790555050604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000099bba657f2bbc93c02d617f8ba121cb8fc104acf169150639926ee7d90613b28908d908990600401615bbc565b600060405180830381600087803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50506040518b92506001600160a01b038d1691507fe8e68cef1c3a761ed7be7e8463a375f27f7bc335e51824223cacce636ec5c3fe90600090a35b604051631fd93ca960e11b81526001600160a01b037f0000000000000000000000009d4454b023096f34b160d6b654540c56a1f816881690633fb2795290613be1908d908c908c90600401615c30565b600060405180830381600087803b158015613bfb57600080fd5b505af1158015613c0f573d6000803e3d6000fd5b5050604051632550477760e01b81526001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d16925063255047779150613c65908d908d908d908d90600401615c55565b6000604051808303816000875af1158015613c84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cac9190810190615ceb565b60408087019190915260208601919091525162bff04d60e01b81526001600160a01b037f0000000000000000000000005eb3bc0a489c5a8288765d2336659ebca68fcd00169062bff04d90613d09908c908c908c90600401615d4e565b6000604051808303816000875af1158015613d28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d509190810190615d68565b84525050509695505050505050565b6020808301516001600160a01b038082166000818152609990945260409093205491929087161415613ddf5760405162461bcd60e51b81526020600482015260356024820152600080516020615f0083398151915260448201527439371d1031b0b73737ba1031b43ab9371039b2b63360591b606482015260840161093d565b8760ff16846000015160ff1614613e5c5760405162461bcd60e51b81526020600482015260476024820152600080516020615f0083398151915260448201527f726e3a2071756f72756d4e756d626572206e6f74207468652073616d65206173606482015266081cda59db995960ca1b608482015260a40161093d565b604051635401ed2760e01b81526004810182905260ff891660248201526000907f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690635401ed2790604401602060405180830381865afa158015613ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef19190615e01565b9050613efd81856145f1565b6001600160601b0316866001600160601b031611613f905760405162461bcd60e51b81526020600482015260566024820152600080516020615f0083398151915260448201527f726e3a20696e636f6d696e67206f70657261746f722068617320696e7375666660648201527534b1b4b2b73a1039ba30b5b2903337b91031b43ab93760511b608482015260a40161093d565b613f9a8885614615565b6001600160601b0316816001600160601b0316106110fd5760405162461bcd60e51b815260206004820152605c6024820152600080516020615f0083398151915260448201527f726e3a2063616e6e6f74206b69636b206f70657261746f722077697468206d6f60648201527f7265207468616e206b69636b424950734f66546f74616c5374616b6500000000608482015260a40161093d565b6000805b8215610d5e576140496001846159c6565b909216918061405781615e1e565b915050614038565b60008061406a61498d565b6140726149ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156140b3576140b5565bfe5b50826141035760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c757265000000000000604482015260640161093d565b505195945050505050565b6000610100825111156141855760405162461bcd60e51b815260206004820152604460248201819052600080516020615fa0833981519152908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a40161093d565b815161419357506000919050565b600080836000815181106141a9576141a96156b9565b0160200151600160f89190911c81901b92505b845181101561426e578481815181106141d7576141d76156b9565b0160200151600160f89190911c1b915082821161425a5760405162461bcd60e51b81526020600482015260476024820152600080516020615fa083398151915260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a40161093d565b9181179161426781615816565b90506141bc565b50909392505050565b6000828152609860205260409020548061431c576000838152609860209081526040808320815160608101835263ffffffff43811682528185018681526001600160c01b03808a16958401958652845460018101865594885295909620915191909201805495519351909416600160401b026001600160401b03938316600160201b0267ffffffffffffffff1990961691909216179390931716919091179055505050565b60008381526098602052604081206143356001846159c6565b81548110614345576143456156b9565b600091825260209091200180549091504363ffffffff908116911614156143895780546001600160401b0316600160401b6001600160c01b03851602178155610ea5565b805463ffffffff438116600160201b81810267ffffffff0000000019909416939093178455600087815260986020908152604080832081516060810183529485528483018481526001600160c01b03808c1693870193845282546001810184559286529390942094519401805493519151909216600160401b026001600160401b0391861690960267ffffffffffffffff199093169390941692909217179190911691909117905550505050565b6001600160a01b0383163b1561455157604051630b135d3f60e11b808252906001600160a01b03851690631626ba7e906144779086908690600401615b0b565b602060405180830381865afa158015614494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144b89190615e40565b6001600160e01b0319161461106a5760405162461bcd60e51b815260206004820152605360248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a2045524331323731207369676e6174757265206064820152721d995c9a599a58d85d1a5bdb8819985a5b1959606a1b608482015260a40161093d565b826001600160a01b0316614565838361462f565b6001600160a01b03161461106a5760405162461bcd60e51b815260206004820152604760248201527f454950313237315369676e61747572655574696c732e636865636b5369676e6160448201527f747572655f454950313237313a207369676e6174757265206e6f742066726f6d6064820152661039b4b3b732b960c91b608482015260a40161093d565b60208101516000906127109061460b9061ffff1685615e6a565b6130609190615e99565b60408101516000906127109061460b9061ffff1685615e6a565b600080600061463e858561464b565b915091506111d7816146bb565b6000808251604114156146825760208301516040840151606085015160001a61467687828585614871565b945094505050506146b4565b8251604014156146ac57602083015160408401516146a1868383614954565b9350935050506146b4565b506000905060025b9250929050565b60008160048111156146cf576146cf614d4f565b14156146d85750565b60018160048111156146ec576146ec614d4f565b14156147355760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b604482015260640161093d565b600281600481111561474957614749614d4f565b14156147975760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161093d565b60038160048111156147ab576147ab614d4f565b14156148045760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161093d565b600481600481111561481857614818614d4f565b1415610ba55760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161093d565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561489e575060009050600361494b565b8460ff16601b141580156148b657508460ff16601c14155b156148c7575060009050600461494b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561491b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166149445760006001925092505061494b565b9150600090505b94509492505050565b6000806001600160ff1b0383168161497160ff86901c601b615984565b905061497f87828885614871565b935093505050935093915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60008083601f8401126149db57600080fd5b5081356001600160401b038111156149f257600080fd5b6020830191508360208260051b85010111156146b457600080fd5b60008060208385031215614a2057600080fd5b82356001600160401b03811115614a3657600080fd5b614a42858286016149c9565b90969095509350505050565b600060208284031215614a6057600080fd5b5035919050565b63ffffffff81168114610ba557600080fd5b600080600060608486031215614a8e57600080fd5b833592506020840135614aa081614a67565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614afd57614afd614ac5565b60405290565b604080519081016001600160401b0381118282101715614afd57614afd614ac5565b604051601f8201601f191681016001600160401b0381118282101715614b4d57614b4d614ac5565b604052919050565b60006001600160401b03831115614b6e57614b6e614ac5565b614b81601f8401601f1916602001614b25565b9050828152838383011115614b9557600080fd5b828260208301376000602084830101529392505050565b600060208284031215614bbe57600080fd5b81356001600160401b03811115614bd457600080fd5b8201601f81018413614be557600080fd5b614bf484823560208401614b55565b949350505050565b6001600160a01b0381168114610ba557600080fd5b8035614c1c81614bfc565b919050565b600060208284031215614c3357600080fd5b813561306081614bfc565b60008060408385031215614c5157600080fd5b50508035926020909101359150565b803560ff81168114614c1c57600080fd5b600060208284031215614c8357600080fd5b61306082614c60565b815181526020808301519082015260408101610d5e565b60008083601f840112614cb557600080fd5b5081356001600160401b03811115614ccc57600080fd5b6020830191508360208285010111156146b457600080fd5b60008060008060408587031215614cfa57600080fd5b84356001600160401b0380821115614d1157600080fd5b614d1d888389016149c9565b90965094506020870135915080821115614d3657600080fd5b50614d4387828801614ca3565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b60038110614d8357634e487b7160e01b600052602160045260246000fd5b9052565b815181526020808301516040830191614da290840182614d65565b5092915050565b803561ffff81168114614c1c57600080fd5b600060608284031215614dcd57600080fd5b614dd5614adb565b90508135614de281614a67565b8152614df060208301614da9565b6020820152614e0160408301614da9565b604082015292915050565b60008060808385031215614e1f57600080fd5b614e2883614c60565b9150614e378460208501614dbb565b90509250929050565b600080600060408486031215614e5557600080fd5b8335614e6081614bfc565b925060208401356001600160401b03811115614e7b57600080fd5b614e8786828701614ca3565b9497909650939450505050565b60006101008284031215614ea757600080fd5b50919050565b60008083601f840112614ebf57600080fd5b5081356001600160401b03811115614ed657600080fd5b6020830191508360208260061b85010111156146b457600080fd5b600060608284031215614f0357600080fd5b614f0b614adb565b905081356001600160401b03811115614f2357600080fd5b8201601f81018413614f3457600080fd5b614f4384823560208401614b55565b825250602082013560208201526040820135604082015292915050565b60008060008060008060008060006101a08a8c031215614f7f57600080fd5b89356001600160401b0380821115614f9657600080fd5b614fa28d838e01614ca3565b909b50995060208c0135915080821115614fbb57600080fd5b614fc78d838e01614ca3565b9099509750879150614fdc8d60408e01614e94565b96506101408c0135915080821115614ff357600080fd5b614fff8d838e01614ead565b90965094506101608c013591508082111561501957600080fd5b6150258d838e01614ef1565b93506101808c013591508082111561503c57600080fd5b506150498c828d01614ef1565b9150509295985092959850929598565b600080600080600080610160878903121561507357600080fd5b86356001600160401b038082111561508a57600080fd5b6150968a838b01614ca3565b909850965060208901359150808211156150af57600080fd5b6150bb8a838b01614ca3565b90965094508491506150d08a60408b01614e94565b93506101408901359150808211156150e757600080fd5b506150f489828a01614ef1565b9150509295509295509295565b60006001600160401b0382111561511a5761511a614ac5565b5060051b60200190565b6000806040838503121561513757600080fd5b823561514281614a67565b91506020838101356001600160401b0381111561515e57600080fd5b8401601f8101861361516f57600080fd5b803561518261517d82615101565b614b25565b81815260059190911b820183019083810190888311156151a157600080fd5b928401925b828410156151bf578335825292840192908401906151a6565b80955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561520c57835163ffffffff16835292840192918401916001016151ea565b50909695505050505050565b6000806020838503121561522b57600080fd5b82356001600160401b0381111561524157600080fd5b614a4285828601614ca3565b6001600160601b0381168114610ba557600080fd5b600082601f83011261527357600080fd5b8135602061528361517d83615101565b82815260069290921b840181019181810190868411156152a257600080fd5b8286015b848110156152f357604081890312156152bf5760008081fd5b6152c7614b03565b81356152d281614bfc565b8152818501356152e18161524d565b818601528352918301916040016152a6565b509695505050505050565b600080600060a0848603121561531357600080fd5b61531d8585614dbb565b9250606084013561532d8161524d565b915060808401356001600160401b0381111561534857600080fd5b61535486828701615262565b9150509250925092565b600082601f83011261536f57600080fd5b8135602061537f61517d83615101565b8281526060928302850182019282820191908785111561539e57600080fd5b8387015b858110156153c1576153b48982614dbb565b84529284019281016153a2565b5090979650505050505050565b600082601f8301126153df57600080fd5b813560206153ef61517d83615101565b82815260059290921b8401810191818101908684111561540e57600080fd5b8286015b848110156152f35780356154258161524d565b8352918301918301615412565b600082601f83011261544357600080fd5b8135602061545361517d83615101565b82815260059290921b8401810191818101908684111561547257600080fd5b8286015b848110156152f35780356001600160401b038111156154955760008081fd5b6154a38986838b0101615262565b845250918301918301615476565b600080600080600080600080610100898b0312156154ce57600080fd5b6154d789614c11565b97506154e560208a01614c11565b96506154f360408a01614c11565b955061550160608a01614c11565b94506080890135935060a08901356001600160401b038082111561552457600080fd5b6155308c838d0161535e565b945060c08b013591508082111561554657600080fd5b6155528c838d016153ce565b935060e08b013591508082111561556857600080fd5b506155758b828c01615432565b9150509295985092959890939650565b815163ffffffff16815260208083015161ffff90811691830191909152604092830151169181019190915260600190565b6000604082840312156155c857600080fd5b6155d0614b03565b90506155db82614c60565b815260208201356155eb81614bfc565b602082015292915050565b6000806000806080858703121561560c57600080fd5b843593506020808601356001600160401b0381111561562a57600080fd5b8601601f8101881361563b57600080fd5b803561564961517d82615101565b81815260069190911b8201830190838101908a83111561566857600080fd5b928401925b828410156156915761567f8b856155b6565b8252848201915060408401935061566d565b979a97995050505060408601359560600135949350505050565b60208101610d5e8284614d65565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156156f5576020818501810151868301820152016156d9565b81811115615707576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061306060208301846156cf565b60006020828403121561574157600080fd5b815161306081614bfc565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b6000602082840312156157a857600080fd5b8151801515811461306057600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600060001982141561582a5761582a615800565b5060010190565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b8181101561588e578551805160ff1684528501516001600160a01b031685840152948401949183019160010161585d565b5050606086019790975250505050608001529392505050565b60208082526019908201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601260045260246000fd5b600082615919576159196158f4565b500690565b6000808335601e1984360301811261593557600080fd5b8301803591506001600160401b0382111561594f57600080fd5b6020019150600581901b36038213156146b457600080fd5b60006020828403121561597957600080fd5b815161306081614a67565b6000821982111561599757615997615800565b500190565b600080858511156159ac57600080fd5b838611156159b957600080fd5b5050820193919092039150565b6000828210156159d8576159d8615800565b500390565b6000604082840312156159ef57600080fd5b61306083836155b6565b600060ff821660ff84168060ff03821115615a1657615a16615800565b019392505050565b60006060820160ff8616835260206001600160601b03808716828601526040606081870152838751808652608088019150848901955060005b81811015615a8757865180516001600160a01b031684528601518516868401529585019591830191600101615a57565b50909a9950505050505050505050565b60018060a01b03841681528260208201526060604082015260006115bb60608301846156cf565b600060208284031215615ad057600080fd5b81516001600160c01b038116811461306057600080fd5b6001600160a01b0383168152604060208201819052600090614bf4908301846156cf565b828152604060208201526000614bf460408301846156cf565b600060208284031215615b3657600080fd5b5051919050565b6001600160a01b03841681526101608101615b65602083018580358252602090810135910152565b615b7f606083016040860180358252602090810135910152565b60406080850160a084013760e0820160008152604060c0860182375060006101208301908152835190526020909201516101409091015292915050565b60018060a01b0383168152604060208201526000825160606040840152615be660a08401826156cf565b90506020840151606084015260408401516080840152809150509392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b03841681526040602082018190526000906115bb9083018486615c07565b60018060a01b0385168152836020820152606060408201526000615c7d606083018486615c07565b9695505050505050565b600082601f830112615c9857600080fd5b81516020615ca861517d83615101565b82815260059290921b84018101918181019086841115615cc757600080fd5b8286015b848110156152f3578051615cde8161524d565b8352918301918301615ccb565b60008060408385031215615cfe57600080fd5b82516001600160401b0380821115615d1557600080fd5b615d2186838701615c87565b93506020850151915080821115615d3757600080fd5b50615d4485828601615c87565b9150509250929050565b8381526040602082015260006115bb604083018486615c07565b60006020808385031215615d7b57600080fd5b82516001600160401b03811115615d9157600080fd5b8301601f81018513615da257600080fd5b8051615db061517d82615101565b81815260059190911b82018301908381019087831115615dcf57600080fd5b928401925b82841015615df6578351615de781614a67565b82529284019290840190615dd4565b979650505050505050565b600060208284031215615e1357600080fd5b81516130608161524d565b600061ffff80831681811415615e3657615e36615800565b6001019392505050565b600060208284031215615e5257600080fd5b81516001600160e01b03198116811461306057600080fd5b60006001600160601b0380831681851681830481118215151615615e9057615e90615800565b02949350505050565b60006001600160601b0380841680615eb357615eb36158f4565b9216919091049291505056fe5265676973747279436f6f7264696e61746f722e67657451756f72756d4269745265676973747279436f6f7264696e61746f722e7570646174654f70657261745265676973747279436f6f7264696e61746f722e5f76616c6964617465436875ab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd475265676973747279436f6f7264696e61746f722e5f646572656769737465724f5265676973747279436f6f7264696e61746f722e5f72656769737465724f70654269746d61705574696c732e6f72646572656442797465734172726179546f42a2646970667358221220c54efdc441b7ab5c292c79c0ba4c4250c55da2675b4df1faf620ffd38a6065c264736f6c634300080c0033","storage":{"0x0":"0xff"}},"0xc5a5c42992decbae36851359345fe25997f5c42d":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x3f1c547b21f65e10480de3ad8e19faac46c95034","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xcbeaf3bde82155f56486fb5a1072cb8baaf547cc":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061016e5760003560e01c8063715018a6116100ce578063a98fb35511610087578063a98fb3551461034a578063b3a9e53b1461035d578063c4d66de814610370578063d5d4bb5a14610383578063e481af9d14610396578063f2fde38b1461039e578063fabc1cbc146103b157600080fd5b8063715018a6146102d1578063886f1195146102d95780638da5cb5b146102ec5780639926ee7d146102fd578063a364f4da14610310578063a50a640e1461032357600080fd5b806333cfb7b71161012b57806333cfb7b71461022257806338c8ee6414610242578063485cc95514610255578063595c6a67146102685780635ac86ab7146102705780635c975abb146102a35780636b3aa72e146102ab57600080fd5b80630510c191146101735780630f5af14a1461019257806310d67a2f146101a7578063136439dd146101ba578063268f06e0146101cd5780632f65284e14610201575b600080fd5b61017b600081565b60405160ff90911681526020015b60405180910390f35b6101a56101a0366004613311565b6103c4565b005b6101a56101b536600461337c565b610494565b6101a56101c8366004613399565b610547565b6101f47f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b57081565b60405161018991906133b2565b61021461020f3660046133d8565b610674565b604051908152602001610189565b61023561023036600461337c565b610792565b604051610189919061347b565b6101a561025036600461337c565b610c66565b6101a56102633660046134c8565b610cde565b6101a5610db5565b61029361027e366004613505565b60cb54600160ff9092169190911b9081161490565b6040519015158152602001610189565b60cb54610214565b7f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc96101f4565b6101a5610e6f565b60ca546101f4906001600160a01b031681565b6066546001600160a01b03166101f4565b6101a561030b3660046135d5565b610e83565b6101a561031e36600461337c565b610fa4565b6101f47f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf81565b6101a561035836600461367f565b61106d565b61021461036b3660046136f5565b6110c1565b6101a561037e36600461337c565b6110f0565b61021461039136600461372a565b6111c6565b61023561131e565b6101a56103ac36600461337c565b6116e7565b6101a56103bf366004613399565b61175d565b60cb546000906001908116141561041e5760405162461bcd60e51b815260206004820152601960248201527814185d5cd8589b194e881a5b99195e081a5cc81c185d5cd959603a1b60448201526064015b60405180910390fd5b61042883836118b4565b6104655760405162461bcd60e51b815260206004820152600e60248201526d145d5bdc9d5b481b9bdd081b595d60921b6044820152606401610415565b61048f6104756020850185613778565b6104856040860160208701613795565b8560a001356119f3565b505050565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050b91906137b0565b6001600160a01b0316336001600160a01b03161461053b5760405162461bcd60e51b8152600401610415906137cd565b61054481611a57565b50565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e906105779033906004016133b2565b602060405180830381865afa158015610594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b89190613827565b6105d45760405162461bcd60e51b815260040161041590613842565b60cb54818116146106485760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d707420604482015277746f20756e70617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233906000805160206140a9833981519152906020015b60405180910390a250565b600060608501351580159061068c5750608085013515155b6106d35760405162461bcd60e51b8152602060048201526018602482015277115b5c1d1e48139150548811104818dbdb5b5a5d1b595b9d60421b6044820152606401610415565b600080806106e46020890189613778565b63ffffffff1663ffffffff16815260200190815260200160002060008760200160208101906107139190613795565b6001600160401b0316815260208101919091526040016000205490508061077e57826107735760405162461bcd60e51b815260206004820152600f60248201526e115b5c1d1e481859dc99595b595b9d608a1b6044820152606401610415565b61077e868585611b4e565b61078886866111c6565b9695505050505050565b606060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b03166313542a4e846040518263ffffffff1660e01b81526004016107e291906133b2565b602060405180830381865afa1580156107ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610823919061388a565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf169063871ef04990602401602060405180830381865afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906138a3565b90506001600160c01b038116158061094c57507f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610923573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094791906138cc565b60ff16155b1561096c5760408051600080825260208201909252905b50949350505050565b6000610980826001600160c01b0316611b5f565b90506000805b8251811015610a56577f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b0316633ca5a5f58483815181106109d0576109d06138e9565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a38919061388a565b610a429083613915565b915080610a4e8161392d565b915050610986565b506000816001600160401b03811115610a7157610a71613522565b604051908082528060200260200182016040528015610a9a578160200160208202803683370190505b5090506000805b8451811015610c59576000858281518110610abe57610abe6138e9565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d1690633ca5a5f590602401602060405180830381865afa158015610b33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b57919061388a565b905060005b81811015610c43576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b03169063adc804da906044016040805180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190613948565b60000151868681518110610c0b57610c0b6138e9565b6001600160a01b039092166020928302919091019091015284610c2d8161392d565b9550508080610c3b9061392d565b915050610b5c565b5050508080610c519061392d565b915050610aa1565b5090979650505050505050565b336001600160a01b037f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf16146105445760405162461bcd60e51b815260206004820152601f60248201527f5461736b206d616e61676572206d757374206265207468652063616c6c6572006044820152606401610415565b603354610100900460ff1615808015610cfe5750603354600160ff909116105b80610d185750303b158015610d18575060335460ff166001145b610d345760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015610d57576033805461ff0019166101001790555b610d6083611c21565b610d6b826000611c73565b801561048f576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60ca5460405163237dfb4760e11b81526001600160a01b03909116906346fbf68e90610de59033906004016133b2565b602060405180830381865afa158015610e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e269190613827565b610e425760405162461bcd60e51b815260040161041590613842565b60001960cb81905560405190815233906000805160206140a98339815191529060200160405180910390a2565b610e77611d47565b610e816000611c21565b565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614610ecb5760405162461bcd60e51b815260040161041590613a05565b604051632e8da82960e01b81526001600160a01b037f00000000000000000000000036c02da8a0983159322a80ffe9f24b1acff8b5701690632e8da82990610f179085906004016133b2565b602060405180830381865afa158015610f34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f589190613827565b610f965760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b6044820152606401610415565b610fa08282611da1565b5050565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614610fec5760405162461bcd60e51b815260040161041590613a05565b6040516351b27a6d60e11b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063a364f4da906110389084906004016133b2565b600060405180830381600087803b15801561105257600080fd5b505af1158015611066573d6000803e3d6000fd5b5050505050565b611075611d47565b60405163a98fb35560e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9169063a98fb35590611038908490600401613aca565b63ffffffff82166000908152602081815260408083206001600160401b03851684529091529020545b92915050565b603354610100900460ff16158080156111105750603354600160ff909116105b8061112a5750303b15801561112a575060335460ff166001145b6111465760405162461bcd60e51b8152600401610415906139b7565b6033805460ff191660011790558015611169576033805461ff0019166101001790555b61117282611e6d565b61117d600080611c73565b8015610fa0576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60008080806111d86020870187613778565b63ffffffff1663ffffffff16815260200190815260200160002060008560200160208101906112079190613795565b6001600160401b03166001600160401b031681526020019081526020016000205490508360a0013581146112775760405162461bcd60e51b81526020600482015260176024820152764d69736d61746368696e6720737461746520726f6f747360481b6044820152606401610415565b611316611287602085018561337c565b60208501358361129a6040880188613add565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112dc925050506060890189613add565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ed892505050565b949350505050565b606060007f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a491906138cc565b60ff169050806113c257505060408051600081526020810190915290565b6000805b8281101561147757604051633ca5a5f560e01b815260ff821660048201527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690633ca5a5f590602401602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611459919061388a565b6114639083613915565b91508061146f8161392d565b9150506113c6565b506000816001600160401b0381111561149257611492613522565b6040519080825280602002602001820160405280156114bb578160200160208202803683370190505b5090506000805b7f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf6001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154491906138cc565b60ff168110156116dd57604051633ca5a5f560e01b815260ff821660048201526000907f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b031690633ca5a5f590602401602060405180830381865afa1580156115b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dc919061388a565b905060005b818110156116c8576040516356e4026d60e11b815260ff84166004820152602481018290527f000000000000000000000000809d550fca64d94bd9f66e60752a544199cfac3d6001600160a01b03169063adc804da906044016040805180830381865afa158015611656573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167a9190613948565b60000151858581518110611690576116906138e9565b6001600160a01b0390921660209283029190910190910152836116b28161392d565b94505080806116c09061392d565b9150506115e1565b505080806116d59061392d565b9150506114c2565b5090949350505050565b6116ef611d47565b6001600160a01b0381166117545760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610415565b61054481611c21565b60ca60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d491906137b0565b6001600160a01b0316336001600160a01b0316146118045760405162461bcd60e51b8152600401610415906137cd565b60cb5419811960cb5419161461187d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d706044820152777420746f2070617573652066756e6374696f6e616c69747960401b6064820152608401610415565b60cb81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610669565b6000807f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf6001600160a01b031663292f7a4e6118ef86612015565b6118fa600143613b2a565b8660037f0000000000000000000000000e801d84fa97b50751dbf25036d067dcf18858bf6001600160a01b031663ef0244586040518163ffffffff1660e01b8152600401602060405180830381865afa15801561195b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197f9190613b41565b61198a906002613b5e565b6119949190613ba0565b6040518563ffffffff1660e01b81526004016119b39493929190613d57565b6040805180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190613eb6565b63ffffffff83166000818152602081815260408083206001600160401b03871680855290835292819020859055518481529192917fca7171570f4ca232f925661b810636124eaf784a25b7c14e6b34c95b814dfdd8910160405180910390a3505050565b6001600160a01b038116611ae55760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610415565b60ca54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160ca80546001600160a01b0319166001600160a01b0392909216919091179055565b81611b5984826103c4565b50505050565b6060600080611b6d84612045565b61ffff166001600160401b03811115611b8857611b88613522565b6040519080825280601f01601f191660200182016040528015611bb2576020820181803683370190505b5090506000805b825182108015611bca575061010081105b156116dd576001811b935085841615611c11578060f81b838381518110611bf357611bf36138e9565b60200101906001600160f81b031916908160001a9053508160010191505b611c1a8161392d565b9050611bb9565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60ca546001600160a01b0316158015611c9457506001600160a01b03821615155b611d165760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610415565b60cb81905560405181815233906000805160206140a98339815191529060200160405180910390a2610fa082611a57565b6066546001600160a01b03163314610e815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610415565b336001600160a01b037f0000000000000000000000008f86403a4de0bb5791fa46b8e795c547942fe4cf1614611de95760405162461bcd60e51b815260040161041590613a05565b604051639926ee7d60e01b81526001600160a01b037f000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc91690639926ee7d90611e379085908590600401613ee2565b600060405180830381600087803b158015611e5157600080fd5b505af1158015611e65573d6000803e3d6000fd5b505050505050565b603354610100900460ff166117545760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610415565b6040516bffffffffffffffffffffffff19606087901b16602082015260009081908190611f18906034016040516020818303038152906040528688612070565b9150915081611f625760405162461bcd60e51b81526020600482015260166024820152751058d8dbdd5b9d08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610415565b6000611f6d82612099565b9050600080611fa28a604051602001611f8891815260200190565b604051602081830303815290604052888560400151612070565b9150915081611ff35760405162461bcd60e51b815260206004820152601c60248201527f53746f726167652076616c756520646f6573206e6f74206578697374000000006044820152606401610415565b612004611fff8261215d565b612170565b955050505050505b95945050505050565b6000816040516020016120289190613f2d565b604051602081830303815290604052805190602001209050919050565b6000805b82156110ea5761205a600184613b2a565b909216918061206881613f99565b915050612049565b60006060600061207f8661219f565b905061208c8186866121d1565b9250925050935093915050565b6040805160808101825260008082526020820181905291810182905260608101829052906120c6836122ac565b905060405180608001604052806120f6836000815181106120e9576120e96138e9565b60200260200101516122bf565b8152602001612111836001815181106120e9576120e96138e9565b81526020016121398360028151811061212c5761212c6138e9565b60200260200101516122c6565b81526020016121548360038151811061212c5761212c6138e9565b90529392505050565b60606110ea61216b83612368565b612395565b6000806000602084511115612186576020612189565b83515b60209485015194036008029390931c9392505050565b606081805190602001206040516020016121bb91815260200190565b6040516020818303038152906040529050919050565b6000606060006121e085612417565b905060008060006121f2848a89612511565b815192955090935091501580806122065750815b6122525760405162461bcd60e51b815260206004820152601a60248201527f50726f76696465642070726f6f6620697320696e76616c69642e0000000000006044820152606401610415565b60008161226e576040518060200160405280600081525061229a565b61229a8661227d600188613b2a565b8151811061228d5761228d6138e9565b6020026020010151612935565b919b919a509098505050505050505050565b60606110ea6122ba83612368565b61295f565b60006110ea825b60006021826000015111156122ed5760405162461bcd60e51b815260040161041590613fbb565b60008060006122fb85612b45565b91945092509050600081600181111561231657612316613ff2565b146123335760405162461bcd60e51b815260040161041590613fbb565b60008386602001516123459190613915565b805190915060208410156107885760208490036101000a90049695505050505050565b60408051808201825260008082526020918201528151808301909252825182529182019181019190915290565b606060008060006123a585612b45565b9194509250905060008160018111156123c0576123c0613ff2565b146124085760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b21029262810313cba32b9903b30b63ab29760411b6044820152606401610415565b61200c85602001518484612e7b565b60606000612424836122ac565b9050600081516001600160401b0381111561244157612441613522565b60405190808252806020026020018201604052801561248657816020015b604080518082019091526060808252602082015281526020019060019003908161245f5790505b50905060005b82518110156125095760006124b98483815181106124ac576124ac6138e9565b6020026020010151612395565b905060405180604001604052808281526020016124d5836122ac565b8152508383815181106124ea576124ea6138e9565b60200260200101819052505080806125019061392d565b91505061248c565b509392505050565b6000606081808061252187612f56565b90506000869050600080612548604051806040016040528060608152602001606081525090565b60005b8c5181101561290d578c8181518110612566576125666138e9565b60200260200101519150828461257c9190613915565b9350612589600188613915565b9650836125e1578151805160209091012085146125dc5760405162461bcd60e51b8152602060048201526011602482015270092dcecc2d8d2c840e4dedee840d0c2e6d607b1b6044820152606401610415565b61269e565b815151602011612643578151805160209091012085146125dc5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206c6172676520696e7465726e616c206861736800000000006044820152606401610415565b846126518360000151613090565b1461269e5760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420696e7465726e616c206e6f646520686173680000000000006044820152606401610415565b6126aa60106001613915565b82602001515114156127235785518414156126c45761290d565b60008685815181106126d8576126d86138e9565b602001015160f81c60f81b60f81c9050600083602001518260ff1681518110612703576127036138e9565b60200260200101519050612716816130b8565b96506001945050506128fb565b600282602001515114156128b357600061273c836130ee565b9050600081600081518110612753576127536138e9565b016020015160f81c9050600061276a600283614008565b61277590600261402a565b90506000612786848360ff16613112565b905060006127948b8a613112565b905060006127a28383613148565b905060ff8516600214806127b9575060ff85166003145b156127f3578083511480156127ce5750808251145b156127e0576127dd818b613915565b99505b50600160ff1b995061290d945050505050565b60ff85161580612806575060ff85166001145b1561285c57825181146128265750600160ff1b995061290d945050505050565b61284d8860200151600181518110612840576128406138e9565b60200260200101516130b8565b9a5097506128fb945050505050565b60405162461bcd60e51b815260206004820152602660248201527f52656365697665642061206e6f6465207769746820616e20756e6b6e6f776e206044820152650e0e4caccd2f60d31b6064820152608401610415565b60405162461bcd60e51b815260206004820152601d60248201527f526563656976656420616e20756e706172736561626c65206e6f64652e0000006044820152606401610415565b806129058161392d565b91505061254b565b50600160ff1b8414866129208786613112565b909e909d50909b509950505050505050505050565b602081015180516060916110ea9161294f90600190613b2a565b815181106124ac576124ac6138e9565b606060008061296d84612b45565b9193509091506001905081600181111561298957612989613ff2565b146129d05760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b210292628103634b9ba103b30b63ab29760491b6044820152606401610415565b6040805160208082526104208201909252600091816020015b60408051808201909152600080825260208201528152602001906001900390816129e95790505090506000835b8651811015612b3a5760208210612a825760405162461bcd60e51b815260206004820152602a60248201527f50726f766964656420524c50206c6973742065786365656473206d6178206c6960448201526939ba103632b733ba341760b11b6064820152608401610415565b600080612abf6040518060400160405280858c60000151612aa39190613b2a565b8152602001858c60200151612ab89190613915565b9052612b45565b509150915060405180604001604052808383612adb9190613915565b8152602001848b60200151612af09190613915565b815250858581518110612b0557612b056138e9565b6020908102919091010152612b1b600185613915565b9350612b278183613915565b612b319084613915565b92505050612a16565b508152949350505050565b600080600080846000015111612b985760405162461bcd60e51b81526020600482015260186024820152772926281034ba32b69031b0b73737ba10313290373ab6361760411b6044820152606401610415565b6020840151805160001a607f8111612bbd576000600160009450945094505050612e74565b60b78111612c35576000612bd2608083613b2a565b905080876000015111612c235760405162461bcd60e51b815260206004820152601960248201527824b73b30b634b2102926281039b437b93a1039ba3934b7339760391b6044820152606401610415565b60019550935060009250612e74915050565b60bf8111612d1f576000612c4a60b783613b2a565b905080876000015111612c9f5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420524c50206c6f6e6720737472696e67206c656e6774682e006044820152606401610415565b600183015160208290036101000a9004612cb98183613915565b885111612d035760405162461bcd60e51b815260206004820152601860248201527724b73b30b634b210292628103637b7339039ba3934b7339760411b6044820152606401610415565b612d0e826001613915565b9650945060009350612e7492505050565b60f78111612d94576000612d3460c083613b2a565b905080876000015111612d835760405162461bcd60e51b815260206004820152601760248201527624b73b30b634b2102926281039b437b93a103634b9ba1760491b6044820152606401610415565b600195509350849250612e74915050565b6000612da160f783613b2a565b905080876000015111612df65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420524c50206c6f6e67206c697374206c656e6774682e0000006044820152606401610415565b600183015160208290036101000a9004612e108183613915565b885111612e585760405162461bcd60e51b815260206004820152601660248201527524b73b30b634b210292628103637b733903634b9ba1760511b6044820152606401610415565b612e63826001613915565b9650945060019350612e7492505050565b9193909250565b60606000826001600160401b03811115612e9757612e97613522565b6040519080825280601f01601f191660200182016040528015612ec1576020820181803683370190505b509050805160001415612ed5579050612f4f565b6000612ee18587613915565b90506020820160005b612ef560208761404d565b811015612f2c5782518252612f0b602084613915565b9250612f18602083613915565b915080612f248161392d565b915050612eea565b5080519151601f86166020036101000a6000190192831692191691909117905290505b9392505050565b6060600082516002612f689190614061565b6001600160401b03811115612f7f57612f7f613522565b6040519080825280601f01601f191660200182016040528015612fa9576020820181803683370190505b50905060005b8351811015613089576004848281518110612fcc57612fcc6138e9565b01602001516001600160f81b031916901c82612fe9836002614061565b81518110612ff957612ff96138e9565b60200101906001600160f81b031916908160001a9053506010848281518110613024576130246138e9565b0160200151613036919060f81c614008565b60f81b82613045836002614061565b613050906001613915565b81518110613060576130606138e9565b60200101906001600160f81b031916908160001a905350806130818161392d565b915050612faf565b5092915050565b60006020825110156130a457506020015190565b818060200190518101906110ea919061388a565b600060606020836000015110156130d9576130d2836131c4565b90506130e5565b6130e283612395565b90505b612f4f81613090565b60606110ea61310d83602001516000815181106124ac576124ac6138e9565b612f56565b60608251821061313157506040805160208101909152600081526110ea565b612f4f83838486516131439190613b2a565b6131cf565b6000805b80845111801561315c5750808351115b80156131ad5750828181518110613175576131756138e9565b602001015160f81c60f81b6001600160f81b03191684828151811061319c5761319c6138e9565b01602001516001600160f81b031916145b15612f4f57806131bc8161392d565b91505061314c565b60606110ea826132e3565b6060816131dd81601f613915565b10156131fb5760405162461bcd60e51b815260040161041590614080565b826132068382613915565b10156132245760405162461bcd60e51b815260040161041590614080565b61322e8284613915565b845110156132725760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610415565b6060821580156132915760405191506000825260208201604052610963565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156132ca5780518352602092830192016132b2565b5050858452601f01601f19166040525050949350505050565b60606110ea826020015160008460000151612e7b565b600060c0828403121561330b57600080fd5b50919050565b60008060e0838503121561332457600080fd5b61332e84846132f9565b915060c08301356001600160401b0381111561334957600080fd5b8301610180818603121561335c57600080fd5b809150509250929050565b6001600160a01b038116811461054457600080fd5b60006020828403121561338e57600080fd5b8135612f4f81613367565b6000602082840312156133ab57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b60006080828403121561330b57600080fd5b60008060008061010085870312156133ef57600080fd5b6133f986866132f9565b935060c08501356001600160401b038082111561341557600080fd5b613421888389016133c6565b945060e087013591508082111561343757600080fd5b818701915087601f83011261344b57600080fd5b81358181111561345a57600080fd5b88602082850101111561346c57600080fd5b95989497505060200194505050565b6020808252825182820181905260009190848201906040850190845b818110156134bc5783516001600160a01b031683529284019291840191600101613497565b50909695505050505050565b600080604083850312156134db57600080fd5b82356134e681613367565b9150602083013561335c81613367565b60ff8116811461054457600080fd5b60006020828403121561351757600080fd5b8135612f4f816134f6565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561355a5761355a613522565b60405290565b60006001600160401b038084111561357a5761357a613522565b604051601f8501601f19908116603f011681019082821181831017156135a2576135a2613522565b816040528093508581528686860111156135bb57600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156135e857600080fd5b82356135f381613367565b915060208301356001600160401b038082111561360f57600080fd5b908401906060828703121561362357600080fd5b61362b613538565b82358281111561363a57600080fd5b83019150601f8201871361364d57600080fd5b61365c87833560208501613560565b815260208301356020820152604083013560408201528093505050509250929050565b60006020828403121561369157600080fd5b81356001600160401b038111156136a757600080fd5b8201601f810184136136b857600080fd5b61131684823560208401613560565b63ffffffff8116811461054457600080fd5b80356001600160401b03811681146136f057600080fd5b919050565b6000806040838503121561370857600080fd5b8235613713816136c7565b9150613721602084016136d9565b90509250929050565b60008060e0838503121561373d57600080fd5b61374784846132f9565b915060c08301356001600160401b0381111561376257600080fd5b61376e858286016133c6565b9150509250929050565b60006020828403121561378a57600080fd5b8135612f4f816136c7565b6000602082840312156137a757600080fd5b612f4f826136d9565b6000602082840312156137c257600080fd5b8151612f4f81613367565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b805180151581146136f057600080fd5b60006020828403121561383957600080fd5b612f4f82613817565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561389c57600080fd5b5051919050565b6000602082840312156138b557600080fd5b81516001600160c01b0381168114612f4f57600080fd5b6000602082840312156138de57600080fd5b8151612f4f816134f6565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115613928576139286138ff565b500190565b6000600019821415613941576139416138ff565b5060010190565b60006040828403121561395a57600080fd5b604051604081018181106001600160401b038211171561397c5761397c613522565b604052825161398a81613367565b815260208301516bffffffffffffffffffffffff811681146139ab57600080fd5b60208201529392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015613aa357602081850181015186830182015201613a87565b81811115613ab5576000602083870101525b50601f01601f19169290920160200192915050565b602081526000612f4f6020830184613a7d565b6000808335601e19843603018112613af457600080fd5b8301803591506001600160401b03821115613b0e57600080fd5b602001915036819003821315613b2357600080fd5b9250929050565b600082821015613b3c57613b3c6138ff565b500390565b600060208284031215613b5357600080fd5b8151612f4f816136c7565b600063ffffffff80831681851681830481118215151615613b8157613b816138ff565b02949350505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff80841680613bb757613bb7613b8a565b92169190910492915050565b6000808335601e19843603018112613bda57600080fd5b83016020810192503590506001600160401b03811115613bf957600080fd5b8060051b3603831315613b2357600080fd5b8183526000602080850194508260005b85811015613c46578135613c2e816136c7565b63ffffffff1687529582019590820190600101613c1b565b509495945050505050565b6000808335601e19843603018112613c6857600080fd5b83016020810192503590506001600160401b03811115613c8757600080fd5b8060061b3603831315613b2357600080fd5b81835260208301925060008160005b84811015613cd057813586526020808301359087015260409586019590910190600101613ca8565b5093949350505050565b604081833760408201600081526040808301823750600060808301525050565b81835260006020808501808196508560051b810191508460005b87811015613d4a578284038952613d2b8288613bc3565b613d36868284613c0b565b9a87019a9550505090840190600101613d14565b5091979650505050505050565b84815260a06020820152600160a0820152600060c082015263ffffffff8416604082015260e060608201526000613d8e8485613bc3565b61018060e0850152613da561026085018284613c0b565b915050613db56020860186613c51565b60df198086850301610100870152613dce848385613c99565b9350613ddd6040890189613c51565b93509150610120818786030181880152613df8858585613c99565b94506101409350613e0e84880160608b01613cda565b60e08901356101c08801526101008901356101e0880152613e31818a018a613bc3565b935090508187860301610200880152613e4b858483613c0b565b945050613e5a83890189613bc3565b935091508086850301610220870152613e74848484613c0b565b9350613e84610160890189613bc3565b93509150808685030161024087015250613e9f838383613cfa565b935050505061200c608083018463ffffffff169052565b60008060408385031215613ec957600080fd5b613ed283613817565b9150602083015190509250929050565b60018060a01b0383168152604060208201526000825160606040840152613f0c60a0840182613a7d565b90506020840151606084015260408401516080840152809150509392505050565b60c081018235613f3c816136c7565b63ffffffff168252613f50602084016136d9565b6001600160401b03808216602085015280613f6d604087016136d9565b1660408501525050606083013560608301526080830135608083015260a083013560a083015292915050565b600061ffff80831681811415613fb157613fb16138ff565b6001019392505050565b6020808252601a908201527f496e76616c696420524c5020627974657333322076616c75652e000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600060ff83168061401b5761401b613b8a565b8060ff84160691505092915050565b600060ff821660ff841680821015614044576140446138ff565b90039392505050565b60008261405c5761405c613b8a565b500490565b600081600019048311821515161561407b5761407b6138ff565b500290565b6020808252600e908201526d736c6963655f6f766572666c6f7760901b60408201526060019056feab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3da264697066735822122098c1921f6dcbcaffb47f186a92732749ef2999e46630e18c811cfa8923a64b6664736f6c634300080c0033","storage":{"0x33":"0xff"}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x6356ca026caf21023cb7650068491a5cc11ee8f81fbeb8f52c6780c04b388516","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xb7f8bc63bbcad18155201308c8f3540b07f84f5e","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xd5a0359da7b310917d7760385516b2426e86ab7f":{"nonce":0,"balance":"0x8ac7230489e80000","code":"0x","storage":{}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0x1","0x33":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x65":"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512","0x66":"0x0","0x97":"0x5ebe2c12a42e721609d1498db50973aeaff9e3c64738181887c534f293093208","0x9d":"0xc4e0","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xa51c1fc2f0d1a1b8494ed1fe312d7c3a78ed91c0","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe6e340d132b5f46d1e472debcd681b2abc16e57e":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b61008036600461083c565b610118565b61005b610093366004610857565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e436600461083c565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610323565b6101166101116103c2565b6103cc565b565b6101206103f0565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610423565b50565b6101546100fe565b6101676103f0565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610423915050565b505050565b6101c36100fe565b60006101da6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103c2565b905090565b6102086100fe565b90565b6102136103f0565b6001600160a01b0316336001600160a01b0316141561015757610154816104f0565b600061023f6103f0565b6001600160a01b0316336001600160a01b03161415610200576101fb6103f0565b61015481604051602401610274919061090a565b60408051601f198184030181529190526020810180516001600160e01b031663104c13eb60e21b179052610544565b610154816040516024016102b991815260200190565b60408051601f198184030181529190526020810180516001600160e01b031663f5b1bba960e01b179052610544565b606061030d838360405180606001604052806027815260200161095a60279139610565565b9392505050565b6001600160a01b03163b151590565b61032b6103f0565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610642565b3660008037600080366000845af43d6000803e8080156103eb573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b610448604051806040016040528060048152602001637861623160e01b815250610260565b6104518361066a565b610476604051806040016040528060048152602001633c30b11960e11b815250610260565b6000825111806104835750805b156101c3576104ad604051806040016040528060048152602001637861623360e01b815250610260565b6104c0836001600160a01b03163b6102a3565b6104ca83836102e8565b506101c3604051806040016040528060048152602001631e18588d60e21b815250610260565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6105196103f0565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816106aa565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606001600160a01b0384163b6105cd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016103b9565b600080856001600160a01b0316856040516105e8919061093d565b600060405180830381855af49150503d8060008114610623576040519150601f19603f3d011682016040523d82523d6000602084013e610628565b606091505b5091509150610638828286610753565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610414565b6106738161078c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661070f5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016103b9565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060831561076257508161030d565b8251156107725782518084602001fd5b8160405162461bcd60e51b81526004016103b9919061090a565b6001600160a01b0381163b6107f95760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103b9565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610732565b80356001600160a01b038116811461083757600080fd5b919050565b60006020828403121561084e57600080fd5b61030d82610820565b60008060006040848603121561086c57600080fd5b61087584610820565b9250602084013567ffffffffffffffff8082111561089257600080fd5b818601915086601f8301126108a657600080fd5b8135818111156108b557600080fd5b8760208285010111156108c757600080fd5b6020830194508093505050509250925092565b60005b838110156108f55781810151838201526020016108dd565b83811115610904576000848401525b50505050565b60208152600082518060208401526109298160408501602087016108da565b601f01601f19169190910160400192915050565b6000825161094f8184602087016108da565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201db1e2dd48c9fdc5f7cb2488684a94ebe91f6de7e67134bed3c67063bc96705b64736f6c634300080c0033","storage":{"0x0":"0xe7f1725e7734ce288f8367e1bb143e90bb3f05120001","0x1":"0x0","0x32":"0x7322c24752f79c05ffd1e2a6fcb97020c1c264f1","0x64":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x65":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x322813fd9a801c5507c9de605d63cea4f2ce6c44","0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103":"0x5fbdb2315678afecb367f032d93f642f64180aa3"}},"0xe7f1725e7734ce288f8367e1bb143e90bb3f0512":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806346fbf68e146100515780638568520614610089578063ce5484281461009e578063eab66d7a146100b1575b600080fd5b61007461005f366004610313565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b61009c610097366004610335565b6100dc565b005b61009c6100ac366004610313565b61011d565b6001546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610080565b6001546001600160a01b0316331461010f5760405162461bcd60e51b815260040161010690610371565b60405180910390fd5b6101198282610153565b5050565b6001546001600160a01b031633146101475760405162461bcd60e51b815260040161010690610371565b61015081610220565b50565b6001600160a01b0382166101bf5760405162461bcd60e51b815260206004820152602d60248201527f50617573657252656769737472792e5f7365745061757365723a207a65726f2060448201526c1859191c995cdcc81a5b9c1d5d609a1b6064820152608401610106565b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527f65d3a1fd4c13f05cba164f80d03ce90fb4b5e21946bfc3ab7dbd434c2d0b9152910160405180910390a15050565b6001600160a01b03811661028e5760405162461bcd60e51b815260206004820152602f60248201527f50617573657252656769737472792e5f736574556e7061757365723a207a657260448201526e1bc81859191c995cdcc81a5b9c1d5d608a1b6064820152608401610106565b600154604080516001600160a01b03928316815291831660208301527f06b4167a2528887a1e97a366eefe8549bfbf1ea3e6ac81cb2564a934d20e8892910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b038116811461030e57600080fd5b919050565b60006020828403121561032557600080fd5b61032e826102f7565b9392505050565b6000806040838503121561034857600080fd5b610351836102f7565b91506020830135801515811461036657600080fd5b809150509250929050565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b60608201526080019056fea2646970667358221220f71399fafd06d0e383b21957bcac3bf3986a6a0701bc4c5dc7ee118215f3652364736f6c634300080c0033","storage":{"0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x1"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":68,"balance":"0x21e16c3f87018363b1e","code":"0x","storage":{}},"0xf5059a5d33d5853360d16c683c16e67980206f36":{"nonce":1,"balance":"0x0","code":"0x608060405234801561001057600080fd5b506004361061006d5760003560e01c8063095ea7b31461007257806318160ddd1461009d57806323b872dd146100af57806340c10f19146100c257806370a08231146100d7578063a9059cbb14610100578063dd62ed3e14610113575b600080fd5b610088610080366004610400565b600192915050565b60405190151581526020015b60405180910390f35b6002545b604051908152602001610094565b6100886100bd36600461042a565b61014c565b6100d56100d0366004610400565b610163565b005b6100a16100e5366004610466565b6001600160a01b031660009081526020819052604090205490565b61008861010e366004610400565b610171565b6100a1610121366004610488565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061015984848461017b565b5060019392505050565b61016d8282610325565b5050565b6000336101598185855b6001600160a01b0383166101e45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101db565b6001600160a01b0383166000908152602081905260409020548111156102bd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101db565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661037b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101db565b806002600082825461038d91906104bb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b03811681146103fb57600080fd5b919050565b6000806040838503121561041357600080fd5b61041c836103e4565b946020939093013593505050565b60008060006060848603121561043f57600080fd5b610448846103e4565b9250610456602085016103e4565b9150604084013590509250925092565b60006020828403121561047857600080fd5b610481826103e4565b9392505050565b6000806040838503121561049b57600080fd5b6104a4836103e4565b91506104b2602084016103e4565b90509250929050565b600082198211156104dc57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7869d1b65a81f40da4e99688a39ee120b01ef93e81e865bb196d1a6f125866c64736f6c634300080c0033","storage":{}}}} \ No newline at end of file diff --git a/tests/integration/integration_test.go b/tests/integration/integration_test.go index 50302bc2..6f581927 100644 --- a/tests/integration/integration_test.go +++ b/tests/integration/integration_test.go @@ -453,6 +453,7 @@ func buildConfig(t *testing.T, sfflDeploymentRaw config.SFFLDeploymentRaw, addre AggregatorServerIpPortAddr: aggConfigRaw.AggregatorServerIpPortAddr, AggregatorRestServerIpPortAddr: aggConfigRaw.AggregatorRestServerIpPortAddr, AggregatorDatabasePath: aggConfigRaw.AggregatorDatabasePath, + AggregatorCheckpointInterval: time.Duration(aggConfigRaw.AggregatorCheckpointInterval) * time.Millisecond, RegisterOperatorOnStartup: aggConfigRaw.RegisterOperatorOnStartup, AggregatorAddress: aggregatorAddr, RollupsInfo: rollupsInfo,