0 txs
32 calls
constructor
constructor()
functions
accessController
viewfunction accessController() view returns (address)
assetManagementConfig
viewfunction assetManagementConfig() view returns (address)
getTokenBalancesOf
viewfunction getTokenBalancesOf(address[] portfolioTokens, address _vault) view returns (uint256[] vaultBalances)
owner
viewfunction owner() view returns (address)
portfolio
viewfunction portfolio() view returns (address)
protocolConfig
viewfunction protocolConfig() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
tokensMapping
viewfunction tokensMapping(address) view returns (bool)
TOTAL_WEIGHT
viewfunction TOTAL_WEIGHT() view returns (uint256)
claimRewardTokens
nonpayablefunction claimRewardTokens(address _tokenToBeClaimed, address _target, bytes _claimCalldata)
init
nonpayablefunction init(address _portfolio, address _accessController)
removeNonPortfolioToken
nonpayablefunction removeNonPortfolioToken(address _token)
removeNonPortfolioTokenPartially
nonpayablefunction removeNonPortfolioTokenPartially(address _token, uint256 _percentage)
removePortfolioToken
nonpayablefunction removePortfolioToken(address _token)
removePortfolioTokenPartially
nonpayablefunction removePortfolioTokenPartially(address _token, uint256 _percentage)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateTokens
nonpayablefunction updateTokens(tuple rebalanceData)
updateWeights
nonpayablefunction updateWeights(address[] _sellTokens, uint256[] _sellAmounts, address _handler, bytes _callData)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PortfolioTokenRemoved
event PortfolioTokenRemoved(address indexed token, address indexed vault, uint256 indexed balance, uint256 atSnapshotId)
UpdatedTokens
event UpdatedTokens(address[] newTokens)
UpdatedWeights
event UpdatedWeights()
Upgraded
event Upgraded(address indexed implementation)
errors
BalanceOfHandlerShouldNotExceedDust
error BalanceOfHandlerShouldNotExceedDust()
BalanceOfVaultCannotNotBeZero
error BalanceOfVaultCannotNotBeZero(address)
BalanceOfVaultIsZero
error BalanceOfVaultIsZero()
CallerNotAssetManager
error CallerNotAssetManager()
ClaimFailed
error ClaimFailed()
InvalidAddress
error InvalidAddress()
InvalidBuyTokenList
error InvalidBuyTokenList()
InvalidLength
error InvalidLength()
InvalidSolver
error InvalidSolver()
InvalidTokenRemovalPercentage
error InvalidTokenRemovalPercentage()
IsPortfolioToken
error IsPortfolioToken()
NonPortfolioTokenBalanceIsNotZero
error NonPortfolioTokenBalanceIsNotZero()
NotPortfolioToken
error NotPortfolioToken()
ProtocolIsPaused
error ProtocolIsPaused()
RewardTargetNotEnabled
error RewardTargetNotEnabled()
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805161369f6200011f600039600081816104050152818161044e015281816108a7015281816108e7015261097a015261369f6000f3fe60806040526004361061012a5760003560e01c80638faf9007116100ab578063ed2a2f9d1161006f578063ed2a2f9d14610345578063f09a40161461035b578063f2fde38b1461037b578063f5efbb4f1461039b578063fa3560fe146103bb578063fb4ab1e2146103db57600080fd5b80638faf90071461029857806393005a5a146102b8578063bc43cbaf146102e5578063e26b526514610305578063ed28e75f1461032557600080fd5b80634f1ef286116100f25780634f1ef2861461020f57806352d1902d14610222578063715018a6146102455780637cd885591461025a5780638da5cb5b1461027a57600080fd5b806316ede0161461012f578063264e303c1461016c5780633659cfe61461018c5780633773bd4f146101ae5780633d70015a146101ce575b600080fd5b34801561013b57600080fd5b5060fb5461014f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561017857600080fd5b5060fe5461014f906001600160a01b031681565b34801561019857600080fd5b506101ac6101a7366004612db3565b6103fb565b005b3480156101ba57600080fd5b506101ac6101c9366004612e85565b6104e3565b3480156101da57600080fd5b506101ff6101e9366004612db3565b6101006020526000908152604090205460ff1681565b6040519015158152602001610163565b6101ac61021d366004612ee6565b61089d565b34801561022e57600080fd5b5061023761096d565b604051908152602001610163565b34801561025157600080fd5b506101ac610a20565b34801561026657600080fd5b506101ac610275366004612f80565b610a34565b34801561028657600080fd5b506033546001600160a01b031661014f565b3480156102a457600080fd5b506101ac6102b3366004613026565b610b2a565b3480156102c457600080fd5b506102d86102d3366004613075565b610cad565b6040516101639190613125565b3480156102f157600080fd5b5060fc5461014f906001600160a01b031681565b34801561031157600080fd5b506101ac610320366004613169565b610d5b565b34801561033157600080fd5b506101ac610340366004613026565b61127f565b34801561035157600080fd5b5061023761271081565b34801561036757600080fd5b506101ac6103763660046131a3565b6113e0565b34801561038757600080fd5b506101ac610396366004612db3565b61150c565b3480156103a757600080fd5b5060fd5461014f906001600160a01b031681565b3480156103c757600080fd5b506101ac6103d6366004612db3565b611582565b3480156103e757600080fd5b506101ac6103f6366004612db3565b6118c6565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361044c5760405162461bcd60e51b8152600401610443906131dc565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610495600080516020613603833981519152546001600160a01b031690565b6001600160a01b0316146104bb5760405162461bcd60e51b815260040161044390613228565b6104c481611aaf565b604080516000808252602082019092526104e091839190611ab7565b50565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa15801561053f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105639190613274565b6105805760405163142bddf560e01b815260040160405180910390fd5b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f79190613274565b1561061557604051632bc2c01360e21b815260040160405180910390fd5b61061d611c22565b60fd54604051633af84d6960e11b81526001600160a01b038481166004830152909116906375f09ad290602401602060405180830381865afa158015610667573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b9190613274565b6106a857604051635224dec160e01b815260040160405180910390fd5b60fb546040805163154d950160e31b815290516000926001600160a01b03169163aa6ca80891600480830192869291908290030181865afa1580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107199190810190613296565b610101549091506000906107379083906001600160a01b0316610cad565b610101549091506000906107559087906001600160a01b0316611c7b565b60fb546040516376fa2fd960e01b81529192506001600160a01b0316906376fa2fd990610788908890889060040161337f565b600060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505061010154600092506107d5915085906001600160a01b0316610cad565b610101549091506000906107f39089906001600160a01b0316611c7b565b90508281116108155760405163360e42e160e01b815260040160405180910390fd5b845160005b8181101561088757858181518110610834576108346133a3565b602002602001015184828151811061084e5761084e6133a3565b602002602001015110156108755760405163360e42e160e01b815260040160405180910390fd5b8061087f816133cf565b91505061081a565b505050505050506108986001606555565b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108e55760405162461bcd60e51b8152600401610443906131dc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661092e600080516020613603833981519152546001600160a01b031690565b6001600160a01b0316146109545760405162461bcd60e51b815260040161044390613228565b61095d82611aaf565b61096982826001611ab7565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a0d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610443565b5060008051602061360383398151915290565b610a28611d30565b610a326000611d8a565b565b610a3c611c22565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015610a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abc9190613274565b610ad95760405163142bddf560e01b815260040160405180910390fd5b610aef8686610ae6611ddc565b87878787611e53565b6040517fae1b19fe8592f923d8fa2e6a7aa25431923b1071d1294f8f0bd08d00b4a80a6f90600090a1610b226001606555565b505050505050565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015610b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baa9190613274565b610bc75760405163142bddf560e01b815260040160405180910390fd5b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190613274565b15610c5c57604051632bc2c01360e21b815260040160405180910390fd5b610c64611c22565b610c6d826123ca565b610c8a576040516345655bc160e01b815260040160405180910390fd5b6000610c96838361243f565b9050610ca283826124f5565b506109696001606555565b8151606090806001600160401b03811115610cca57610cca612dd0565b604051908082528060200260200182016040528015610cf3578160200160208202803683370190505b50915060005b81811015610d5357610d24858281518110610d1657610d166133a3565b602002602001015185611c7b565b838281518110610d3657610d366133a3565b602090810291909101015280610d4b816133cf565b915050610cf9565b505092915050565b610d63611c22565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de39190613274565b610e005760405163142bddf560e01b815260040160405180910390fd5b366000610e1060208401846133e8565b9092509050366000610e2285806133e8565b915091506000610e30611ddc565b60fb54604051633d91c7e960e01b81529192506001600160a01b031690633d91c7e990610e639086908690600401613431565b600060405180830381600087803b158015610e7d57600080fd5b505af1158015610e91573d6000803e3d6000fd5b50508251915060009050816001600160401b03811115610eb357610eb3612dd0565b604051908082528060200260200182016040528015610edc578160200160208202803683370190505b50905060005b82811015610f4b57610f1c848281518110610eff57610eff6133a3565b6020908102919091010151610101546001600160a01b0316611c7b565b828281518110610f2e57610f2e6133a3565b602090810291909101015280610f43816133cf565b915050610ee2565b50610fef8787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610f929250505060408d018d6133e8565b8d6060016020810190610fa59190612db3565b8e8060800190610fb5919061347f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e5392505050565b60005b828110156110575760016101006000868481518110611013576110136133a3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061104f816133cf565b915050610ff2565b508360005b818110156110cc576000610100600089898581811061107d5761107d6133a3565b90506020020160208101906110929190612db3565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806110c4816133cf565b91505061105c565b5060fd54604080516355e9e10d60e01b815290516000926001600160a01b0316916355e9e10d9160048083019260209291908290030181865afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b91906134c5565b905060005b8481101561123257600086828151811061115c5761115c6133a3565b6020908102919091018101516001600160a01b038116600090815261010090925260409091205490915060ff1615611200576000612710848785815181106111a6576111a66133a3565b60200260200101516111b891906134de565b6111c291906134f5565b6101015490915081906111df9084906001600160a01b0316611c7b565b11156111fe576040516310e481e960e21b815260040160405180910390fd5b505b6001600160a01b0316600090815261010060205260409020805460ff191690558061122a816133cf565b915050611140565b507f78c2af8266e5e5c122300f6c72cc717e475bab04684f24645166d5df4b1ad4e08787604051611264929190613431565b60405180910390a15050505050505050506104e06001606555565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa1580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff9190613274565b61131c5760405163142bddf560e01b815260040160405180910390fd5b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa15801561136f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113939190613274565b156113b157604051632bc2c01360e21b815260040160405180910390fd5b6113b9611c22565b6113c2826123ca565b15610c8a5760405163d404666f60e01b815260040160405180910390fd5b600054610100900460ff16158080156114005750600054600160ff909116105b8061141a5750303b15801561141a575060005460ff166001145b61147d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610443565b6000805460ff1916600117905580156114a0576000805461ff0019166101001790555b6114a86127d0565b6114b06127ff565b6114b861282e565b6114c28383612855565b8015610898576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b611514611d30565b6001600160a01b0381166115795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610443565b6104e081611d8a565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa1580156115de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116029190613274565b61161f5760405163142bddf560e01b815260040160405180910390fd5b611627611c22565b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa15801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e9190613274565b156116bc57604051632bc2c01360e21b815260040160405180910390fd5b6116c5816123ca565b6116e2576040516345655bc160e01b815260040160405180910390fd5b60006116ec611ddc565b805190915060006116fe600183613517565b6001600160401b0381111561171557611715612dd0565b60405190808252806020026020018201604052801561173e578160200160208202803683370190505b5090506000805b838110156117d6576000858281518110611761576117616133a3565b60200260200101519050866001600160a01b0316816001600160a01b0316146117c357808484611790816133cf565b9550815181106117a2576117a26133a3565b60200260200101906001600160a01b031690816001600160a01b0316815250505b50806117ce816133cf565b915050611745565b5060fb54604051633d91c7e960e01b81526001600160a01b0390911690633d91c7e99061180790859060040161352a565b600060405180830381600087803b15801561182157600080fd5b505af1158015611835573d6000803e3d6000fd5b5050610101546040516370a0823160e01b81526001600160a01b0391821660048201526000935090881691506370a0823190602401602060405180830381865afa158015611887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ab91906134c5565b90506118b786826124f5565b50505050506104e06001606555565b60fc54604051632474521560e21b815260008051602061364a83398151915260048201523360248201526001600160a01b03909116906391d1485490604401602060405180830381865afa158015611922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119469190613274565b6119635760405163142bddf560e01b815260040160405180910390fd5b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da9190613274565b156119f857604051632bc2c01360e21b815260040160405180910390fd5b611a00611c22565b611a09816123ca565b15611a275760405163d404666f60e01b815260040160405180910390fd5b610101546040516370a0823160e01b81526001600160a01b0391821660048201526000918316906370a0823190602401602060405180830381865afa158015611a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9891906134c5565b9050611aa482826124f5565b506104e06001606555565b6104e0611d30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611aea5761089883612aef565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611b44575060408051601f3d908101601f19168201909252611b41918101906134c5565b60015b611ba75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610443565b6000805160206136038339815191528114611c165760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610443565b50610898838383612b8b565b600260655403611c745760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610443565b6002606555565b60006001600160a01b0383161580611c9a57506001600160a01b038216155b15611cb85760405163e6c4247b60e01b815260040160405180910390fd5b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015611cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2291906134c5565b9392505050565b6001606555565b6033546001600160a01b03163314610a325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610443565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fb546040805163154d950160e31b815290516060926001600160a01b03169163aa6ca8089160048083019260009291908290030181865afa158015611e26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e4e9190810190613296565b905090565b60fd60009054906101000a90046001600160a01b03166001600160a01b031663dac885616040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eca9190613274565b15611ee857604051632bc2c01360e21b815260040160405180910390fd5b60fd546040516302cc250d60e01b81526001600160a01b038481166004830152909116906302cc250d90602401602060405180830381865afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190613274565b611f735760405163af24067760e01b815260040160405180910390fd5b8583808214611f955760405163251f56a160e21b815260040160405180910390fd5b60005b8281101561209b5760008a8a83818110611fb457611fb46133a3565b9050602002016020810190611fc99190612db3565b90506001600160a01b038116611ff25760405163e6c4247b60e01b815260040160405180910390fd5b60fb546001600160a01b031663d37aad48828a8a86818110612016576120166133a3565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152602090910292909201356024830152509089166044820152606401600060405180830381600087803b15801561206f57600080fd5b505af1158015612083573d6000803e3d6000fd5b50505050508080612093906133cf565b915050611f98565b50610101546040516330a6a4a760e21b81526000916001600160a01b038088169263c29a929c926120d2921690889060040161337f565b6000604051808303816000875af11580156120f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121199190810190613296565b905060005b8381101561223457600061271060fd60009054906101000a90046001600160a01b03166001600160a01b03166355e9e10d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a291906134c5565b8a8a858181106121b4576121b46133a3565b905060200201356121c591906134de565b6121cf91906134f5565b9050806122028d8d858181106121e7576121e76133a3565b90506020020160208101906121fc9190612db3565b89611c7b565b11156122215760405163ef27f7bb60e01b815260040160405180910390fd5b508061222c816133cf565b91505061211e565b50875160005b818110156122e05760008a8281518110612256576122566133a3565b602002602001015190506122808161010160009054906101000a90046001600160a01b0316611c7b565b6000036122ab5760405163aa3a20a160e01b81526001600160a01b0382166004820152602401610443565b6001600160a01b0316600090815261010060205260409020805460ff19166001179055806122d8816133cf565b91505061223a565b50815160005b8181101561235b576101006000858381518110612305576123056133a3565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1661234957604051637179192360e11b815260040160405180910390fd5b80612353816133cf565b9150506122e6565b5060005b828110156123bb5761010060008c838151811061237e5761237e6133a3565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169055806123b3816133cf565b91505061235f565b50505050505050505050505050565b6000806123d5611ddc565b805190915060005b8181101561243457846001600160a01b0316838281518110612401576124016133a3565b60200260200101516001600160a01b03160361242257506001949350505050565b8061242c816133cf565b9150506123dd565b506000949350505050565b600061271082106124635760405163c348e4a760e01b815260040160405180910390fd5b610101546040516370a0823160e01b81526001600160a01b0391821660048201526000918516906370a0823190602401602060405180830381865afa1580156124b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d491906134c5565b90506127106124e384836134de565b6124ed91906134f5565b949350505050565b8060000361251657604051633ba269b760e21b815260040160405180910390fd5b60ff5460408051634b88b8ad60e11b815290516000926001600160a01b031691639711715a916004808301926020929190829003018187875af1158015612561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258591906134c5565b9050600060ff60009054906101000a90046001600160a01b03166001600160a01b0316635cbe4fb76040518163ffffffff1660e01b81526004016020604051808303816000875af11580156125de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612602919061356b565b60fb54604051631a6f55a960e31b81526001600160a01b03878116600483015260248201879052808416604483015292935091169063d37aad4890606401600060405180830381600087803b15801561265a57600080fd5b505af115801561266e573d6000803e3d6000fd5b505060ff546001600160a01b03169150638ea13ce89050612690600185613517565b868460fb60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270991906134c5565b6040516001600160e01b031960e087901b16815260048101949094526001600160a01b039283166024850152911660448301526064820152608401600060405180830381600087803b15801561275e57600080fd5b505af1158015612772573d6000803e3d6000fd5b5050505082816001600160a01b0316856001600160a01b03167fcf75e0342d197ab0efc09f079e8b3da634bdb43064d01db1d5b721d6158034d16001866127b99190613517565b60405190815260200160405180910390a450505050565b600054610100900460ff166127f75760405162461bcd60e51b815260040161044390613588565b610a32612bb6565b600054610100900460ff166128265760405162461bcd60e51b815260040161044390613588565b610a32612be6565b600054610100900460ff16610a325760405162461bcd60e51b815260040161044390613588565b600054610100900460ff1661287c5760405162461bcd60e51b815260040161044390613588565b6001600160a01b038216158061289957506001600160a01b038116155b156128b75760405163e6c4247b60e01b815260040160405180910390fd5b60fb80546001600160a01b038085166001600160a01b0319928316811790935560fc8054918516919092161790556040805163f5efbb4f60e01b8152905163f5efbb4f916004808201926020929091908290030181865afa158015612920573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612944919061356b565b60fd80546001600160a01b0319166001600160a01b0392831617905560fb54604080516309938c0f60e21b81529051919092169163264e303c9160048083019260209291908290030181865afa1580156129a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c6919061356b565b60fe80546001600160a01b0319166001600160a01b0392831617905560fb546040805163ca5fafdd60e01b81529051919092169163ca5fafdd9160048083019260209291908290030181865afa158015612a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a48919061356b565b60ff80546001600160a01b0319166001600160a01b0392831617905560fb546040805163fbfa77cf60e01b81529051919092169163fbfa77cf9160048083019260209291908290030181865afa158015612aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aca919061356b565b61010180546001600160a01b0319166001600160a01b03929092169190911790555050565b6001600160a01b0381163b612b5c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610443565b60008051602061360383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612b9483612c0d565b600082511180612ba15750805b1561089857612bb08383612c4d565b50505050565b600054610100900460ff16612bdd5760405162461bcd60e51b815260040161044390613588565b610a3233611d8a565b600054610100900460ff16611d295760405162461bcd60e51b815260040161044390613588565b612c1681612aef565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611d22838360405180606001604052806027815260200161362360279139612c78565b92915050565b6060600080856001600160a01b031685604051612c9591906135d3565b600060405180830381855af49150503d8060008114612cd0576040519150601f19603f3d011682016040523d82523d6000602084013e612cd5565b606091505b5091509150612ce686838387612cf0565b9695505050505050565b60608315612d5f578251600003612d58576001600160a01b0385163b612d585760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610443565b50816124ed565b6124ed8383815115612d745781518083602001fd5b8060405162461bcd60e51b815260040161044391906135ef565b6001600160a01b03811681146104e057600080fd5b8035612dae81612d8e565b919050565b600060208284031215612dc557600080fd5b8135611d2281612d8e565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612e0e57612e0e612dd0565b604052919050565b600082601f830112612e2757600080fd5b81356001600160401b03811115612e4057612e40612dd0565b612e53601f8201601f1916602001612de6565b818152846020838601011115612e6857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612e9a57600080fd5b8335612ea581612d8e565b92506020840135612eb581612d8e565b915060408401356001600160401b03811115612ed057600080fd5b612edc86828701612e16565b9150509250925092565b60008060408385031215612ef957600080fd5b8235612f0481612d8e565b915060208301356001600160401b03811115612f1f57600080fd5b612f2b85828601612e16565b9150509250929050565b60008083601f840112612f4757600080fd5b5081356001600160401b03811115612f5e57600080fd5b6020830191508360208260051b8501011115612f7957600080fd5b9250929050565b60008060008060008060808789031215612f9957600080fd5b86356001600160401b0380821115612fb057600080fd5b612fbc8a838b01612f35565b90985096506020890135915080821115612fd557600080fd5b612fe18a838b01612f35565b909650945060408901359150612ff682612d8e565b9092506060880135908082111561300c57600080fd5b5061301989828a01612e16565b9150509295509295509295565b6000806040838503121561303957600080fd5b823561304481612d8e565b946020939093013593505050565b60006001600160401b0382111561306b5761306b612dd0565b5060051b60200190565b6000806040838503121561308857600080fd5b82356001600160401b0381111561309e57600080fd5b8301601f810185136130af57600080fd5b803560206130c46130bf83613052565b612de6565b82815260059290921b830181019181810190888411156130e357600080fd5b938201935b8385101561310a5784356130fb81612d8e565b825293820193908201906130e8565b95506131199050868201612da3565b93505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561315d57835183529284019291840191600101613141565b50909695505050505050565b60006020828403121561317b57600080fd5b81356001600160401b0381111561319157600080fd5b820160a08185031215611d2257600080fd5b600080604083850312156131b657600080fd5b82356131c181612d8e565b915060208301356131d181612d8e565b809150509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561328657600080fd5b81518015158114611d2257600080fd5b600060208083850312156132a957600080fd5b82516001600160401b038111156132bf57600080fd5b8301601f810185136132d057600080fd5b80516132de6130bf82613052565b81815260059190911b820183019083810190878311156132fd57600080fd5b928401925b8284101561332457835161331581612d8e565b82529284019290840190613302565b979650505050505050565b60005b8381101561334a578181015183820152602001613332565b50506000910152565b6000815180845261336b81602086016020860161332f565b601f01601f19169290920160200192915050565b6001600160a01b03831681526040602082018190526000906124ed90830184613353565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016133e1576133e16133b9565b5060010190565b6000808335601e198436030181126133ff57600080fd5b8301803591506001600160401b0382111561341957600080fd5b6020019150600581901b3603821315612f7957600080fd5b60208082528181018390526000908460408401835b8681101561347457823561345981612d8e565b6001600160a01b031682529183019190830190600101613446565b509695505050505050565b6000808335601e1984360301811261349657600080fd5b8301803591506001600160401b038211156134b057600080fd5b602001915036819003821315612f7957600080fd5b6000602082840312156134d757600080fd5b5051919050565b8082028115828204841417612c7257612c726133b9565b60008261351257634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115612c7257612c726133b9565b6020808252825182820181905260009190848201906040850190845b8181101561315d5783516001600160a01b031683529284019291840191600101613546565b60006020828403121561357d57600080fd5b8151611d2281612d8e565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516135e581846020870161332f565b9190910192915050565b602081526000611d22602083018461335356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649c6e3ae929b539a99db03120eac7d9f862d68479b44f1eec05ab6036fcf56830a26469706673582212204abb4b3c4c40120b9b6b3eb97043480472f90d29dbee33a7fee208110923319264736f6c63430008110033