Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 100 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Un Stake Tokens | 13846273 | 1536 days ago | IN | 0 ETH | 0.00585459 | ||||
| Un Stake Tokens | 13037872 | 1662 days ago | IN | 0 ETH | 0.00460357 | ||||
| Un Stake Tokens | 13035331 | 1663 days ago | IN | 0 ETH | 0.00374315 | ||||
| Un Stake Tokens | 13023253 | 1665 days ago | IN | 0 ETH | 0.00343055 | ||||
| Un Stake Tokens | 13007418 | 1667 days ago | IN | 0 ETH | 0.00479872 | ||||
| Un Stake Tokens | 12941549 | 1677 days ago | IN | 0 ETH | 0.00550238 | ||||
| Un Stake Tokens | 12902029 | 1684 days ago | IN | 0 ETH | 0.00378953 | ||||
| Un Stake Tokens | 12883838 | 1686 days ago | IN | 0 ETH | 0.00243515 | ||||
| Un Stake Tokens | 12813518 | 1697 days ago | IN | 0 ETH | 0.00559184 | ||||
| Un Stake Tokens | 12807271 | 1698 days ago | IN | 0 ETH | 0.00108272 | ||||
| Un Stake Tokens | 12781335 | 1702 days ago | IN | 0 ETH | 0.00496116 | ||||
| Un Stake Tokens | 12736197 | 1709 days ago | IN | 0 ETH | 0.00207439 | ||||
| Un Stake Tokens | 12726949 | 1711 days ago | IN | 0 ETH | 0.00107303 | ||||
| Un Stake Tokens | 12693223 | 1716 days ago | IN | 0 ETH | 0.00126317 | ||||
| Un Stake Tokens | 12686392 | 1717 days ago | IN | 0 ETH | 0.00180406 | ||||
| Stake Tokens | 12686272 | 1717 days ago | IN | 0 ETH | 0.0037641 | ||||
| Un Stake Tokens | 12686110 | 1717 days ago | IN | 0 ETH | 0.00279703 | ||||
| Un Stake Tokens | 12685842 | 1717 days ago | IN | 0 ETH | 0.00267974 | ||||
| Stake Tokens | 12685569 | 1717 days ago | IN | 0 ETH | 0.00759451 | ||||
| Un Stake Tokens | 12683606 | 1718 days ago | IN | 0 ETH | 0.00297709 | ||||
| Un Stake Tokens | 12672850 | 1719 days ago | IN | 0 ETH | 0.00090227 | ||||
| Stake Tokens | 12669521 | 1720 days ago | IN | 0 ETH | 0.00341343 | ||||
| Un Stake Tokens | 12658499 | 1722 days ago | IN | 0 ETH | 0.00135322 | ||||
| Un Stake Tokens | 12653008 | 1722 days ago | IN | 0 ETH | 0.00423954 | ||||
| Stake Tokens | 12649135 | 1723 days ago | IN | 0 ETH | 0.00267296 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
XIVMain
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
import "./Ownable.sol";
import "./SafeMath.sol";
import "./XIVInterface.sol";
contract XIVMain is Ownable{
using SafeMath for uint256;
address[] tempArray;
address public databaseContractAddress=0x18464e4584759A50CE9FC58eA5997F8B0D1EA1d8;
XIVDatabaseLib.IndexCoin[] tempObjectArray;
function stakeTokens(uint256 amount) external{
DatabaseContract dContract=DatabaseContract(databaseContractAddress);
Token tokenObj = Token(dContract.getXIVTokenContractAddress());
require(amount>=dContract.getMinLPvalue(),"Please enter more amount.");
//check if user has balance
require(tokenObj.balanceOf(msg.sender) >= amount, "You don't have enough XIV balance");
//check if user has provided allowance
require(tokenObj.allowance(msg.sender,databaseContractAddress) >= amount,
"Please allow smart contract to spend on your behalf");
dContract.transferFromTokens(dContract.getXIVTokenContractAddress(),msg.sender,databaseContractAddress,amount);
uint256 currentTimeStamp=block.timestamp;
XIVDatabaseLib.StakingInfo memory sInfo= XIVDatabaseLib.StakingInfo({
investmentId:dContract.getInvestmentId(),
stakeAmount:amount
});
dContract.updateStakingInfoMapping(msg.sender,sInfo);
dContract.updateInvestmentId(dContract.getInvestmentId().add(1));
if(!dContract.getIsStakeMapping(msg.sender)){
dContract.updateUserStakedAddress(msg.sender);
dContract.updateIsStakeMapping(msg.sender,true);
}
dContract.updateTokensStaked(msg.sender,dContract.getTokensStaked(msg.sender).add(amount));
dContract.updateActualAmountStakedByUser(msg.sender,dContract.getActualAmountStakedByUser(msg.sender).add(amount));
dContract.updateTokenStakedAmount(dContract.getTokenStakedAmount().add(amount));
dContract.updateTotalTransactions(dContract.getTotalTransactions().add(amount));
if(dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp>currentTimeStamp){
dContract.updateLockingPeriodForLPMapping(msg.sender,(dContract.getLockingPeriodForLPMapping(msg.sender).amountLocked).add(amount),
dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp);
}else{
dContract.updateLockingPeriodForLPMapping(msg.sender,amount,currentTimeStamp.add(30 days));
}
dContract.emitLPEvent(0,msg.sender,amount,currentTimeStamp);
}
function unStakeTokens(uint256 amount) external{
DatabaseContract dContract=DatabaseContract(databaseContractAddress);
uint256 currentTimeStamp=block.timestamp;
if(dContract.getLockingPeriodForLPMapping(msg.sender).lockedTimeStamp>currentTimeStamp){
require(dContract.getTokensStaked(msg.sender).sub(dContract.getLockingPeriodForLPMapping(msg.sender).amountLocked) >= amount, "You can not retrive LP token with this amount");
}else{
require(dContract.getTokensStaked(msg.sender)>=amount, "You can not retrive LP token with this amount");
}
dContract.transferTokens(dContract.getXIVTokenContractAddress(),msg.sender,amount);
dContract.updateTokensStaked(msg.sender,dContract.getTokensStaked(msg.sender).sub(amount));
if(amount>dContract.getActualAmountStakedByUser(msg.sender)){
dContract.updateActualAmountStakedByUser(msg.sender,0);
}else{
dContract.updateActualAmountStakedByUser(msg.sender,dContract.getActualAmountStakedByUser(msg.sender).sub(amount));
}
dContract.updateTokenStakedAmount(dContract.getTokenStakedAmount().sub(amount));
dContract.emitLPEvent(1,msg.sender,amount,currentTimeStamp);
}
function updateDatabaseAddress(address _databaseContractAddress) external onlyOwner{
databaseContractAddress=_databaseContractAddress;
}
}
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor(){
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @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: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
library XIVDatabaseLib{
// deficoin struct for deficoinmappings..
struct DefiCoin{
uint16 oracleType;
string currencySymbol;
bool status;
}
struct TimePeriod{
uint256 _days;
bool status;
}
struct FlexibleInfo{
uint256 id;
uint16 upDownPercentage; //10**2
uint16 riskFactor; //10**2
uint16 rewardFactor; //10**2
bool status;
}
struct FixedInfo{
uint256 id;
uint256 daysCount;// integer value
uint16 upDownPercentage; //10**2
uint16 riskFactor; //10**2
uint16 rewardFactor; //10**2
bool status;
}
struct IndexCoin{
uint16 oracleType;
string currencySymbol;
address contractAddress;
bool status;
uint256 contributionPercentage; //10**2
}
struct BetPriceHistory{
uint256 baseIndexValue;
uint256 actualIndexValue;
}
struct LPLockedInfo{
uint256 lockedTimeStamp;
uint256 amountLocked;
}
struct StakingInfo{
uint256 investmentId;
uint256 stakeAmount;
}
struct IncentiveInfo{
uint256 tillInvestmentId;
uint256 incentiveAmount;
uint256 totalAmountStakedAtIncentiveTime;
}
struct BetInfo{
uint256 id;
uint256 principalAmount;
uint256 amount;
address userAddress;
address contractAddress;
uint256 betType; //
uint256 currentPrice;
uint256 timestamp;
uint256 betTimePeriod;
uint16 checkpointPercent;
uint16 rewardFactor;
uint16 riskFactor;
uint256 adminCommissionFee;
uint16 status; // 0->bet active, 1->bet won, 2->bet lost, 3-> withdraw before result
}
}
// SPDX-License-Identifier: UNLICENCED
pragma solidity >=0.6.0 <0.8.0;
pragma abicoder v2;
import "./XIVDatabaseLib.sol";
interface Token{
function decimals() external view returns(uint256);
function symbol() external view returns(string memory);
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
}
interface OracleWrapper{
function getPrice(string calldata currencySymbol,uint256 oracleType) external view returns (uint256);
}
interface DatabaseContract{
function transferTokens(address contractAddress,address userAddress,uint256 amount) external;
function transferFromTokens(address contractAddress,address fromAddress, address toAddress,uint256 amount) external;
function getTokensStaked(address userAddress) external view returns(uint256);
function updateTokensStaked(address userAddress, uint256 amount) external;
function getTokenStakedAmount() external view returns(uint256);
function updateTokenStakedAmount(uint256 _tokenStakedAmount) external;
function getBetId() external view returns(uint256);
function updateBetId(uint256 _userBetId) external;
function updateBetArray(XIVDatabaseLib.BetInfo memory bObject) external;
function getBetArray() external view returns(XIVDatabaseLib.BetInfo[] memory);
function getFindBetInArrayUsingBetIdMapping(uint256 _betid) external view returns(uint256);
function updateFindBetInArrayUsingBetIdMapping(uint256 _betid, uint256 value) external;
function updateUserStakedAddress(address _address) external;
function updateUserStakedAddress(address[] memory _userStakedAddress) external;
function getUserStakedAddress() external view returns(address[] memory);
function getDefiCoinsFixedMapping(address _betContractAddress,bool isFlashVault) external view returns(XIVDatabaseLib.DefiCoin memory);
function getDefiCoinsFlexibleMapping(address _betContractAddress) external view returns(XIVDatabaseLib.DefiCoin memory);
function getFlexibleDefiCoinArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory);
function getFlexibleIndexArray() external view returns(XIVDatabaseLib.FlexibleInfo[] memory);
function updateBetArrayIndex(XIVDatabaseLib.BetInfo memory bObject, uint256 index) external;
function updateBetIndexForFixedArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external;
function updateBetBaseIndexValue(uint256 _betBaseIndexValueFixed) external;
function getBetBaseIndexValue() external view returns(uint256);
function updateBetPriceHistoryFixedMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external;
function updateBetActualIndexValue(uint256 _betActualIndexValueFixed) external;
function getBetActualIndexValue() external view returns(uint256);
function getBetIndexForFixedArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory);
function getBetPriceHistoryFixedMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory);
function getXIVTokenContractAddress() external view returns(address);
function getAllIndexContractAddressArray() external view returns(address[] memory);
function getDefiCoinIndexMapping(address _ContractAddress) external view returns(XIVDatabaseLib.IndexCoin memory);
function updateBetIndexForFlexibleArray(uint256 _betId, XIVDatabaseLib.IndexCoin memory iCArray) external;
function getBetIndexForFlexibleArray(uint256 _betId) external view returns(XIVDatabaseLib.IndexCoin[] memory);
function updateBetPriceHistoryFlexibleMapping(uint256 _betId, XIVDatabaseLib.BetPriceHistory memory bPHObj) external;
function getBetPriceHistoryFlexibleMapping(uint256 _betId) external view returns(XIVDatabaseLib.BetPriceHistory memory);
function getOracleWrapperContractAddress() external view returns(address);
function getPlentyOneDayPercentage() external view returns(uint256);
function getPlentyThreeDayPercentage(uint256 _days) external view returns(uint256);
function getPlentySevenDayPercentage(uint256 _days) external view returns(uint256);
function getBetsAccordingToUserAddress(address userAddress) external view returns(uint256[] memory);
function updateBetAddressesArray(address userAddress, uint256 _betId) external;
function getRewardGeneratedAmount() external view returns(uint256);
function updateRewardGeneratedAmount(uint256 _rewardGeneratedAmount) external;
function addUserAddressUsedForBetting(address userAddress) external;
function getUserAddressUsedForBetting() external view returns(address[] memory);
function getFixedDefiCoinArray() external view returns(XIVDatabaseLib.FixedInfo[] memory);
function getFixedDefiIndexArray() external view returns(XIVDatabaseLib.FixedInfo[] memory);
function getMaxStakeXIVAmount() external view returns(uint256);
function getMinStakeXIVAmount() external view returns(uint256);
function getBetFactorLP() external view returns(uint256);
function updateActualAmountStakedByUser(address userAddress, uint256 amount) external;
function getActualAmountStakedByUser(address userAddress) external view returns(uint256);
function isDaysAvailable(uint256 _days) external view returns(bool);
function updateExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress,bool status) external;
function getExistingBetCheckMapping(address _userAddress,uint256 _betType, address _BetContractAddress) external view returns(bool);
function updateTotalTransactions(uint256 _totalTransactions) external;
function getTotalTransactions() external view returns(uint256);
function getFlexibleDefiCoinTimePeriodArray() external view returns(XIVDatabaseLib.TimePeriod[] memory);
function getFlexibleIndexTimePeriodArray() external view returns(XIVDatabaseLib.TimePeriod[] memory);
function getMinLPvalue() external view returns(uint256);
function getLockingPeriodForLPMapping(address userAddress) external view returns(XIVDatabaseLib.LPLockedInfo memory);
function updateLockingPeriodForLPMapping(address userAddress, uint256 _amountLocked, uint256 _lockedTimeStamp) external;
function getStakingInfoMapping(address userAddress) external view returns(XIVDatabaseLib.StakingInfo[] memory);
function updateStakingInfoMapping(address userAddress, XIVDatabaseLib.StakingInfo memory sInfo) external;
function getInvestmentId() external view returns(uint256);
function updateInvestmentId(uint256 _investmentId) external;
function getSlotExecutionId() external view returns(uint256);
function updateSlotExecutionId(uint256 _slotExecutionId) external;
function getSlotId() external view returns(uint256);
function updateSlotId(uint256 _slotId) external;
function updateIncentiveMapping(uint256 _slotId, XIVDatabaseLib.IncentiveInfo memory iInfo) external;
function getIncentiveMapping(uint256 _slotId) external view returns(XIVDatabaseLib.IncentiveInfo[] memory);
function emitBetDetails(uint256 betId, uint256 status, uint256 betEndTime) external;
function emitLPEvent(uint256 typeOfLP, address userAddress, uint256 amount, uint256 timestamp) external ;
function updateIsStakeMapping(address userAddress,bool isStake) external;
function getIsStakeMapping(address userAddress) external view returns(bool);
}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"databaseContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unStakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_databaseContractAddress","type":"address"}],"name":"updateDatabaseAddress","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600280546001600160a01b0319167318464e4584759a50ce9fc58ea5997f8b0d1ea1d817905534801561003657600080fd5b50600080546001600160a01b031916331790556117f3806100586000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80632a7be99a14610067578063742768661461007c5780637547c7a31461008f578063779afa35146100a25780638da5cb5b146100c0578063f2fde38b146100c8575b600080fd5b61007a61007536600461149e565b6100db565b005b61007a61008a36600461153d565b610114565b61007a61009d36600461153d565b61074b565b6100aa6112c3565b6040516100b7919061156d565b60405180910390f35b6100aa6112d2565b61007a6100d636600461149e565b6112e1565b6000546001600160a01b031633146100f257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516326a98ff960e21b81526001600160a01b0390911690429081908390639aa63fe49061014a90339060040161156d565b604080518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019991906114f6565b5111156102d157826102a5836001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016101d0919061156d565b604080518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906114f6565b60200151604051632975bbcb60e11b81526001600160a01b038616906352eb77969061024f90339060040161156d565b60206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611555565b90611366565b10156102cc5760405162461bcd60e51b81526004016102c39061174f565b60405180910390fd5b61036d565b604051632975bbcb60e11b815283906001600160a01b038416906352eb7796906102ff90339060040161156d565b60206040518083038186803b15801561031757600080fd5b505afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190611555565b101561036d5760405162461bcd60e51b81526004016102c39061174f565b816001600160a01b031663a64b6e5f836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114ba565b33866040518463ffffffff1660e01b815260040161040d93929190611640565b600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b50505050816001600160a01b03166308d6707d3361047f86866001600160a01b03166352eb7796336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b815260040161049c9291906115b6565b600060405180830381600087803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b50506040516343504d3b60e01b81526001600160a01b03851692506343504d3b91506104fa90339060040161156d565b60206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190611555565b8311156105b75760405163f091bf5f60e01b81526001600160a01b0383169063f091bf5f906105809033906000906004016115b6565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b50505050610647565b816001600160a01b031663f091bf5f336105f786866001600160a01b03166343504d3b336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b81526004016106149291906115b6565b600060405180830381600087803b15801561062e57600080fd5b505af1158015610642573d6000803e3d6000fd5b505050505b816001600160a01b0316636908fd4d61069385856001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b6040518263ffffffff1660e01b81526004016106af919061179c565b600060405180830381600087803b1580156106c957600080fd5b505af11580156106dd573d6000803e3d6000fd5b5050604051634a5fc61b60e01b81526001600160a01b0385169250634a5fc61b915061071490600190339088908790600401611664565b600060405180830381600087803b15801561072e57600080fd5b505af1158015610742573d6000803e3d6000fd5b50505050505050565b6002546040805163113e6ecd60e01b815290516001600160a01b0390921691600091839163113e6ecd91600480820192602092909190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd91906114ba565b9050816001600160a01b031663b0f2f3b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611555565b83101561085f5760405162461bcd60e51b81526004016102c390611688565b6040516370a0823160e01b815283906001600160a01b038316906370a082319061088d90339060040161156d565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611555565b10156108fb5760405162461bcd60e51b81526004016102c3906116bb565b600254604051636eb1769f60e11b815284916001600160a01b038085169263dd62ed3e92610930923392911690600401611581565b60206040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190611555565b101561099e5760405162461bcd60e51b81526004016102c3906116fc565b816001600160a01b031663811b789d836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e657600080fd5b505afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e91906114ba565b6002546040516001600160e01b031960e085901b168152610a52929133916001600160a01b03909116908990600401611616565b600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050600042905060006040518060400160405280856001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190611555565b8152602001869052604051634d18462760e01b81529091506001600160a01b03851690634d18462790610b4090339085906004016115cf565b600060405180830381600087803b158015610b5a57600080fd5b505af1158015610b6e573d6000803e3d6000fd5b50505050836001600160a01b0316636abfe439610bfd6001876001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611555565b906113af565b6040518263ffffffff1660e01b8152600401610c19919061179c565b600060405180830381600087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505060405163341658f360e01b81526001600160a01b038716925063341658f39150610c7790339060040161156d565b60206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906114d6565b610d8b576040516314c8af8360e01b81526001600160a01b038516906314c8af8390610cf790339060040161156d565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b50506040516352d5d4b360e01b81526001600160a01b03871692506352d5d4b39150610d5890339060019060040161159b565b600060405180830381600087803b158015610d7257600080fd5b505af1158015610d86573d6000803e3d6000fd5b505050505b836001600160a01b03166308d6707d33610de388886001600160a01b03166352eb7796336040518263ffffffff1660e01b8152600401610dcb919061156d565b60206040518083038186803b158015610bbf57600080fd5b6040518363ffffffff1660e01b8152600401610e009291906115b6565b600060405180830381600087803b158015610e1a57600080fd5b505af1158015610e2e573d6000803e3d6000fd5b50505050836001600160a01b031663f091bf5f33610e7288886001600160a01b03166343504d3b336040518263ffffffff1660e01b8152600401610dcb919061156d565b6040518363ffffffff1660e01b8152600401610e8f9291906115b6565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050836001600160a01b0316636908fd4d610f0d87876001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610f29919061179c565b600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050836001600160a01b0316635522378f610fa787876001600160a01b031663b5c604ff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610fc3919061179c565b600060405180830381600087803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50506040516326a98ff960e21b81528492506001600160a01b0387169150639aa63fe49061102390339060040161156d565b604080518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107291906114f6565b5111156111e857836001600160a01b0316638286cdd53361111288886001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016110b9919061156d565b604080518083038186803b1580156110d057600080fd5b505afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906114f6565b60200151906113af565b6040516326a98ff960e21b81526001600160a01b03891690639aa63fe49061113e90339060040161156d565b604080518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906114f6565b516040516001600160e01b031960e086901b1681526111b1939291906004016115f5565b600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b50505050611257565b6001600160a01b038416638286cdd533876112068662278d006113af565b6040518463ffffffff1660e01b8152600401611224939291906115f5565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050505b604051634a5fc61b60e01b81526001600160a01b03851690634a5fc61b9061128a9060009033908a908890600401611664565b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b031633146112f857600080fd5b6001600160a01b03811661130b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006113a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b9392505050565b6000828201838110156113a8576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081848411156114965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145b578181015183820152602001611443565b50505050905090810190601f1680156114885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000602082840312156114af578081fd5b81356113a8816117a5565b6000602082840312156114cb578081fd5b81516113a8816117a5565b6000602082840312156114e7578081fd5b815180151581146113a8578182fd5b600060408284031215611507578081fd5b604080519081016001600160401b038111828210171561152357fe5b604052825181526020928301519281019290925250919050565b60006020828403121561154e578081fd5b5035919050565b600060208284031215611566578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825280516020808401919091520151604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b602080825260199082015278283632b0b9b29032b73a32b91036b7b9329030b6b7bab73a1760391b604082015260600190565b60208082526021908201527f596f7520646f6e2774206861766520656e6f756768205849562062616c616e636040820152606560f81b606082015260800190565b60208082526033908201527f506c6561736520616c6c6f7720736d61727420636f6e747261637420746f20736040820152723832b7321037b7103cb7bab9103132b430b63360691b606082015260800190565b6020808252602d908201527f596f752063616e206e6f742072657472697665204c5020746f6b656e2077697460408201526c1a081d1a1a5cc8185b5bdd5b9d609a1b606082015260800190565b90815260200190565b6001600160a01b03811681146117ba57600080fd5b5056fea264697066735822122055378dd91541cd0faf55229956410467340b0b69f5d7babf91216671957bcbd864736f6c63430007060033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100625760003560e01c80632a7be99a14610067578063742768661461007c5780637547c7a31461008f578063779afa35146100a25780638da5cb5b146100c0578063f2fde38b146100c8575b600080fd5b61007a61007536600461149e565b6100db565b005b61007a61008a36600461153d565b610114565b61007a61009d36600461153d565b61074b565b6100aa6112c3565b6040516100b7919061156d565b60405180910390f35b6100aa6112d2565b61007a6100d636600461149e565b6112e1565b6000546001600160a01b031633146100f257600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546040516326a98ff960e21b81526001600160a01b0390911690429081908390639aa63fe49061014a90339060040161156d565b604080518083038186803b15801561016157600080fd5b505afa158015610175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019991906114f6565b5111156102d157826102a5836001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016101d0919061156d565b604080518083038186803b1580156101e757600080fd5b505afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f91906114f6565b60200151604051632975bbcb60e11b81526001600160a01b038616906352eb77969061024f90339060040161156d565b60206040518083038186803b15801561026757600080fd5b505afa15801561027b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029f9190611555565b90611366565b10156102cc5760405162461bcd60e51b81526004016102c39061174f565b60405180910390fd5b61036d565b604051632975bbcb60e11b815283906001600160a01b038416906352eb7796906102ff90339060040161156d565b60206040518083038186803b15801561031757600080fd5b505afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190611555565b101561036d5760405162461bcd60e51b81526004016102c39061174f565b816001600160a01b031663a64b6e5f836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b557600080fd5b505afa1580156103c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ed91906114ba565b33866040518463ffffffff1660e01b815260040161040d93929190611640565b600060405180830381600087803b15801561042757600080fd5b505af115801561043b573d6000803e3d6000fd5b50505050816001600160a01b03166308d6707d3361047f86866001600160a01b03166352eb7796336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b815260040161049c9291906115b6565b600060405180830381600087803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b50506040516343504d3b60e01b81526001600160a01b03851692506343504d3b91506104fa90339060040161156d565b60206040518083038186803b15801561051257600080fd5b505afa158015610526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054a9190611555565b8311156105b75760405163f091bf5f60e01b81526001600160a01b0383169063f091bf5f906105809033906000906004016115b6565b600060405180830381600087803b15801561059a57600080fd5b505af11580156105ae573d6000803e3d6000fd5b50505050610647565b816001600160a01b031663f091bf5f336105f786866001600160a01b03166343504d3b336040518263ffffffff1660e01b815260040161024f919061156d565b6040518363ffffffff1660e01b81526004016106149291906115b6565b600060405180830381600087803b15801561062e57600080fd5b505af1158015610642573d6000803e3d6000fd5b505050505b816001600160a01b0316636908fd4d61069385856001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b15801561026757600080fd5b6040518263ffffffff1660e01b81526004016106af919061179c565b600060405180830381600087803b1580156106c957600080fd5b505af11580156106dd573d6000803e3d6000fd5b5050604051634a5fc61b60e01b81526001600160a01b0385169250634a5fc61b915061071490600190339088908790600401611664565b600060405180830381600087803b15801561072e57600080fd5b505af1158015610742573d6000803e3d6000fd5b50505050505050565b6002546040805163113e6ecd60e01b815290516001600160a01b0390921691600091839163113e6ecd91600480820192602092909190829003018186803b15801561079557600080fd5b505afa1580156107a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cd91906114ba565b9050816001600160a01b031663b0f2f3b06040518163ffffffff1660e01b815260040160206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108409190611555565b83101561085f5760405162461bcd60e51b81526004016102c390611688565b6040516370a0823160e01b815283906001600160a01b038316906370a082319061088d90339060040161156d565b60206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611555565b10156108fb5760405162461bcd60e51b81526004016102c3906116bb565b600254604051636eb1769f60e11b815284916001600160a01b038085169263dd62ed3e92610930923392911690600401611581565b60206040518083038186803b15801561094857600080fd5b505afa15801561095c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109809190611555565b101561099e5760405162461bcd60e51b81526004016102c3906116fc565b816001600160a01b031663811b789d836001600160a01b031663113e6ecd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109e657600080fd5b505afa1580156109fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1e91906114ba565b6002546040516001600160e01b031960e085901b168152610a52929133916001600160a01b03909116908990600401611616565b600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050600042905060006040518060400160405280856001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b079190611555565b8152602001869052604051634d18462760e01b81529091506001600160a01b03851690634d18462790610b4090339085906004016115cf565b600060405180830381600087803b158015610b5a57600080fd5b505af1158015610b6e573d6000803e3d6000fd5b50505050836001600160a01b0316636abfe439610bfd6001876001600160a01b031663df6965f46040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190611555565b906113af565b6040518263ffffffff1660e01b8152600401610c19919061179c565b600060405180830381600087803b158015610c3357600080fd5b505af1158015610c47573d6000803e3d6000fd5b505060405163341658f360e01b81526001600160a01b038716925063341658f39150610c7790339060040161156d565b60206040518083038186803b158015610c8f57600080fd5b505afa158015610ca3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc791906114d6565b610d8b576040516314c8af8360e01b81526001600160a01b038516906314c8af8390610cf790339060040161156d565b600060405180830381600087803b158015610d1157600080fd5b505af1158015610d25573d6000803e3d6000fd5b50506040516352d5d4b360e01b81526001600160a01b03871692506352d5d4b39150610d5890339060019060040161159b565b600060405180830381600087803b158015610d7257600080fd5b505af1158015610d86573d6000803e3d6000fd5b505050505b836001600160a01b03166308d6707d33610de388886001600160a01b03166352eb7796336040518263ffffffff1660e01b8152600401610dcb919061156d565b60206040518083038186803b158015610bbf57600080fd5b6040518363ffffffff1660e01b8152600401610e009291906115b6565b600060405180830381600087803b158015610e1a57600080fd5b505af1158015610e2e573d6000803e3d6000fd5b50505050836001600160a01b031663f091bf5f33610e7288886001600160a01b03166343504d3b336040518263ffffffff1660e01b8152600401610dcb919061156d565b6040518363ffffffff1660e01b8152600401610e8f9291906115b6565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b50505050836001600160a01b0316636908fd4d610f0d87876001600160a01b0316636e3721436040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610f29919061179c565b600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050836001600160a01b0316635522378f610fa787876001600160a01b031663b5c604ff6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b6040518263ffffffff1660e01b8152600401610fc3919061179c565b600060405180830381600087803b158015610fdd57600080fd5b505af1158015610ff1573d6000803e3d6000fd5b50506040516326a98ff960e21b81528492506001600160a01b0387169150639aa63fe49061102390339060040161156d565b604080518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107291906114f6565b5111156111e857836001600160a01b0316638286cdd53361111288886001600160a01b0316639aa63fe4336040518263ffffffff1660e01b81526004016110b9919061156d565b604080518083038186803b1580156110d057600080fd5b505afa1580156110e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110891906114f6565b60200151906113af565b6040516326a98ff960e21b81526001600160a01b03891690639aa63fe49061113e90339060040161156d565b604080518083038186803b15801561115557600080fd5b505afa158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906114f6565b516040516001600160e01b031960e086901b1681526111b1939291906004016115f5565b600060405180830381600087803b1580156111cb57600080fd5b505af11580156111df573d6000803e3d6000fd5b50505050611257565b6001600160a01b038416638286cdd533876112068662278d006113af565b6040518463ffffffff1660e01b8152600401611224939291906115f5565b600060405180830381600087803b15801561123e57600080fd5b505af1158015611252573d6000803e3d6000fd5b505050505b604051634a5fc61b60e01b81526001600160a01b03851690634a5fc61b9061128a9060009033908a908890600401611664565b600060405180830381600087803b1580156112a457600080fd5b505af11580156112b8573d6000803e3d6000fd5b505050505050505050565b6002546001600160a01b031681565b6000546001600160a01b031681565b6000546001600160a01b031633146112f857600080fd5b6001600160a01b03811661130b57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006113a883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611407565b9392505050565b6000828201838110156113a8576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b600081848411156114965760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561145b578181015183820152602001611443565b50505050905090810190601f1680156114885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000602082840312156114af578081fd5b81356113a8816117a5565b6000602082840312156114cb578081fd5b81516113a8816117a5565b6000602082840312156114e7578081fd5b815180151581146113a8578182fd5b600060408284031215611507578081fd5b604080519081016001600160401b038111828210171561152357fe5b604052825181526020928301519281019290925250919050565b60006020828403121561154e578081fd5b5035919050565b600060208284031215611566578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392909216825280516020808401919091520151604082015260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b602080825260199082015278283632b0b9b29032b73a32b91036b7b9329030b6b7bab73a1760391b604082015260600190565b60208082526021908201527f596f7520646f6e2774206861766520656e6f756768205849562062616c616e636040820152606560f81b606082015260800190565b60208082526033908201527f506c6561736520616c6c6f7720736d61727420636f6e747261637420746f20736040820152723832b7321037b7103cb7bab9103132b430b63360691b606082015260800190565b6020808252602d908201527f596f752063616e206e6f742072657472697665204c5020746f6b656e2077697460408201526c1a081d1a1a5cc8185b5bdd5b9d609a1b606082015260800190565b90815260200190565b6001600160a01b03811681146117ba57600080fd5b5056fea264697066735822122055378dd91541cd0faf55229956410467340b0b69f5d7babf91216671957bcbd864736f6c63430007060033
Deployed Bytecode Sourcemap
172:3914:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3931:148;;;;;;:::i;:::-;;:::i;:::-;;2671:1250;;;;;;:::i;:::-;;:::i;417:2248::-;;;;;;:::i;:::-;;:::i;272:81::-;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;96:20:0;;;:::i;721:188::-;;;;;;:::i;:::-;;:::i;3931:148:4:-;526:5:0;;-1:-1:-1;;;;;526:5:0;512:10;:19;504:28;;;;;;4024:23:4::1;:48:::0;;-1:-1:-1;;;;;;4024:48:4::1;-1:-1:-1::0;;;;;4024:48:4;;;::::1;::::0;;;::::1;::::0;;3931:148::o;2671:1250::-;2772:23;;2859:50;;-1:-1:-1;;;2859:50:4;;-1:-1:-1;;;;;2772:23:4;;;;2831:15;;;;2772:23;;2859:38;;:50;;2898:10;;2859:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;:83;2856:418;;;3075:6;2965:106;3007:9;-1:-1:-1;;;;;3007:38:4;;3046:10;3007:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;2965:37;;-1:-1:-1;;;2965:37:4;;-1:-1:-1;;;;;2965:25:4;;;;;:37;;2991:10;;2965:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:41;;:106::i;:::-;:116;;2957:174;;;;-1:-1:-1;;;2957:174:4;;;;;;;:::i;:::-;;;;;;;;;2856:418;;;3168:37;;-1:-1:-1;;;3168:37:4;;3207:6;;-1:-1:-1;;;;;3168:25:4;;;;;:37;;3194:10;;3168:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;3160:103;;;;-1:-1:-1;;;3160:103:4;;;;;;;:::i;:::-;3283:9;-1:-1:-1;;;;;3283:24:4;;3308:9;-1:-1:-1;;;;;3308:36:4;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3347:10;3358:6;3283:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3375:9;-1:-1:-1;;;;;3375:28:4;;3404:10;3415:49;3457:6;3415:9;-1:-1:-1;;;;;3415:25:4;;3441:10;3415:37;;;;;;;;;;;;;;;:::i;:49::-;3375:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3485:49:4;;-1:-1:-1;;;3485:49:4;;-1:-1:-1;;;;;3485:37:4;;;-1:-1:-1;3485:37:4;;-1:-1:-1;3485:49:4;;3523:10;;3485:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3478:6;:56;3475:282;;;3549:54;;-1:-1:-1;;;3549:54:4;;-1:-1:-1;;;;;3549:40:4;;;;;:54;;3590:10;;3601:1;;3549:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3475:282;;;3632:9;-1:-1:-1;;;;;3632:40:4;;3673:10;3684:61;3738:6;3684:9;-1:-1:-1;;;;;3684:37:4;;3722:10;3684:49;;;;;;;;;;;;;;;:::i;:61::-;3632:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3475:282;3766:9;-1:-1:-1;;;;;3766:33:4;;3800:44;3837:6;3800:9;-1:-1:-1;;;;;3800:30:4;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;3766:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3855:59:4;;-1:-1:-1;;;3855:59:4;;-1:-1:-1;;;;;3855:21:4;;;-1:-1:-1;3855:21:4;;-1:-1:-1;3855:59:4;;3877:1;;3879:10;;3890:6;;3897:16;;3855:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2671:1250;;;:::o;417:2248::-;516:23;;573:38;;;-1:-1:-1;;;573:38:4;;;;-1:-1:-1;;;;;516:23:4;;;;472:26;;516:23;;573:36;;:38;;;;;;;;;;;;;;;516:23;573:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;550:62;;638:9;-1:-1:-1;;;;;638:23:4;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;630:6;:33;;622:70;;;;-1:-1:-1;;;622:70:4;;;;;;;:::i;:::-;746:30;;-1:-1:-1;;;746:30:4;;780:6;;-1:-1:-1;;;;;746:18:4;;;;;:30;;765:10;;746:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;738:86;;;;-1:-1:-1;;;738:86:4;;;;;;;:::i;:::-;919:23;;889:54;;-1:-1:-1;;;889:54:4;;947:6;;-1:-1:-1;;;;;889:18:4;;;;;;:54;;908:10;;919:23;;;889:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:64;;881:137;;;;-1:-1:-1;;;881:137:4;;;;;;;:::i;:::-;1028:9;-1:-1:-1;;;;;1028:28:4;;1057:9;-1:-1:-1;;;;;1057:36:4;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1107:23;;1028:110;;-1:-1:-1;;;;;;1028:110:4;;;;;;;;;;1096:10;;-1:-1:-1;;;;;1107:23:4;;;;1131:6;;1028:110;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1157:24;1182:15;1157:40;;1207:39;1248:124;;;;;;;;1302:9;-1:-1:-1;;;;;1302:25:4;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1248:124;;;;;;;1382:52;;-1:-1:-1;;;1382:52:4;;1207:165;;-1:-1:-1;;;;;;1382:34:4;;;;;:52;;1417:10;;1207:165;;1382:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1444:9;-1:-1:-1;;;;;1444:28:4;;1473:34;1505:1;1473:9;-1:-1:-1;;;;;1473:25:4;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;:34::i;:::-;1444:64;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1522:39:4;;-1:-1:-1;;;1522:39:4;;-1:-1:-1;;;;;1522:27:4;;;-1:-1:-1;1522:27:4;;-1:-1:-1;1522:39:4;;1550:10;;1522:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1518:175;;1576:45;;-1:-1:-1;;;1576:45:4;;-1:-1:-1;;;;;1576:33:4;;;;;:45;;1610:10;;1576:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1635:47:4;;-1:-1:-1;;;1635:47:4;;-1:-1:-1;;;;;1635:30:4;;;-1:-1:-1;1635:30:4;;-1:-1:-1;1635:47:4;;1666:10;;1677:4;;1635:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1518:175;1702:9;-1:-1:-1;;;;;1702:28:4;;1731:10;1742:49;1784:6;1742:9;-1:-1:-1;;;;;1742:25:4;;1768:10;1742:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:49;1702:90;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:9;-1:-1:-1;;;;;1802:40:4;;1843:10;1854:61;1908:6;1854:9;-1:-1:-1;;;;;1854:37:4;;1892:10;1854:49;;;;;;;;;;;;;;;:::i;:61::-;1802:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1926:9;-1:-1:-1;;;;;1926:33:4;;1960:44;1997:6;1960:9;-1:-1:-1;;;;;1960:30:4;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;1926:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2015:9;-1:-1:-1;;;;;2015:33:4;;2049:44;2086:6;2049:9;-1:-1:-1;;;;;2049:30:4;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;2015:79;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2107:50:4;;-1:-1:-1;;;2107:50:4;;2174:16;;-1:-1:-1;;;;;;2107:38:4;;;-1:-1:-1;2107:38:4;;:50;;2146:10;;2107:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;:83;2104:486;;;2205:9;-1:-1:-1;;;;;2205:41:4;;2247:10;2258:77;2328:6;2259:9;-1:-1:-1;;;;;2259:38:4;;2298:10;2259:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:63;;;;2258:69;:77::i;:::-;2393:50;;-1:-1:-1;;;2393:50:4;;-1:-1:-1;;;;;2393:38:4;;;;;:50;;2432:10;;2393:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;2205:255;;-1:-1:-1;;;;;;2205:255:4;;;;;;;;;;;2393:66;2205:255;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:486;;;-1:-1:-1;;;;;2489:41:4;;;2531:10;2542:6;2549:29;:16;2570:7;2549:20;:29::i;:::-;2489:90;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2104:486;2599:59;;-1:-1:-1;;;2599:59:4;;-1:-1:-1;;;;;2599:21:4;;;;;:59;;2621:1;;2623:10;;2634:6;;2641:16;;2599:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:2248;;;;;:::o;272:81::-;;;-1:-1:-1;;;;;272:81:4;;:::o;96:20:0:-;;;-1:-1:-1;;;;;96:20:0;;:::o;721:188::-;526:5;;-1:-1:-1;;;;;526:5:0;512:10;:19;504:28;;;;;;-1:-1:-1;;;;;801:22:0;::::1;793:31;;;::::0;::::1;;860:5;::::0;;839:37:::1;::::0;-1:-1:-1;;;;;839:37:0;;::::1;::::0;860:5;::::1;::::0;839:37:::1;::::0;::::1;886:5;:16:::0;;-1:-1:-1;;;;;;886:16:0::1;-1:-1:-1::0;;;;;886:16:0;;;::::1;::::0;;;::::1;::::0;;721:188::o;1329:134:1:-;1387:7;1413:43;1417:1;1420;1413:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1406:50;1329:134;-1:-1:-1;;;1329:134:1:o;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;-1:-1:-1;;;986:46:1;;;;;;;;;;;;-1:-1:-1;;;986:46:1;;;;;;;;;;;;;;1754:187;1840:7;1875:12;1867:6;;;;1859:29;;;;-1:-1:-1;;;1859:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:1;;;1754:187::o;14:259:5:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:297::-;;666:2;654:9;645:7;641:23;637:32;634:2;;;687:6;679;672:22;634:2;724:9;718:16;777:5;770:13;763:21;756:5;753:32;743:2;;804:6;796;789:22;848:506;;1000:2;988:9;979:7;975:23;971:32;968:2;;;1021:6;1013;1006:22;968:2;1059;1053:9;;;1089:15;;-1:-1:-1;;;;;1119:34:5;;1155:22;;;1116:62;1113:2;;;1181:9;1113:2;1208;1201:22;1247:16;;1232:32;;1318:2;1303:18;;;1297:25;1280:15;;;1273:50;;;;-1:-1:-1;1239:6:5;958:396;-1:-1:-1;958:396:5:o;1359:190::-;;1471:2;1459:9;1450:7;1446:23;1442:32;1439:2;;;1492:6;1484;1477:22;1439:2;-1:-1:-1;1520:23:5;;1429:120;-1:-1:-1;1429:120:5:o;1554:194::-;;1677:2;1665:9;1656:7;1652:23;1648:32;1645:2;;;1698:6;1690;1683:22;1645:2;-1:-1:-1;1726:16:5;;1635:113;-1:-1:-1;1635:113:5:o;1753:203::-;-1:-1:-1;;;;;1917:32:5;;;;1899:51;;1887:2;1872:18;;1854:102::o;2177:312::-;-1:-1:-1;;;;;2415:15:5;;;2397:34;;2467:15;;2462:2;2447:18;;2440:43;2347:2;2332:18;;2314:175::o;2494:292::-;-1:-1:-1;;;;;2688:32:5;;;;2670:51;;2764:14;2757:22;2752:2;2737:18;;2730:50;2658:2;2643:18;;2625:161::o;2791:290::-;-1:-1:-1;;;;;2999:32:5;;;;2981:51;;3063:2;3048:18;;3041:34;2969:2;2954:18;;2936:145::o;3086:404::-;-1:-1:-1;;;;;3342:32:5;;;;3324:51;;3411:13;;3406:2;3391:18;;;3384:41;;;;3467:15;3461:22;3456:2;3441:18;;3434:50;3312:2;3297:18;;3279:211::o;3782:353::-;-1:-1:-1;;;;;4010:32:5;;;;3992:51;;4074:2;4059:18;;4052:34;;;;4117:2;4102:18;;4095:34;3980:2;3965:18;;3947:188::o;4140:464::-;-1:-1:-1;;;;;4435:15:5;;;4417:34;;4487:15;;;4482:2;4467:18;;4460:43;4539:15;;4534:2;4519:18;;4512:43;4586:2;4571:18;;4564:34;;;;4366:3;4351:19;;4333:271::o;4609:383::-;-1:-1:-1;;;;;4875:15:5;;;4857:34;;4927:15;;;;4922:2;4907:18;;4900:43;4974:2;4959:18;;4952:34;;;;4807:2;4792:18;;4774:218::o;4997:433::-;5244:25;;;-1:-1:-1;;;;;5305:32:5;;;;5300:2;5285:18;;5278:60;5369:2;5354:18;;5347:34;5412:2;5397:18;;5390:34;5231:3;5216:19;;5198:232::o;5873:349::-;6075:2;6057:21;;;6114:2;6094:18;;;6087:30;-1:-1:-1;;;6148:2:5;6133:18;;6126:55;6213:2;6198:18;;6047:175::o;6227:397::-;6429:2;6411:21;;;6468:2;6448:18;;;6441:30;6507:34;6502:2;6487:18;;6480:62;-1:-1:-1;;;6573:2:5;6558:18;;6551:31;6614:3;6599:19;;6401:223::o;6629:415::-;6831:2;6813:21;;;6870:2;6850:18;;;6843:30;6909:34;6904:2;6889:18;;6882:62;-1:-1:-1;;;6975:2:5;6960:18;;6953:49;7034:3;7019:19;;6803:241::o;7049:409::-;7251:2;7233:21;;;7290:2;7270:18;;;7263:30;7329:34;7324:2;7309:18;;7302:62;-1:-1:-1;;;7395:2:5;7380:18;;7373:43;7448:3;7433:19;;7223:235::o;7463:177::-;7609:25;;;7597:2;7582:18;;7564:76::o;7645:133::-;-1:-1:-1;;;;;7722:31:5;;7712:42;;7702:2;;7768:1;7765;7758:12;7702:2;7692:86;:::o
Swarm Source
ipfs://55378dd91541cd0faf55229956410467340b0b69f5d7babf91216671957bcbd8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.