Overview
ETH Balance
ETH Value
$0.00Latest 5 from a total of 5 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Set Gov | 103548916 | 980 days ago | IN | 0 ETH | 0.000161727877 | ||||
| Signal Set Gov | 103230162 | 981 days ago | IN | 0 ETH | 0.000179365806 | ||||
| Set Buffer | 102897290 | 982 days ago | IN | 0 ETH | 0.000136509108 | ||||
| Set Price Feed U... | 102897256 | 982 days ago | IN | 0 ETH | 0.000161604643 | ||||
| Signal Set Price... | 102896819 | 982 days ago | IN | 0 ETH | 0.000171827429 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./interfaces/ITimelockTarget.sol";
import "../access/interfaces/IAdmin.sol";
import "../core/interfaces/IVaultPriceFeed.sol";
import "../oracle/interfaces/IFastPriceFeed.sol";
import "../tokens/interfaces/IBaseToken.sol";
import "../libraries/math/SafeMath.sol";
import "../libraries/token/IERC20.sol";
contract PriceFeedTimelock {
using SafeMath for uint256;
uint256 public constant MAX_BUFFER = 5 days;
uint256 public buffer;
address public admin;
address public tokenManager;
mapping (bytes32 => uint256) public pendingActions;
mapping (address => bool) public isHandler;
mapping (address => bool) public isKeeper;
event SignalPendingAction(bytes32 action);
event SignalApprove(address token, address spender, uint256 amount, bytes32 action);
event SignalWithdrawToken(address target, address token, address receiver, uint256 amount, bytes32 action);
event SignalSetGov(address target, address gov, bytes32 action);
event SignalSetPriceFeedWatcher(address fastPriceFeed, address account, bool isActive);
event SignalPriceFeedSetTokenConfig(
address vaultPriceFeed,
address token,
address priceFeed,
uint256 priceDecimals,
bool isStrictStable
);
event ClearAction(bytes32 action);
modifier onlyAdmin() {
require(msg.sender == admin, "Timelock: forbidden");
_;
}
modifier onlyHandlerAndAbove() {
require(msg.sender == admin || isHandler[msg.sender], "Timelock: forbidden");
_;
}
modifier onlyKeeperAndAbove() {
require(msg.sender == admin || isHandler[msg.sender] || isKeeper[msg.sender], "Timelock: forbidden");
_;
}
modifier onlyTokenManager() {
require(msg.sender == tokenManager, "Timelock: forbidden");
_;
}
constructor(
address _admin,
uint256 _buffer,
address _tokenManager
) public {
require(_buffer <= MAX_BUFFER, "Timelock: invalid _buffer");
admin = _admin;
buffer = _buffer;
tokenManager = _tokenManager;
}
function setAdmin(address _admin) external onlyTokenManager {
admin = _admin;
}
function setExternalAdmin(address _target, address _admin) external onlyAdmin {
require(_target != address(this), "Timelock: invalid _target");
IAdmin(_target).setAdmin(_admin);
}
function setContractHandler(address _handler, bool _isActive) external onlyAdmin {
isHandler[_handler] = _isActive;
}
function setKeeper(address _keeper, bool _isActive) external onlyAdmin {
isKeeper[_keeper] = _isActive;
}
function setBuffer(uint256 _buffer) external onlyAdmin {
require(_buffer <= MAX_BUFFER, "Timelock: invalid _buffer");
require(_buffer > buffer, "Timelock: buffer cannot be decreased");
buffer = _buffer;
}
function setIsSecondaryPriceEnabled(address _priceFeed, bool _isEnabled) external onlyAdmin {
IVaultPriceFeed(_priceFeed).setIsSecondaryPriceEnabled(_isEnabled);
}
function setMaxStrictPriceDeviation(address _priceFeed, uint256 _maxStrictPriceDeviation) external onlyAdmin {
IVaultPriceFeed(_priceFeed).setMaxStrictPriceDeviation(_maxStrictPriceDeviation);
}
function setAdjustment(address _priceFeed, address _token, bool _isAdditive, uint256 _adjustmentBps) external onlyKeeperAndAbove {
IVaultPriceFeed(_priceFeed).setAdjustment(_token, _isAdditive, _adjustmentBps);
}
function setSpreadBasisPoints(address _priceFeed, address _token, uint256 _spreadBasisPoints) external onlyKeeperAndAbove {
IVaultPriceFeed(_priceFeed).setSpreadBasisPoints(_token, _spreadBasisPoints);
}
function setPriceSampleSpace(address _priceFeed,uint256 _priceSampleSpace) external onlyHandlerAndAbove {
require(_priceSampleSpace <= 5, "Invalid _priceSampleSpace");
IVaultPriceFeed(_priceFeed).setPriceSampleSpace(_priceSampleSpace);
}
function setVaultPriceFeed(address _fastPriceFeed, address _vaultPriceFeed) external onlyAdmin {
IFastPriceFeed(_fastPriceFeed).setVaultPriceFeed(_vaultPriceFeed);
}
function setPriceDuration(address _fastPriceFeed, uint256 _priceDuration) external onlyHandlerAndAbove {
IFastPriceFeed(_fastPriceFeed).setPriceDuration(_priceDuration);
}
function setMaxPriceUpdateDelay(address _fastPriceFeed, uint256 _maxPriceUpdateDelay) external onlyHandlerAndAbove {
IFastPriceFeed(_fastPriceFeed).setMaxPriceUpdateDelay(_maxPriceUpdateDelay);
}
function setSpreadBasisPointsIfInactive(address _fastPriceFeed, uint256 _spreadBasisPointsIfInactive) external onlyAdmin {
IFastPriceFeed(_fastPriceFeed).setSpreadBasisPointsIfInactive(_spreadBasisPointsIfInactive);
}
function setSpreadBasisPointsIfChainError(address _fastPriceFeed, uint256 _spreadBasisPointsIfChainError) external onlyAdmin {
IFastPriceFeed(_fastPriceFeed).setSpreadBasisPointsIfChainError(_spreadBasisPointsIfChainError);
}
function setMinBlockInterval(address _fastPriceFeed, uint256 _minBlockInterval) external onlyAdmin {
IFastPriceFeed(_fastPriceFeed).setMinBlockInterval(_minBlockInterval);
}
function setIsSpreadEnabled(address _fastPriceFeed, bool _isSpreadEnabled) external onlyAdmin {
IFastPriceFeed(_fastPriceFeed).setIsSpreadEnabled(_isSpreadEnabled);
}
function transferIn(address _sender, address _token, uint256 _amount) external onlyAdmin {
IERC20(_token).transferFrom(_sender, address(this), _amount);
}
function signalApprove(address _token, address _spender, uint256 _amount) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("approve", _token, _spender, _amount));
_setPendingAction(action);
emit SignalApprove(_token, _spender, _amount, action);
}
function approve(address _token, address _spender, uint256 _amount) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("approve", _token, _spender, _amount));
_validateAction(action);
_clearAction(action);
IERC20(_token).approve(_spender, _amount);
}
function signalWithdrawToken(address _target, address _token, address _receiver, uint256 _amount) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("withdrawToken", _target, _token, _receiver, _amount));
_setPendingAction(action);
emit SignalWithdrawToken(_target, _token, _receiver, _amount, action);
}
function withdrawToken(address _target, address _token, address _receiver, uint256 _amount) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("withdrawToken", _target, _token, _receiver, _amount));
_validateAction(action);
_clearAction(action);
IBaseToken(_target).withdrawToken(_token, _receiver, _amount);
}
function signalSetGov(address _target, address _gov) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setGov", _target, _gov));
_setPendingAction(action);
emit SignalSetGov(_target, _gov, action);
}
function setGov(address _target, address _gov) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setGov", _target, _gov));
_validateAction(action);
_clearAction(action);
ITimelockTarget(_target).setGov(_gov);
}
function signalSetPriceFeedWatcher(address _fastPriceFeed, address _account, bool _isActive) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setPriceFeedWatcher", _fastPriceFeed, _account, _isActive));
_setPendingAction(action);
emit SignalSetPriceFeedWatcher(_fastPriceFeed, _account, _isActive);
}
function setPriceFeedWatcher(address _fastPriceFeed, address _account, bool _isActive) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setPriceFeedWatcher", _fastPriceFeed, _account, _isActive));
_validateAction(action);
_clearAction(action);
IFastPriceFeed(_fastPriceFeed).setSigner(_account, _isActive);
}
function signalSetPriceFeedUpdater(address _fastPriceFeed, address _account, bool _isActive) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setPriceFeedUpdater", _fastPriceFeed, _account, _isActive));
_setPendingAction(action);
emit SignalSetPriceFeedWatcher(_fastPriceFeed, _account, _isActive);
}
function setPriceFeedUpdater(address _fastPriceFeed, address _account, bool _isActive) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked("setPriceFeedUpdater", _fastPriceFeed, _account, _isActive));
_validateAction(action);
_clearAction(action);
IFastPriceFeed(_fastPriceFeed).setUpdater(_account, _isActive);
}
function signalPriceFeedSetTokenConfig(
address _vaultPriceFeed,
address _token,
address _priceFeed,
uint256 _priceDecimals,
bool _isStrictStable
) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked(
"priceFeedSetTokenConfig",
_vaultPriceFeed,
_token,
_priceFeed,
_priceDecimals,
_isStrictStable
));
_setPendingAction(action);
emit SignalPriceFeedSetTokenConfig(
_vaultPriceFeed,
_token,
_priceFeed,
_priceDecimals,
_isStrictStable
);
}
function priceFeedSetTokenConfig(
address _vaultPriceFeed,
address _token,
address _priceFeed,
uint256 _priceDecimals,
bool _isStrictStable
) external onlyAdmin {
bytes32 action = keccak256(abi.encodePacked(
"priceFeedSetTokenConfig",
_vaultPriceFeed,
_token,
_priceFeed,
_priceDecimals,
_isStrictStable
));
_validateAction(action);
_clearAction(action);
IVaultPriceFeed(_vaultPriceFeed).setTokenConfig(
_token,
_priceFeed,
_priceDecimals,
_isStrictStable
);
}
function cancelAction(bytes32 _action) external onlyAdmin {
_clearAction(_action);
}
function _setPendingAction(bytes32 _action) private {
pendingActions[_action] = block.timestamp.add(buffer);
emit SignalPendingAction(_action);
}
function _validateAction(bytes32 _action) private view {
require(pendingActions[_action] != 0, "Timelock: action not signalled");
require(pendingActions[_action] < block.timestamp, "Timelock: action time not yet passed");
}
function _clearAction(bytes32 _action) private {
require(pendingActions[_action] != 0, "Timelock: invalid _action");
delete pendingActions[_action];
emit ClearAction(_action);
}
}//SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IAdmin {
function setAdmin(address _admin) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IVaultPriceFeed {
function adjustmentBasisPoints(address _token)
external
view
returns (uint256);
function isAdjustmentAdditive(address _token) external view returns (bool);
function setAdjustment(
address _token,
bool _isAdditive,
uint256 _adjustmentBps
) external;
function setIsSecondaryPriceEnabled(bool _isEnabled) external;
function setSpreadBasisPoints(address _token, uint256 _spreadBasisPoints)
external;
function setSpreadThresholdBasisPoints(uint256 _spreadThresholdBasisPoints)
external;
function setFavorPrimaryPrice(bool _favorPrimaryPrice) external;
function setPriceSampleSpace(uint256 _priceSampleSpace) external;
function setMaxStrictPriceDeviation(uint256 _maxStrictPriceDeviation)
external;
function getPrice(
address _token,
bool _maximise,
bool _includeAmmPrice,
bool _useSwapPricing
) external view returns (uint256);
function getPrimaryPrice(address _token, bool _maximise)
external
view
returns (uint256);
function setTokenConfig(
address _token,
address _priceFeed,
uint256 _priceDecimals,
bool _isStrictStable
) external;
function getLatestPrimaryPrice(address _token) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IFastPriceFeed {
function lastUpdatedAt() external view returns (uint256);
function lastUpdatedBlock() external view returns (uint256);
function setSigner(address _account, bool _isActive) external;
function setUpdater(address _account, bool _isActive) external;
function setPriceDuration(uint256 _priceDuration) external;
function setMaxPriceUpdateDelay(uint256 _maxPriceUpdateDelay) external;
function setSpreadBasisPointsIfInactive(uint256 _spreadBasisPointsIfInactive) external;
function setSpreadBasisPointsIfChainError(uint256 _spreadBasisPointsIfChainError) external;
function setMinBlockInterval(uint256 _minBlockInterval) external;
function setIsSpreadEnabled(bool _isSpreadEnabled) external;
function setMaxDeviationBasisPoints(uint256 _maxDeviationBasisPoints) external;
function setMaxCumulativeDeltaDiffs(address[] memory _tokens, uint256[] memory _maxCumulativeDeltaDiffs) external;
function setPriceDataInterval(uint256 _priceDataInterval) external;
function setVaultPriceFeed(address _vaultPriceFeed) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface ITimelockTarget {
function setGov(address _gov) external;
function withdrawToken(address _token, address _account, uint256 _amount) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IBaseToken {
function totalStaked() external view returns (uint256);
function stakedBalance(address _account) external view returns (uint256);
function removeAdmin(address _account) external;
function setInPrivateTransferMode(bool _inPrivateTransferMode) external;
function withdrawToken(
address _token,
address _account,
uint256 _amount
) external;
}{
"optimizer": {
"enabled": true,
"runs": 50
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_admin","type":"address"},{"internalType":"uint256","name":"_buffer","type":"uint256"},{"internalType":"address","name":"_tokenManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"ClearAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalApprove","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalPendingAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"vaultPriceFeed","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"priceDecimals","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isStrictStable","type":"bool"}],"name":"SignalPriceFeedSetTokenConfig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"gov","type":"address"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalSetGov","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"fastPriceFeed","type":"address"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isActive","type":"bool"}],"name":"SignalSetPriceFeedWatcher","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"action","type":"bytes32"}],"name":"SignalWithdrawToken","type":"event"},{"inputs":[],"name":"MAX_BUFFER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_action","type":"bytes32"}],"name":"cancelAction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isKeeper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"pendingActions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vaultPriceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"priceFeedSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_isAdditive","type":"bool"},{"internalType":"uint256","name":"_adjustmentBps","type":"uint256"}],"name":"setAdjustment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buffer","type":"uint256"}],"name":"setBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setContractHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"name":"setExternalAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"setIsSecondaryPriceEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"bool","name":"_isSpreadEnabled","type":"bool"}],"name":"setIsSpreadEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"uint256","name":"_maxPriceUpdateDelay","type":"uint256"}],"name":"setMaxPriceUpdateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_maxStrictPriceDeviation","type":"uint256"}],"name":"setMaxStrictPriceDeviation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"uint256","name":"_minBlockInterval","type":"uint256"}],"name":"setMinBlockInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"uint256","name":"_priceDuration","type":"uint256"}],"name":"setPriceDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setPriceFeedUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setPriceFeedWatcher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceSampleSpace","type":"uint256"}],"name":"setPriceSampleSpace","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_spreadBasisPoints","type":"uint256"}],"name":"setSpreadBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"uint256","name":"_spreadBasisPointsIfChainError","type":"uint256"}],"name":"setSpreadBasisPointsIfChainError","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"uint256","name":"_spreadBasisPointsIfInactive","type":"uint256"}],"name":"setSpreadBasisPointsIfInactive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"address","name":"_vaultPriceFeed","type":"address"}],"name":"setVaultPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vaultPriceFeed","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"},{"internalType":"uint256","name":"_priceDecimals","type":"uint256"},{"internalType":"bool","name":"_isStrictStable","type":"bool"}],"name":"signalPriceFeedSetTokenConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_gov","type":"address"}],"name":"signalSetGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"signalSetPriceFeedUpdater","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_fastPriceFeed","type":"address"},{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"signalSetPriceFeedWatcher","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"signalWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516126a03803806126a08339818101604052606081101561003357600080fd5b50805160208201516040909201519091906206978082111561009c576040805162461bcd60e51b815260206004820152601960248201527f54696d656c6f636b3a20696e76616c6964205f62756666657200000000000000604482015290519081900360640190fd5b600180546001600160a01b039485166001600160a01b031991821617909155600092909255600280549190931691161790556125c3806100dd6000396000f3fe608060405234801561001057600080fd5b50600436106101f25760003560e01c806361d0756911610110578063be03af58116100a8578063be03af5814610727578063d1b9e85314610753578063db5c875f14610781578063dce6e18d146107b9578063e1f21c67146107ef578063e30569e514610825578063e4652f4914610842578063e7b0a3a114610878578063edaafe20146108ae578063f851a440146108b6576101f2565b806361d07569146105d55780636ba42aaa146105ef578063704b6c0214610615578063781cc3d31461063b578063996a7a1e14610658578063a0a316a214610686578063adc7ea37146106b2578063b74517ba146106cf578063bd0f1c45146106fb576101f2565b80633799c6181161018e5780633799c618146103c9578063384cae7314610401578063395bc7941461044557806343ec66191461047157806346ea87af1461049f5780634cd23f3b146104d957806350e32d1d1461051557806351a6de0d1461054d57806355ef13951461057b5780635b6348ac146105a9576101f2565b8063185051c1146101f757806321754d9e146102275780632877f4c3146102635780632965c8c71461028f578063296b07e5146102bd5780632a709b14146102fb5780632a72e8ba1461031f5780632cfe82e8146103575780633335e38a14610385575b600080fd5b6102256004803603604081101561020d57600080fd5b506001600160a01b03813516906020013515156108be565b005b6102256004803603608081101561023d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610936565b6102256004803603604081101561027957600080fd5b506001600160a01b038135169060200135610a81565b610225600480360360408110156102a557600080fd5b506001600160a01b0381351690602001351515610b9c565b610225600480360360808110156102d357600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135610c31565b610303610d31565b604080516001600160a01b039092168252519081900360200190f35b6102256004803603606081101561033557600080fd5b506001600160a01b038135811691602081013590911690604001351515610d40565b6102256004803603604081101561036d57600080fd5b506001600160a01b0381358116916020013516610e5c565b610225600480360360a081101561039b57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610ef8565b610225600480360360608110156103df57600080fd5b506001600160a01b038135811691602081013590911690604001351515611052565b610225600480360360a081101561041757600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135151561115d565b6102256004803603604081101561045b57600080fd5b506001600160a01b03813516906020013561128e565b6102256004803603604081101561048757600080fd5b506001600160a01b0381351690602001351515611321565b6104c5600480360360208110156104b557600080fd5b50356001600160a01b03166113b6565b604080519115158252519081900360200190f35b610225600480360360808110156104ef57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356113cb565b6102256004803603606081101561052b57600080fd5b506001600160a01b0381358116916020810135909116906040013515156114e6565b6102256004803603604081101561056357600080fd5b506001600160a01b0381358116916020013516611602565b6102256004803603604081101561059157600080fd5b506001600160a01b0381358116916020013516611719565b610225600480360360408110156105bf57600080fd5b506001600160a01b03813516906020013561180f565b6105dd6118bc565b60408051918252519081900360200190f35b6104c56004803603602081101561060557600080fd5b50356001600160a01b03166118c3565b6102256004803603602081101561062b57600080fd5b50356001600160a01b03166118d8565b6102256004803603602081101561065157600080fd5b5035611947565b6102256004803603604081101561066e57600080fd5b506001600160a01b03813581169160200135166119a0565b6102256004803603604081101561069c57600080fd5b506001600160a01b038135169060200135611a91565b610225600480360360208110156106c857600080fd5b5035611b24565b610225600480360360408110156106e557600080fd5b506001600160a01b038135169060200135611c0a565b6102256004803603604081101561071157600080fd5b506001600160a01b038135169060200135611cb7565b6102256004803603604081101561073d57600080fd5b506001600160a01b038135169060200135611d4a565b6102256004803603604081101561076957600080fd5b506001600160a01b0381351690602001351515611ddd565b6102256004803603606081101561079757600080fd5b506001600160a01b038135811691602081013590911690604001351515611e55565b610225600480360360608110156107cf57600080fd5b506001600160a01b03813581169160208101359091169060400135611f0f565b6102256004803603606081101561080557600080fd5b506001600160a01b03813581169160208101359091169060400135612011565b6105dd6004803603602081101561083b57600080fd5b5035612146565b6102256004803603606081101561085857600080fd5b506001600160a01b03813581169160208101359091169060400135612158565b6102256004803603606081101561088e57600080fd5b506001600160a01b0381358116916020810135909116906040013561222f565b6105dd612307565b61030361230d565b6001546001600160a01b0316331461090b576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610983576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206109f18161231c565b6109fa816123c8565b846001600160a01b03166301e336678585856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b0316331480610aa957503360009081526004602052604090205460ff165b610ae8576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6005811115610b3a576040805162461bcd60e51b8152602060048201526019602482015278496e76616c6964205f707269636553616d706c65537061636560381b604482015290519081900360640190fd5b816001600160a01b0316632fa03b8f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b505af1158015610b94573d6000803e3d6000fd5b505050505050565b6001546001600160a01b03163314610be9576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663eb1c92a9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b0316331480610c5957503360009081526004602052604090205460ff165b80610c7357503360009081526005602052604090205460ff165b610cb2576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b836001600160a01b031663d694376c8484846040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183151581526020018281526020019350505050600060405180830381600087803b158015610d1357600080fd5b505af1158015610d27573d6000803e3d6000fd5b5050505050505050565b6002546001600160a01b031681565b6001546001600160a01b03163314610d8d576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22bb0ba31b432b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c9092019092528051910120610dfa8161231c565b610e03816123c8565b836001600160a01b03166331cb610584846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015610d1357600080fd5b6001546001600160a01b03163314610ea9576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663238aafb7826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314610f45576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120610fc78161231c565b610fd0816123c8565b60408051634b9ade4760e01b81526001600160a01b0387811660048301528681166024830152604482018690528415156064830152915191881691634b9ade479160848082019260009290919082900301818387803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050505050505050565b6001546001600160a01b0316331461109f576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22bb0ba31b432b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c909201909252805191012061110c8161246d565b604080516001600160a01b038087168252851660208201528315158183015290517f6ab3018654d3055eae2cb61d3dffe4cbb30f257d54ec966059b4d00b325a36699181900360600190a150505050565b6001546001600160a01b031633146111aa576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b6093830152825160748184030181526094909201909252805191012061122c8161246d565b604080516001600160a01b038089168252808816602083015286168183015260608101859052831515608082015290517f1b2ddf357ae016d8c127dcd3a73c34744fdeaeeb4b7ef1e04490cebf7f4816fe9181900360a00190a1505050505050565b6001546001600160a01b031633146112db576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663b70c7b70826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b0316331461136e576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663ce98dfa8826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b158015610b8057600080fd5b60046020526000908152604090205460ff1681565b6001546001600160a01b03163314611418576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206114868161246d565b604080516001600160a01b0380881682528087166020830152851681830152606081018490526080810183905290517f9ed7b0f07a9eed51079fab67f6d0f141f167f5b17fdb5a23282280e15fcafed39181900360a00190a15050505050565b6001546001600160a01b03163314611533576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22ab83230ba32b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c90920190925280519101206115a08161231c565b6115a9816123c8565b836001600160a01b0316631a15339184846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015610d1357600080fd5b6001546001600160a01b0316331461164f576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206116a48161231c565b6116ad816123c8565b826001600160a01b031663cfad57a2836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b03163314611766576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b0382163014156117c0576040805162461bcd60e51b8152602060048201526019602482015278151a5b595b1bd8dace881a5b9d985b1a590817dd185c99d95d603a1b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b031633148061183757503360009081526004602052604090205460ff165b611876576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b0316638b7677f4826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6206978081565b60056020526000908152604090205460ff1681565b6002546001600160a01b03163314611925576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611994576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b61199d816123c8565b50565b6001546001600160a01b031633146119ed576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e9092019092528051910120611a428161246d565b604080516001600160a01b0380861682528416602082015280820183905290517f2701a94fd55a560e291f3c54d36580040670d6fde558a77a75d619e38139f7139181900360600190a1505050565b6001546001600160a01b03163314611ade576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b0316632fbfe3d3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611b71576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b62069780811115611bc5576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb13ab33332b960391b604482015290519081900360640190fd5b6000548111611c055760405162461bcd60e51b815260040180806020018281038252602481526020018061254a6024913960400191505060405180910390fd5b600055565b6001546001600160a01b0316331480611c3257503360009081526004602052604090205460ff165b611c71576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b03166344c23193826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611d04576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663de0d1b94826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611d97576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663d6a153f1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611e2a576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314611ea2576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22ab83230ba32b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c909201909252805191012061110c8161246d565b6001546001600160a01b03163314611f5c576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120611fba8161246d565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f6af9d86ba7407a934e941ed8ae5f779369a88fe8ba2cd1c204185d6f8a8287fd9181900360800190a150505050565b6001546001600160a01b0316331461205e576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f90920190925280519101206120bc8161231c565b6120c5816123c8565b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561211c57600080fd5b505af1158015612130573d6000803e3d6000fd5b505050506040513d6020811015610b9457600080fd5b60036020526000908152604090205481565b6001546001600160a01b031633146121a5576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490529151918416916323b872dd916064808201926020929091908290030181600087803b1580156121fe57600080fd5b505af1158015612212573d6000803e3d6000fd5b505050506040513d602081101561222857600080fd5b5050505050565b6001546001600160a01b031633148061225757503360009081526004602052604090205460ff165b8061227157503360009081526005602052604090205460ff165b6122b0576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b826001600160a01b0316639b88938083836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156116fc57600080fd5b60005481565b6001546001600160a01b031681565b60008181526003602052604090205461237c576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20616374696f6e206e6f74207369676e616c6c65640000604482015290519081900360640190fd5b600081815260036020526040902054421161199d5760405162461bcd60e51b81526004018080602001828103825260248152602001806125266024913960400191505060405180910390fd5b600081815260036020526040902054612424576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb0b1ba34b7b760391b604482015290519081900360640190fd5b600081815260036020908152604080832092909255815183815291517f194ed6dd5e37e2acc44a19455c3f208c4831ee695fe362d9c4ef2d316bc53aec9281900390910190a150565b60005461247b9042906124c6565b60008281526003602090815260409182902092909255805183815290517f5fb9c0ecf7b4a28c4c480212e868f9da7f373a2ed4d23498b0be6aadf35242fb929181900390910190a150565b60008282018381101561251e576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a20616374696f6e2074696d65206e6f74207965742070617373656454696d656c6f636b3a206275666665722063616e6e6f742062652064656372656173656454696d656c6f636b3a20666f7262696464656e00000000000000000000000000a26469706673582212201ff9fd494a44aeca9400259e3da5cd184515ddb79017cbed9f386c2305156eb764736f6c634300060c0033000000000000000000000000156d8fac8cd3deb51ab194d906abfc81cf323c1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1107aa43eba7869f0bb94bf2b8e1efa37bcba3
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101f25760003560e01c806361d0756911610110578063be03af58116100a8578063be03af5814610727578063d1b9e85314610753578063db5c875f14610781578063dce6e18d146107b9578063e1f21c67146107ef578063e30569e514610825578063e4652f4914610842578063e7b0a3a114610878578063edaafe20146108ae578063f851a440146108b6576101f2565b806361d07569146105d55780636ba42aaa146105ef578063704b6c0214610615578063781cc3d31461063b578063996a7a1e14610658578063a0a316a214610686578063adc7ea37146106b2578063b74517ba146106cf578063bd0f1c45146106fb576101f2565b80633799c6181161018e5780633799c618146103c9578063384cae7314610401578063395bc7941461044557806343ec66191461047157806346ea87af1461049f5780634cd23f3b146104d957806350e32d1d1461051557806351a6de0d1461054d57806355ef13951461057b5780635b6348ac146105a9576101f2565b8063185051c1146101f757806321754d9e146102275780632877f4c3146102635780632965c8c71461028f578063296b07e5146102bd5780632a709b14146102fb5780632a72e8ba1461031f5780632cfe82e8146103575780633335e38a14610385575b600080fd5b6102256004803603604081101561020d57600080fd5b506001600160a01b03813516906020013515156108be565b005b6102256004803603608081101561023d57600080fd5b506001600160a01b03813581169160208101358216916040820135169060600135610936565b6102256004803603604081101561027957600080fd5b506001600160a01b038135169060200135610a81565b610225600480360360408110156102a557600080fd5b506001600160a01b0381351690602001351515610b9c565b610225600480360360808110156102d357600080fd5b506001600160a01b038135811691602081013590911690604081013515159060600135610c31565b610303610d31565b604080516001600160a01b039092168252519081900360200190f35b6102256004803603606081101561033557600080fd5b506001600160a01b038135811691602081013590911690604001351515610d40565b6102256004803603604081101561036d57600080fd5b506001600160a01b0381358116916020013516610e5c565b610225600480360360a081101561039b57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610ef8565b610225600480360360608110156103df57600080fd5b506001600160a01b038135811691602081013590911690604001351515611052565b610225600480360360a081101561041757600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060800135151561115d565b6102256004803603604081101561045b57600080fd5b506001600160a01b03813516906020013561128e565b6102256004803603604081101561048757600080fd5b506001600160a01b0381351690602001351515611321565b6104c5600480360360208110156104b557600080fd5b50356001600160a01b03166113b6565b604080519115158252519081900360200190f35b610225600480360360808110156104ef57600080fd5b506001600160a01b038135811691602081013582169160408201351690606001356113cb565b6102256004803603606081101561052b57600080fd5b506001600160a01b0381358116916020810135909116906040013515156114e6565b6102256004803603604081101561056357600080fd5b506001600160a01b0381358116916020013516611602565b6102256004803603604081101561059157600080fd5b506001600160a01b0381358116916020013516611719565b610225600480360360408110156105bf57600080fd5b506001600160a01b03813516906020013561180f565b6105dd6118bc565b60408051918252519081900360200190f35b6104c56004803603602081101561060557600080fd5b50356001600160a01b03166118c3565b6102256004803603602081101561062b57600080fd5b50356001600160a01b03166118d8565b6102256004803603602081101561065157600080fd5b5035611947565b6102256004803603604081101561066e57600080fd5b506001600160a01b03813581169160200135166119a0565b6102256004803603604081101561069c57600080fd5b506001600160a01b038135169060200135611a91565b610225600480360360208110156106c857600080fd5b5035611b24565b610225600480360360408110156106e557600080fd5b506001600160a01b038135169060200135611c0a565b6102256004803603604081101561071157600080fd5b506001600160a01b038135169060200135611cb7565b6102256004803603604081101561073d57600080fd5b506001600160a01b038135169060200135611d4a565b6102256004803603604081101561076957600080fd5b506001600160a01b0381351690602001351515611ddd565b6102256004803603606081101561079757600080fd5b506001600160a01b038135811691602081013590911690604001351515611e55565b610225600480360360608110156107cf57600080fd5b506001600160a01b03813581169160208101359091169060400135611f0f565b6102256004803603606081101561080557600080fd5b506001600160a01b03813581169160208101359091169060400135612011565b6105dd6004803603602081101561083b57600080fd5b5035612146565b6102256004803603606081101561085857600080fd5b506001600160a01b03813581169160208101359091169060400135612158565b6102256004803603606081101561088e57600080fd5b506001600160a01b0381358116916020810135909116906040013561222f565b6105dd612307565b61030361230d565b6001546001600160a01b0316331461090b576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610983576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206109f18161231c565b6109fa816123c8565b846001600160a01b03166301e336678585856040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b158015610a6257600080fd5b505af1158015610a76573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b0316331480610aa957503360009081526004602052604090205460ff165b610ae8576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6005811115610b3a576040805162461bcd60e51b8152602060048201526019602482015278496e76616c6964205f707269636553616d706c65537061636560381b604482015290519081900360640190fd5b816001600160a01b0316632fa03b8f826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b505af1158015610b94573d6000803e3d6000fd5b505050505050565b6001546001600160a01b03163314610be9576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663eb1c92a9826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b0316331480610c5957503360009081526004602052604090205460ff165b80610c7357503360009081526005602052604090205460ff165b610cb2576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b836001600160a01b031663d694376c8484846040518463ffffffff1660e01b815260040180846001600160a01b0316815260200183151581526020018281526020019350505050600060405180830381600087803b158015610d1357600080fd5b505af1158015610d27573d6000803e3d6000fd5b5050505050505050565b6002546001600160a01b031681565b6001546001600160a01b03163314610d8d576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22bb0ba31b432b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c9092019092528051910120610dfa8161231c565b610e03816123c8565b836001600160a01b03166331cb610584846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015610d1357600080fd5b6001546001600160a01b03163314610ea9576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663238aafb7826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314610f45576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b60938301528251607481840301815260949092019092528051910120610fc78161231c565b610fd0816123c8565b60408051634b9ade4760e01b81526001600160a01b0387811660048301528681166024830152604482018690528415156064830152915191881691634b9ade479160848082019260009290919082900301818387803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050505050505050565b6001546001600160a01b0316331461109f576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22bb0ba31b432b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c909201909252805191012061110c8161246d565b604080516001600160a01b038087168252851660208201528315158183015290517f6ab3018654d3055eae2cb61d3dffe4cbb30f257d54ec966059b4d00b325a36699181900360600190a150505050565b6001546001600160a01b031633146111aa576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805176707269636546656564536574546f6b656e436f6e66696760481b6020808301919091526001600160601b0319606089811b8216603785015288811b8216604b85015287901b16605f8301526073820185905283151560f81b6093830152825160748184030181526094909201909252805191012061122c8161246d565b604080516001600160a01b038089168252808816602083015286168183015260608101859052831515608082015290517f1b2ddf357ae016d8c127dcd3a73c34744fdeaeeb4b7ef1e04490cebf7f4816fe9181900360a00190a1505050505050565b6001546001600160a01b031633146112db576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663b70c7b70826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b0316331461136e576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663ce98dfa8826040518263ffffffff1660e01b8152600401808215158152602001915050600060405180830381600087803b158015610b8057600080fd5b60046020526000908152604090205460ff1681565b6001546001600160a01b03163314611418576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516c3bb4ba34323930bbaa37b5b2b760991b6020808301919091526001600160601b0319606088811b8216602d85015287811b8216604185015286901b166055830152606980830185905283518084039091018152608990920190925280519101206114868161246d565b604080516001600160a01b0380881682528087166020830152851681830152606081018490526080810183905290517f9ed7b0f07a9eed51079fab67f6d0f141f167f5b17fdb5a23282280e15fcafed39181900360a00190a15050505050565b6001546001600160a01b03163314611533576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22ab83230ba32b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c90920190925280519101206115a08161231c565b6115a9816123c8565b836001600160a01b0316631a15339184846040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015610d1357600080fd5b6001546001600160a01b0316331461164f576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e90920190925280519101206116a48161231c565b6116ad816123c8565b826001600160a01b031663cfad57a2836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156116fc57600080fd5b505af1158015611710573d6000803e3d6000fd5b50505050505050565b6001546001600160a01b03163314611766576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b0382163014156117c0576040805162461bcd60e51b8152602060048201526019602482015278151a5b595b1bd8dace881a5b9d985b1a590817dd185c99d95d603a1b604482015290519081900360640190fd5b816001600160a01b031663704b6c02826040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b031633148061183757503360009081526004602052604090205460ff165b611876576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b0316638b7677f4826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6206978081565b60056020526000908152604090205460ff1681565b6002546001600160a01b03163314611925576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611994576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b61199d816123c8565b50565b6001546001600160a01b031633146119ed576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516539b2ba23b7bb60d11b6020808301919091526001600160601b0319606086811b8216602685015285901b16603a8301528251602e818403018152604e9092019092528051910120611a428161246d565b604080516001600160a01b0380861682528416602082015280820183905290517f2701a94fd55a560e291f3c54d36580040670d6fde558a77a75d619e38139f7139181900360600190a1505050565b6001546001600160a01b03163314611ade576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b0316632fbfe3d3826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611b71576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b62069780811115611bc5576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb13ab33332b960391b604482015290519081900360640190fd5b6000548111611c055760405162461bcd60e51b815260040180806020018281038252602481526020018061254a6024913960400191505060405180910390fd5b600055565b6001546001600160a01b0316331480611c3257503360009081526004602052604090205460ff165b611c71576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b03166344c23193826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611d04576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663de0d1b94826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611d97576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b816001600160a01b031663d6a153f1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610b8057600080fd5b6001546001600160a01b03163314611e2a576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314611ea2576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080517239b2ba283934b1b2a332b2b22ab83230ba32b960691b6020808301919091526001600160601b0319606087811b8216603385015286901b16604783015283151560f81b605b8301528251603c818403018152605c909201909252805191012061110c8161246d565b6001546001600160a01b03163314611f5c576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f9092019092528051910120611fba8161246d565b604080516001600160a01b038087168252851660208201528082018490526060810183905290517f6af9d86ba7407a934e941ed8ae5f779369a88fe8ba2cd1c204185d6f8a8287fd9181900360800190a150505050565b6001546001600160a01b0316331461205e576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b6040805166617070726f766560c81b6020808301919091526001600160601b0319606087811b8216602785015286901b16603b830152604f80830185905283518084039091018152606f90920190925280519101206120bc8161231c565b6120c5816123c8565b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561211c57600080fd5b505af1158015612130573d6000803e3d6000fd5b505050506040513d6020811015610b9457600080fd5b60036020526000908152604090205481565b6001546001600160a01b031633146121a5576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b604080516323b872dd60e01b81526001600160a01b038581166004830152306024830152604482018490529151918416916323b872dd916064808201926020929091908290030181600087803b1580156121fe57600080fd5b505af1158015612212573d6000803e3d6000fd5b505050506040513d602081101561222857600080fd5b5050505050565b6001546001600160a01b031633148061225757503360009081526004602052604090205460ff165b8061227157503360009081526005602052604090205460ff165b6122b0576040805162461bcd60e51b8152602060048201526013602482015260008051602061256e833981519152604482015290519081900360640190fd5b826001600160a01b0316639b88938083836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156116fc57600080fd5b60005481565b6001546001600160a01b031681565b60008181526003602052604090205461237c576040805162461bcd60e51b815260206004820152601e60248201527f54696d656c6f636b3a20616374696f6e206e6f74207369676e616c6c65640000604482015290519081900360640190fd5b600081815260036020526040902054421161199d5760405162461bcd60e51b81526004018080602001828103825260248152602001806125266024913960400191505060405180910390fd5b600081815260036020526040902054612424576040805162461bcd60e51b81526020600482015260196024820152782a34b6b2b637b1b59d1034b73b30b634b2102fb0b1ba34b7b760391b604482015290519081900360640190fd5b600081815260036020908152604080832092909255815183815291517f194ed6dd5e37e2acc44a19455c3f208c4831ee695fe362d9c4ef2d316bc53aec9281900390910190a150565b60005461247b9042906124c6565b60008281526003602090815260409182902092909255805183815290517f5fb9c0ecf7b4a28c4c480212e868f9da7f373a2ed4d23498b0be6aadf35242fb929181900390910190a150565b60008282018381101561251e576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b939250505056fe54696d656c6f636b3a20616374696f6e2074696d65206e6f74207965742070617373656454696d656c6f636b3a206275666665722063616e6e6f742062652064656372656173656454696d656c6f636b3a20666f7262696464656e00000000000000000000000000a26469706673582212201ff9fd494a44aeca9400259e3da5cd184515ddb79017cbed9f386c2305156eb764736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000156d8fac8cd3deb51ab194d906abfc81cf323c1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f1107aa43eba7869f0bb94bf2b8e1efa37bcba3
-----Decoded View---------------
Arg [0] : _admin (address): 0x156D8FaC8cd3deB51AB194D906abfc81CF323c11
Arg [1] : _buffer (uint256): 0
Arg [2] : _tokenManager (address): 0x2F1107Aa43eBa7869F0BB94bF2B8e1efa37bCbA3
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000156d8fac8cd3deb51ab194d906abfc81cf323c11
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000002f1107aa43eba7869f0bb94bf2b8e1efa37bcba3
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.