Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "name": "AccessControlEnforcedDefaultAdminDelay", "type": "error" }, { "inputs": [], "name": "AccessControlEnforcedDefaultAdminRules", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "defaultAdmin", "type": "address" } ], "name": "AccessControlInvalidDefaultAdmin", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "AprTooHigh", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NegativeRebaseNotAllowed", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [], "name": "NotWhitelisted", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "inputs": [], "name": "TransferNotSupported", "type": "error" }, { "inputs": [], "name": "UpdateMustBeInFuture", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminDelayChangeCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "indexed": false, "internalType": "uint48", "name": "effectSchedule", "type": "uint48" } ], "name": "DefaultAdminDelayChangeScheduled", "type": "event" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminTransferCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" }, { "indexed": false, "internalType": "uint48", "name": "acceptSchedule", "type": "uint48" } ], "name": "DefaultAdminTransferScheduled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "shareRate", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "updateTime", "type": "uint256" } ], "name": "Rebase", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "BASE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LOCK_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "assetsToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "beginDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "tokens", "type": "uint256" } ], "name": "burnAssets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" } ], "name": "changeDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelayIncreaseWait", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "lock_", "type": "address" }, { "internalType": "address", "name": "gov_", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastShareRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxAprThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mintAssets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextShareRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdmin", "outputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "apr", "type": "uint256" }, { "internalType": "uint256", "name": "updateEnd_", "type": "uint256" } ], "name": "rebaseByApr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nextShareRate_", "type": "uint256" }, { "internalType": "uint256", "name": "updateEnd_", "type": "uint256" } ], "name": "rebaseByShareRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rollbackDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setDestruct", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shareRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "sharesOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "sharesToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "updateStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "whitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
6080604052600c805460ff1916905534801561001a57600080fd5b50610023610028565b6100da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100785760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612062806100e96000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c806391d1485411610167578063d547741f116100ce578063e320bee511610087578063e320bee5146105eb578063ec342ad0146105f4578063f4f2d198146105fd578063f5eb42dc14610606578063f9f92be41461062f578063fb802a651461064257600080fd5b8063d547741f14610545578063d602b9fd14610558578063d936547e14610560578063dd62ed3e1461058c578063e083619c146105c5578063e0b231fa146105d857600080fd5b8063a27fa6fc11610120578063a27fa6fc146104d8578063a9059cbb146104e1578063c87d0e00146104f4578063cc8463c814610507578063cefc14291461050f578063cf6eefb71461051757600080fd5b806391d14854146104685780639248d0691461047b57806395d89b411461048e5780639b19251a14610496578063a1eda53c146104a9578063a217fddf146104d057600080fd5b806336568abe1161020b578063649a5ec7116101c4578063649a5ec7146103f457806370a08231146104075780637fe0c8501461041a57806384ef8ffc1461042d5780638da5cb5b1461044d5780638f15b4141461045557600080fd5b806336568abe146103a15780633a98ef39146103b45780633c54d386146103bc578063443dda3e146103cf57806358059cb6146103d8578063634e93da146103e157600080fd5b806318160ddd1161025d57806318160ddd1461032e57806323b872dd14610344578063248a9ca3146103575780632f286b1b1461036a5780632f2ff15d1461037f578063313ce5671461039257600080fd5b806301ffc9a7146102a5578063022d63fb146102cd57806306fdde03146102e9578063088f057b146102fe578063095ea7b3146103135780630aa6220b14610326575b600080fd5b6102b86102b3366004611a96565b61064a565b60405190151581526020015b60405180910390f35b620697805b60405165ffffffffffff90911681526020016102c4565b6102f1610675565b6040516102c49190611ac0565b61031161030c366004611b0f565b610707565b005b6102b8610321366004611b4d565b6107e6565b610311610835565b61033661084b565b6040519081526020016102c4565b6102b8610352366004611b77565b610874565b610336610365366004611bb3565b6108cf565b61033660008051602061200d83398151915281565b61031161038d366004611bcc565b6108f1565b604051600881526020016102c4565b6103116103af366004611bcc565b61091d565b600954610336565b6103116103ca366004611b4d565b6109e6565b61033660045481565b61033660085481565b6103116103ef366004611bf8565b610a10565b610311610402366004611c13565b610a24565b610336610415366004611bf8565b610a38565b610336610428366004611bb3565b610a86565b610435610a9d565b6040516001600160a01b0390911681526020016102c4565b610435610ab9565b610311610463366004611cde565b610ac3565b6102b8610476366004611bcc565b610c2e565b610311610489366004611d63565b610c66565b6102f1610c85565b6103116104a4366004611bf8565b610c94565b6104b1610cc4565b6040805165ffffffffffff9384168152929091166020830152016102c4565b610336600081565b61033660065481565b6102b86104ef366004611b4d565b610d37565b610311610502366004611b4d565b610d52565b6102d2610d7c565b610311610dfa565b61051f610e3a565b604080516001600160a01b03909316835265ffffffffffff9091166020830152016102c4565b610311610553366004611bcc565b610e68565b610311610e90565b6102b861056e366004611bf8565b6001600160a01b031660009081526002602052604090205460ff1690565b61033661059a366004611d85565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6103116105d3366004611b0f565b610ea3565b6103366105e6366004611bb3565b610f4e565b61033660055481565b61033660035481565b61033660075481565b610336610614366004611bf8565b6001600160a01b031660009081526020819052604090205490565b61031161063d366004611bf8565b610f65565b610336610f92565b60006001600160e01b031982166318a4c3c360e11b148061066f575061066f8261100b565b92915050565b6060600a805461068490611daf565b80601f01602080910402602001604051908101604052809291908181526020018280546106b090611daf565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b5050505050905090565b600061071281611040565b42821015610733576040516364a8b95f60e01b815260040160405180910390fd5b600854831115610756576040516308ca3d0b60e01b815260040160405180910390fd5b60006301e133806107674285611dff565b6107719086611e12565b61077b9190611e29565b90506000610787610f92565b600481905542600555600785905590506107a18282611e4b565b600681905560408051918252602082018690527f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511910160405180910390a15050505050565b6001600160a01b03821660009081526002602052604081205460ff1661081f57604051630b094f2760e31b815260040160405180910390fd5b3361082b81858561104a565b5060019392505050565b600061084081611040565b610848611057565b50565b6000600354610858610f92565b6009546108659190611e12565b61086f9190611e29565b905090565b6001600160a01b03821660009081526002602052604081205460ff166108ad57604051630b094f2760e31b815260040160405180910390fd5b336108b9858285611064565b6108c48585856110e3565b506001949350505050565b6000908152600080516020611fcd833981519152602052604090206001015490565b8161090f57604051631fe1e13d60e11b815260040160405180910390fd5b6109198282611142565b5050565b600080516020611fad83398151915282158015610952575061093d610a9d565b6001600160a01b0316826001600160a01b0316145b156109d757600080610962610e3a565b90925090506001600160a01b038216151580610984575065ffffffffffff8116155b8061099757504265ffffffffffff821610155b156109c4576040516319ca5ebb60e01b815265ffffffffffff821660048201526024015b60405180910390fd5b5050805465ffffffffffff60a01b191681555b6109e1838361115e565b505050565b60008051602061200d8339815191526109fe81611040565b6109e183610a0b84610f4e565b611191565b6000610a1b81611040565b610919826111c7565b6000610a2f81611040565b6109198261123a565b600c5460009060ff1615610a4e57506000919050565b600354610a59610f92565b6001600160a01b038416600090815260208190526040902054610a7c9190611e12565b61066f9190611e29565b6000600354610a93610f92565b610a7c9084611e12565b600080516020611fed833981519152546001600160a01b031690565b600061086f610a9d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff16600081158015610b095750825b905060008267ffffffffffffffff166001148015610b265750303b155b905081158015610b34575080155b15610b525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b7c57845460ff60401b1916600160401b1785555b600a610b888a82611eae565b50600b610b958982611eae565b50610ba16000876112aa565b610bb960008051602061200d833981519152886112bc565b504260058190556007556305f5e100600381905560048190556006556302160ec06008558315610c2357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6000918252600080516020611fcd833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610c7181611040565b50600c805460ff1916911515919091179055565b6060600b805461068490611daf565b6000610c9f81611040565b506001600160a01b03166000908152600260205260409020805460ff19166001179055565b600080516020611fed83398151915254600090600160d01b900465ffffffffffff16600080516020611fad8339815191528115801590610d0c57504265ffffffffffff831610155b610d1857600080610d2e565b6001810154600160a01b900465ffffffffffff16825b92509250509091565b600060405163d21ad44b60e01b815260040160405180910390fd5b60008051602061200d833981519152610d6a81611040565b6109e183610d7784610f4e565b611333565b600080516020611fed83398151915254600090600080516020611fad83398151915290600160d01b900465ffffffffffff168015801590610dc457504265ffffffffffff8216105b610dde578154600160d01b900465ffffffffffff16610df3565b6001820154600160a01b900465ffffffffffff165b9250505090565b6000610e04610e3a565b509050336001600160a01b03821614610e3257604051636116401160e11b81523360048201526024016109bb565b610848611369565b600080516020611fad833981519152546001600160a01b03811691600160a01b90910465ffffffffffff1690565b81610e8657604051631fe1e13d60e11b815260040160405180910390fd5b6109198282611406565b6000610e9b81611040565b610848611422565b6000610eae81611040565b610eb6610f92565b831015610ed657604051633a7f157560e11b815260040160405180910390fd5b42821015610ef7576040516364a8b95f60e01b815260040160405180910390fd5b610eff610f92565b600455426005556007829055600683905560408051848152602081018490527f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511910160405180910390a1505050565b6000610f58610f92565b600354610a7c9084611e12565b6000610f7081611040565b506001600160a01b03166000908152600260205260409020805460ff19169055565b600754600554600654600454600093929190428411610fb357509392505050565b824211610fc257949350505050565b600081610fcf8587611dff565b610fd98642611dff565b610fe38587611dff565b610fed9190611e12565b610ff79190611e29565b6110019190611e4b565b9695505050505050565b60006001600160e01b03198216637965db0b60e01b148061066f57506301ffc9a760e01b6001600160e01b031983161461066f565b610848813361142d565b6109e18383836001611466565b61106260008061153b565b565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198110156110dd57818110156110ce57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109bb565b6110dd84848484036000611466565b50505050565b6001600160a01b03831661110d57604051634b637e8f60e11b8152600060048201526024016109bb565b6001600160a01b0382166111375760405163ec442f0560e01b8152600060048201526024016109bb565b6109e1838383611616565b61114b826108cf565b61115481611040565b6110dd83836112bc565b6001600160a01b03811633146111875760405163334bd91960e11b815260040160405180910390fd5b6109e18282611740565b6001600160a01b0382166111bb5760405163ec442f0560e01b8152600060048201526024016109bb565b61091960008383611616565b60006111d1610d7c565b6111da42611799565b6111e49190611f6e565b90506111f082826117d0565b60405165ffffffffffff821681526001600160a01b038316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b60006112458261185d565b61124e42611799565b6112589190611f6e565b9050611264828261153b565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b6112b26118ac565b61091982826118f5565b6000600080516020611fad833981519152836113215760006112dc610a9d565b6001600160a01b03161461130357604051631fe1e13d60e11b815260040160405180910390fd5b6001810180546001600160a01b0319166001600160a01b0385161790555b61132b848461195e565b949350505050565b6001600160a01b03821661135d57604051634b637e8f60e11b8152600060048201526024016109bb565b61091982600083611616565b600080516020611fad833981519152600080611383610e3a565b915091506113988165ffffffffffff16151590565b15806113ac57504265ffffffffffff821610155b156113d4576040516319ca5ebb60e01b815265ffffffffffff821660048201526024016109bb565b6113e660006113e1610a9d565b611740565b506113f26000836112bc565b505081546001600160d01b03191690915550565b61140f826108cf565b61141881611040565b6110dd8383611740565b6110626000806117d0565b6114378282610c2e565b6109195760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016109bb565b6001600160a01b0384166114905760405163e602df0560e01b8152600060048201526024016109bb565b6001600160a01b0383166114ba57604051634a1406b160e11b8152600060048201526024016109bb565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156110dd57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161152d91815260200190565b60405180910390a350505050565b600080516020611fed83398151915254600080516020611fad83398151915290600160d01b900465ffffffffffff1680156115d8574265ffffffffffff821610156115ae57600182015482546001600160d01b0316600160a01b90910465ffffffffffff16600160d01b021782556115d8565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b5060010180546001600160a01b0316600160a01b65ffffffffffff948516026001600160d01b031617600160d01b9290931691909102919091179055565b6001600160a01b0383166116415780600960008282546116369190611e4b565b909155506116b39050565b6001600160a01b038316600090815260208190526040902054818110156116945760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109bb565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166116cf576009805482900390556116ee565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161173391815260200190565b60405180910390a3505050565b6000600080516020611fad833981519152831580156117775750611762610a9d565b6001600160a01b0316836001600160a01b0316145b1561178f576001810180546001600160a01b03191690555b61132b8484611a0a565b600065ffffffffffff8211156117cc576040516306dfcc6560e41b815260306004820152602481018390526044016109bb565b5090565b600080516020611fad83398151915260006117e9610e3a565b835465ffffffffffff8616600160a01b026001600160d01b03199091166001600160a01b03881617178455915061182990508165ffffffffffff16151590565b156110dd576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a150505050565b600080611868610d7c565b90508065ffffffffffff168365ffffffffffff16116118905761188b8382611f8d565b6118a5565b6118a565ffffffffffff841662069780611a86565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661106257604051631afcd79f60e31b815260040160405180910390fd5b6118fd6118ac565b600080516020611fad8339815191526001600160a01b03821661193657604051636116401160e11b8152600060048201526024016109bb565b80546001600160d01b0316600160d01b65ffffffffffff8516021781556110dd6000836112bc565b6000600080516020611fcd8339815191526119798484610c2e565b6119f9576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556119af3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061066f565b600091505061066f565b5092915050565b6000600080516020611fcd833981519152611a258484610c2e565b156119f9576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061066f565b60008282188284100282186118a5565b600060208284031215611aa857600080fd5b81356001600160e01b0319811681146118a557600080fd5b60006020808352835180602085015260005b81811015611aee57858101830151858201604001528201611ad2565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611b2257600080fd5b50508035926020909101359150565b80356001600160a01b0381168114611b4857600080fd5b919050565b60008060408385031215611b6057600080fd5b611b6983611b31565b946020939093013593505050565b600080600060608486031215611b8c57600080fd5b611b9584611b31565b9250611ba360208501611b31565b9150604084013590509250925092565b600060208284031215611bc557600080fd5b5035919050565b60008060408385031215611bdf57600080fd5b82359150611bef60208401611b31565b90509250929050565b600060208284031215611c0a57600080fd5b6118a582611b31565b600060208284031215611c2557600080fd5b813565ffffffffffff811681146118a557600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c6257600080fd5b813567ffffffffffffffff80821115611c7d57611c7d611c3b565b604051601f8301601f19908116603f01168101908282118183101715611ca557611ca5611c3b565b81604052838152866020858801011115611cbe57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060808587031215611cf457600080fd5b843567ffffffffffffffff80821115611d0c57600080fd5b611d1888838901611c51565b95506020870135915080821115611d2e57600080fd5b50611d3b87828801611c51565b935050611d4a60408601611b31565b9150611d5860608601611b31565b905092959194509250565b600060208284031215611d7557600080fd5b813580151581146118a557600080fd5b60008060408385031215611d9857600080fd5b611da183611b31565b9150611bef60208401611b31565b600181811c90821680611dc357607f821691505b602082108103611de357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066f5761066f611de9565b808202811582820484141761066f5761066f611de9565b600082611e4657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561066f5761066f611de9565b601f8211156109e1576000816000526020600020601f850160051c81016020861015611e875750805b601f850160051c820191505b81811015611ea657828155600101611e93565b505050505050565b815167ffffffffffffffff811115611ec857611ec8611c3b565b611edc81611ed68454611daf565b84611e5e565b602080601f831160018114611f115760008415611ef95750858301515b600019600386901b1c1916600185901b178555611ea6565b600085815260208120601f198616915b82811015611f4057888601518255948401946001909101908401611f21565b5085821015611f5e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b65ffffffffffff818116838216019080821115611a0357611a03611de9565b65ffffffffffff828116828216039080821115611a0357611a03611de956feeef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800eef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401ee67e84f062f26b2e1ed715b7ab5b471f8978a749ac5fc5bc774f49acca5e751a26469706673582212200b4d6b7d1f05e865f815f64b3cd5ac77711345502a1e257efd6fc993d22b16d964736f6c63430008180033