More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 613 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Initiate Unstake | 20093621 | 78 days ago | IN | 0 ETH | 0.00035186 | ||||
Initiate Unstake | 20093615 | 78 days ago | IN | 0 ETH | 0.00036101 | ||||
Claim Reward | 20075621 | 80 days ago | IN | 0 ETH | 0.00272733 | ||||
Claim Reward | 20075606 | 80 days ago | IN | 0 ETH | 0.00218554 | ||||
Claim Reward | 20065103 | 82 days ago | IN | 0 ETH | 0.00058614 | ||||
Claim Reward | 20065080 | 82 days ago | IN | 0 ETH | 0.00063743 | ||||
Claim Reward | 20060738 | 82 days ago | IN | 0 ETH | 0.00040267 | ||||
Claim Reward | 20059110 | 83 days ago | IN | 0 ETH | 0.00033624 | ||||
Claim Reward | 20046058 | 84 days ago | IN | 0 ETH | 0.00165114 | ||||
Stake | 20042737 | 85 days ago | IN | 0 ETH | 0.01713489 | ||||
Claim Reward | 20038128 | 86 days ago | IN | 0 ETH | 0.00083793 | ||||
Claim Reward | 20026732 | 87 days ago | IN | 0 ETH | 0.00204117 | ||||
Complete Unstake | 20026380 | 87 days ago | IN | 0 ETH | 0.00169095 | ||||
Complete Unstake | 20021038 | 88 days ago | IN | 0 ETH | 0.00111033 | ||||
Claim Reward | 20020959 | 88 days ago | IN | 0 ETH | 0.00146027 | ||||
Claim Reward | 20016094 | 89 days ago | IN | 0 ETH | 0.00078496 | ||||
Claim Reward | 20016007 | 89 days ago | IN | 0 ETH | 0.0006082 | ||||
Claim Reward | 20013735 | 89 days ago | IN | 0 ETH | 0.00316128 | ||||
Initiate Unstake | 20013678 | 89 days ago | IN | 0 ETH | 0.00117729 | ||||
Initiate Unstake | 20013408 | 89 days ago | IN | 0 ETH | 0.00058341 | ||||
Claim Reward | 20002997 | 90 days ago | IN | 0 ETH | 0.00051404 | ||||
Complete Unstake | 19990566 | 92 days ago | IN | 0 ETH | 0.00254308 | ||||
Claim Reward | 19986091 | 93 days ago | IN | 0 ETH | 0.00066727 | ||||
Initiate Unstake | 19981337 | 93 days ago | IN | 0 ETH | 0.00118335 | ||||
Complete Unstake | 19981214 | 93 days ago | IN | 0 ETH | 0.00108672 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
LNDRYStaking
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-03-11 */ // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } /** * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a * `nonReentrant` function in the call stack. */ function _reentrancyGuardEntered() internal view returns (bool) { return _status == _ENTERED; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: LNDRYstaking.sol pragma solidity ^0.8.0; contract LNDRYStaking is ReentrancyGuard, Ownable { IERC20 public lndryToken; struct Tier { uint256 minValue; // Minimum value to qualify for this tier uint256 maxValue; // Maximum value to qualify for this tier uint256 allocation; // Percent of weekly rewards uint256 totalStaked; } struct Stake { uint256 amount; uint256 tierIndex; uint256 stakeTime; // Time when tokens were staked uint256 lastUnstakeTime; // Last time an unstake was initiated for cooldown calculation bool unstakeInitiated; uint256 lastRewardActionTime; uint256 amountToUnstake; bool fastUnstake; uint256 unclaimedRewards; } Tier[] public tiers; uint256 public weeklyRewardPool; uint256 public lastRewardUpdateTime; uint256 private constant PRECISION_FACTOR = 1e18; address public feeCollector; uint256 public regularUnstakeCooldown = 7 days; uint256 public fastUnstakeCooldown = 1 days; uint256 public regularUnstakeFeePercentage = 100; // 1% uint256 public fastUnstakeFeePercentage = 500; // 5% mapping(address => Stake) public stakes; // Maps user address to their stake address[] private stakers; // List of all staker addresses for iteration event Staked(address indexed user, uint256 amount, uint256 tierIndex); event UnstakeInitiated(address indexed user, uint256 amount, bool fastUnstake); event Unstaked(address indexed user, uint256 amount, bool fastUnstake); event RewardClaimed(address indexed user, uint256 reward); event RewardsCompounded(address indexed user, uint256 amount); constructor(address _lndryTokenAddress, address _initialOwner, address _feeCollector) Ownable(_initialOwner) { require(_feeCollector != address(0), "Invalid fee collector address"); lndryToken = IERC20(_lndryTokenAddress); feeCollector = _feeCollector; } function setRegularUnstakeCooldown(uint256 _cooldown) external onlyOwner { regularUnstakeCooldown = _cooldown; } function setFastUnstakeCooldown(uint256 _cooldown) external onlyOwner { fastUnstakeCooldown = _cooldown; } function setRegularUnstakeFeePercentage(uint256 _feePercentage) external onlyOwner { regularUnstakeFeePercentage = _feePercentage; } function setFastUnstakeFeePercentage(uint256 _feePercentage) external onlyOwner { fastUnstakeFeePercentage = _feePercentage; } function depositRewards(uint256 _amount, uint256[] calldata _allocations) external onlyOwner { require(_amount > 0, "Amount must be greater than 0"); require(_allocations.length == tiers.length, "Allocations length must match tiers length"); uint256 totalAllocation = 0; for (uint256 i = 0; i < _allocations.length; i++) { totalAllocation += _allocations[i]; } require(totalAllocation == 100, "Total allocation must be 100%"); // Before updating the weeklyRewardPool, calculate and update unclaimed rewards for each staker for(uint256 i = 0; i < stakers.length; i++) { address staker = stakers[i]; uint256 pendingReward = calculateReward(staker); // Calculate current pending reward stakes[staker].unclaimedRewards += pendingReward - stakes[staker].unclaimedRewards; // Update unclaimed rewards stakes[staker].lastRewardActionTime = block.timestamp; // Update last action time to now } weeklyRewardPool += _amount; // Update the pool with the new amount require(lndryToken.transferFrom(msg.sender, address(this), _amount), "Transfer failed"); lastRewardUpdateTime = block.timestamp; // Update the reward update time to now } function emergencyTransferStakedTokens(address to) external onlyOwner nonReentrant { require(to != address(0), "Cannot transfer to the zero address"); uint256 contractBalance = lndryToken.balanceOf(address(this)); require(contractBalance > 0, "No tokens to transfer"); require(lndryToken.transfer(to, contractBalance), "Token transfer failed"); } function stake(uint256 _amount) external nonReentrant { require(_amount > 0, "Cannot stake 0 tokens"); Stake storage userStake = stakes[msg.sender]; userStake.amount += _amount; userStake.tierIndex = determineTier(userStake.amount); userStake.stakeTime = block.timestamp; userStake.lastUnstakeTime = block.timestamp; // Reset on new stake if (!isStaker(msg.sender)) { stakers.push(msg.sender); } recalculateTotalStaked(); require(lndryToken.transferFrom(msg.sender, address(this), _amount), "Transfer failed"); emit Staked(msg.sender, _amount, userStake.tierIndex); } function initiateUnstake(uint256 _amount, bool _fastUnstake) external { Stake storage userStake = stakes[msg.sender]; require(_amount > 0 && _amount <= userStake.amount, "Invalid unstake amount"); require(!userStake.unstakeInitiated, "Unstake already initiated"); // Before initiating the unstake, reset unclaimed rewards to 0 userStake.unclaimedRewards = 0; userStake.unstakeInitiated = true; userStake.amountToUnstake = _amount; userStake.fastUnstake = _fastUnstake; userStake.lastUnstakeTime = block.timestamp; emit UnstakeInitiated(msg.sender, _amount, _fastUnstake); } function setFeeCollector(address _feeCollector) external onlyOwner { require(_feeCollector != address(0), "Invalid address"); feeCollector = _feeCollector; } function completeUnstake() external nonReentrant { Stake storage userStake = stakes[msg.sender]; require(userStake.unstakeInitiated, "Unstake not initiated"); uint256 cooldown = userStake.fastUnstake ? fastUnstakeCooldown : regularUnstakeCooldown; require(block.timestamp >= userStake.lastUnstakeTime + cooldown, "Cooldown not met"); uint256 feePercentage = userStake.fastUnstake ? fastUnstakeFeePercentage : regularUnstakeFeePercentage; uint256 fee = (userStake.amountToUnstake * feePercentage) / 10000; uint256 amountAfterFee = userStake.amountToUnstake - fee; userStake.amount -= userStake.amountToUnstake; // Deduct the unstaked amount userStake.unstakeInitiated = false; // Reset unstake state // Transfer the unstaked amount after fee to the user require(lndryToken.transfer(msg.sender, amountAfterFee), "Transfer failed"); // Transfer the fee to the fee collector require(lndryToken.transfer(feeCollector, fee), "Fee transfer failed"); emit Unstaked(msg.sender, userStake.amountToUnstake, userStake.fastUnstake); } function calculateReward(address _user) public view returns (uint256) { Stake memory userStake = stakes[_user]; if (userStake.amount == 0 || tiers.length == 0) { return 0; } uint256 lastActionTime = (userStake.lastRewardActionTime == 0 || userStake.lastRewardActionTime < lastRewardUpdateTime) ? lastRewardUpdateTime : userStake.lastRewardActionTime; uint256 timeElapsed = block.timestamp > lastActionTime ? block.timestamp - lastActionTime : 0; if (timeElapsed > 7 days) { timeElapsed = 7 days; } // Adjusted calculation to ensure non-zero result for rewardPoolForElapsedPeriod uint256 rewardPoolForElapsedPeriod = (weeklyRewardPool * PRECISION_FACTOR * timeElapsed) / (7 days) / PRECISION_FACTOR; uint256 tierReward = rewardPoolForElapsedPeriod * tiers[userStake.tierIndex].allocation / 100; if (tiers[userStake.tierIndex].totalStaked == 0) { return 0; // Prevent division by zero } uint256 rewardPerShare = (tierReward * PRECISION_FACTOR) / tiers[userStake.tierIndex].totalStaked; uint256 pendingReward = (userStake.amount * rewardPerShare) / PRECISION_FACTOR; // Including unclaimed rewards in the total reward uint256 totalReward = pendingReward + userStake.unclaimedRewards; return totalReward; } function claimReward() external nonReentrant { uint256 reward = calculateReward(msg.sender); require(reward > 0, "No rewards to claim"); require(lndryToken.transfer(msg.sender, reward), "Transfer failed"); Stake storage userStake = stakes[msg.sender]; userStake.lastRewardActionTime = block.timestamp; userStake.unclaimedRewards = 0; // Reset unclaimed rewards to 0 emit RewardClaimed(msg.sender, reward); } function getUnstakeCooldownLeft(address _user) public view returns (uint256 timeLeft, bool isFastUnstake) { Stake memory userStake = stakes[_user]; if (!userStake.unstakeInitiated) { return (0, false); // No unstake initiated, so no cooldown } uint256 cooldownEnd; if (userStake.fastUnstake) { cooldownEnd = userStake.lastUnstakeTime + fastUnstakeCooldown; } else { cooldownEnd = userStake.lastUnstakeTime + regularUnstakeCooldown; } if (block.timestamp >= cooldownEnd) { return (0, userStake.fastUnstake); // Cooldown completed } return (cooldownEnd - block.timestamp, userStake.fastUnstake); // Time left and type of unstake } function addTier(uint256 _minValue, uint256 _maxValue, uint256 _allocation) external onlyOwner { require(_minValue < _maxValue, "minValue must be less than maxValue"); Tier memory newTier = Tier({ minValue: _minValue, maxValue: _maxValue, allocation: _allocation, totalStaked: 0 }); // Find the correct position to insert the new tier uint256 position = tiers.length; for (uint256 i = 0; i < tiers.length; i++) { if (_minValue < tiers[i].minValue) { position = i; break; } } // Shift tiers and insert the new tier tiers.push(newTier); // Add at the end to increase the array size for (uint256 i = tiers.length - 1; i > position; i--) { tiers[i] = tiers[i - 1]; } tiers[position] = newTier; } function removeTier(uint256 index) external onlyOwner { require(index < tiers.length, "Invalid tier index"); for (uint256 i = index; i < tiers.length - 1; i++) { tiers[i] = tiers[i + 1]; } tiers.pop(); // Remove the last element after shifting } function recalculateAllStakes() internal { for (uint256 i = 0; i < stakers.length; i++) { address staker = stakers[i]; Stake storage userStake = stakes[staker]; uint256 newTierIndex = determineTier(userStake.amount); if (newTierIndex != userStake.tierIndex) { userStake.tierIndex = newTierIndex; // Adjust any additional logic based on the new tier assignment } } recalculateTotalStaked(); } function determineTier(uint256 amount) internal view returns (uint256) { for (uint256 i = 0; i < tiers.length; i++) { if (amount >= tiers[i].minValue && amount <= tiers[i].maxValue) { return i; } } revert("Amount does not qualify for any tier"); } function recalculateTotalStaked() internal { for (uint256 i = 0; i < tiers.length; i++) { tiers[i].totalStaked = 0; } for (uint256 i = 0; i < stakers.length; i++) { address stakerAddress = stakers[i]; Stake memory userStake = stakes[stakerAddress]; uint256 tierIndex = userStake.tierIndex; tiers[tierIndex].totalStaked += userStake.amount; } } function isStaker(address _address) internal view returns (bool) { for (uint256 i = 0; i < stakers.length; i++) { if (stakers[i] == _address) { return true; } } return false; } function removeStaker(address staker) internal { for (uint256 i = 0; i < stakers.length; i++) { if (stakers[i] == staker) { stakers[i] = stakers[stakers.length - 1]; stakers.pop(); return; } } } function compoundRewards() external nonReentrant { uint256 reward = calculateReward(msg.sender); require(reward > 0, "No rewards to compound"); Stake storage userStake = stakes[msg.sender]; userStake.amount += reward; // Add rewards to the staked amount // Recalculate the user's tier based on the new staked amount uint256 newTierIndex = determineTier(userStake.amount); if (newTierIndex != userStake.tierIndex) { userStake.tierIndex = newTierIndex; // Update the user's tier if it has changed } recalculateTotalStaked(); // Recalculate the total staked amount in each tier, if necessary userStake.unclaimedRewards = 0; // Reset unclaimed rewards to 0 userStake.lastRewardActionTime = block.timestamp; emit RewardsCompounded(msg.sender, reward); } function getNumberOfStakers() public view returns (uint256) { return stakers.length; } function getTotalAmountStaked() public view returns (uint256 totalStaked) { for (uint256 i = 0; i < stakers.length; i++) { address stakerAddress = stakers[i]; totalStaked += stakes[stakerAddress].amount; } } function getTierAPY(uint256 tierIndex) public view returns (uint256) { require(tierIndex < tiers.length, "Invalid tier index"); uint256 rewardsPerWeek = weeklyRewardPool * tiers[tierIndex].allocation / 100; uint256 totalStakedInTier = tiers[tierIndex].totalStaked; // Calculate APY for the tier based on rewards earned and total staked amount if (totalStakedInTier == 0) { return 0; // Avoid division by zero } return (rewardsPerWeek * 52 * 100) / totalStakedInTier; // Multiply by 52 for annualization } function getUserAPY(address user) public view returns (uint256) { Stake memory userStake = stakes[user]; // Ensure the user has an existing stake if (userStake.amount == 0) { return 0; // User has no stake, thus APY is 0 } // Determine the user's tier based on their current stake uint256 tierIndex = userStake.tierIndex; // Fetch and return the APY for the determined tier return getTierAPY(tierIndex); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lndryTokenAddress","type":"address"},{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"address","name":"_feeCollector","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsCompounded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tierIndex","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"fastUnstake","type":"bool"}],"name":"UnstakeInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"fastUnstake","type":"bool"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"uint256","name":"_minValue","type":"uint256"},{"internalType":"uint256","name":"_maxValue","type":"uint256"},{"internalType":"uint256","name":"_allocation","type":"uint256"}],"name":"addTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completeUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compoundRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256[]","name":"_allocations","type":"uint256[]"}],"name":"depositRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"emergencyTransferStakedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fastUnstakeCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fastUnstakeFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfStakers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tierIndex","type":"uint256"}],"name":"getTierAPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalAmountStaked","outputs":[{"internalType":"uint256","name":"totalStaked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUnstakeCooldownLeft","outputs":[{"internalType":"uint256","name":"timeLeft","type":"uint256"},{"internalType":"bool","name":"isFastUnstake","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserAPY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_fastUnstake","type":"bool"}],"name":"initiateUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastRewardUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lndryToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regularUnstakeCooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"regularUnstakeFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cooldown","type":"uint256"}],"name":"setFastUnstakeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercentage","type":"uint256"}],"name":"setFastUnstakeFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeCollector","type":"address"}],"name":"setFeeCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cooldown","type":"uint256"}],"name":"setRegularUnstakeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePercentage","type":"uint256"}],"name":"setRegularUnstakeFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tierIndex","type":"uint256"},{"internalType":"uint256","name":"stakeTime","type":"uint256"},{"internalType":"uint256","name":"lastUnstakeTime","type":"uint256"},{"internalType":"bool","name":"unstakeInitiated","type":"bool"},{"internalType":"uint256","name":"lastRewardActionTime","type":"uint256"},{"internalType":"uint256","name":"amountToUnstake","type":"uint256"},{"internalType":"bool","name":"fastUnstake","type":"bool"},{"internalType":"uint256","name":"unclaimedRewards","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"minValue","type":"uint256"},{"internalType":"uint256","name":"maxValue","type":"uint256"},{"internalType":"uint256","name":"allocation","type":"uint256"},{"internalType":"uint256","name":"totalStaked","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weeklyRewardPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405262093a806007556201518060085560646009556101f4600a5534801562000029575f80fd5b5060405162003bee38038062003bee83398181016040528101906200004f9190620002fe565b8160015f819055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ca575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000c1919062000368565b60405180910390fd5b620000db81620001d660201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200014d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200014490620003e1565b60405180910390fd5b8260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505062000401565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620002c8826200029d565b9050919050565b620002da81620002bc565b8114620002e5575f80fd5b50565b5f81519050620002f881620002cf565b92915050565b5f805f6060848603121562000318576200031762000299565b5b5f6200032786828701620002e8565b93505060206200033a86828701620002e8565b92505060406200034d86828701620002e8565b9150509250925092565b6200036281620002bc565b82525050565b5f6020820190506200037d5f83018462000357565b92915050565b5f82825260208201905092915050565b7f496e76616c69642066656520636f6c6c6563746f7220616464726573730000005f82015250565b5f620003c9601d8362000383565b9150620003d68262000393565b602082019050919050565b5f6020820190508181035f830152620003fa81620003bb565b9050919050565b6137df806200040f5f395ff3fe608060405234801561000f575f80fd5b50600436106101f9575f3560e01c8063784d11b711610118578063c00c9f7f116100ab578063d82e39621161007a578063d82e396214610533578063e70bc31714610563578063ede4140b14610581578063f2fde38b1461059f578063f57a225a146105bb576101f9565b8063c00c9f7f146104d1578063c415b95c146104db578063c54efb52146104f9578063d7bba41414610517576101f9565b8063a694fc3a116100e7578063a694fc3a1461045e578063a9e55de31461047a578063ae8ec59714610496578063b88a802f146104c7576101f9565b8063784d11b7146103ea5780638da5cb5b14610406578063965b13d914610424578063a42dce8014610442576101f9565b80634e55de9e1161019057806363803b231161015f57806363803b231461039c578063658b6729146103a6578063715018a6146103c45780637497211b146103ce576101f9565b80634e55de9e146103285780634f3bd4fc146103445780635d188192146103625780636358ec5714610380576101f9565b806327e3434e116101cc57806327e3434e146102a25780632bd1755a146102be578063326a2d91146102dc5780633660106e146102f8576101f9565b8063039af9eb146101fd57806316934fc4146102305780631ca6eafe14610268578063246d9fe814610284575b5f80fd5b61021760048036038101906102129190612835565b6105eb565b604051610227949392919061286f565b60405180910390f35b61024a6004803603810190610245919061290c565b610626565b60405161025f99989796959493929190612951565b60405180910390f35b610282600480360381019061027d9190612835565b610688565b005b61028c61069a565b60405161029991906129dc565b60405180910390f35b6102bc60048036038101906102b7919061290c565b61074b565b005b6102c661098e565b6040516102d391906129dc565b60405180910390f35b6102f660048036038101906102f19190612a1f565b610994565b005b610312600480360381019061030d919061290c565b610b1d565b60405161031f91906129dc565b60405180910390f35b610342600480360381019061033d9190612835565b610c11565b005b61034c610c23565b60405161035991906129dc565b60405180910390f35b61036a610c29565b60405161037791906129dc565b60405180910390f35b61039a60048036038101906103959190612a5d565b610c2f565b005b6103a4610e3e565b005b6103ae611225565b6040516103bb91906129dc565b60405180910390f35b6103cc611231565b005b6103e860048036038101906103e39190612835565b611244565b005b61040460048036038101906103ff9190612b0e565b61137b565b005b61040e6116e7565b60405161041b9190612b7a565b60405180910390f35b61042c61170f565b60405161043991906129dc565b60405180910390f35b61045c6004803603810190610457919061290c565b611715565b005b61047860048036038101906104739190612835565b6117ce565b005b610494600480360381019061048f9190612835565b611a4a565b005b6104b060048036038101906104ab919061290c565b611a5c565b6040516104be929190612b93565b60405180910390f35b6104cf611ba6565b005b6104d9611d83565b005b6104e3611ecb565b6040516104f09190612b7a565b60405180910390f35b610501611ef0565b60405161050e91906129dc565b60405180910390f35b610531600480360381019061052c9190612835565b611ef6565b005b61054d6004803603810190610548919061290c565b611f08565b60405161055a91906129dc565b60405180910390f35b61056b6121a1565b60405161057891906129dc565b60405180910390f35b6105896121a7565b6040516105969190612c15565b60405180910390f35b6105b960048036038101906105b4919061290c565b6121cc565b005b6105d560048036038101906105d09190612835565b612250565b6040516105e291906129dc565b60405180910390f35b600381815481106105fa575f80fd5b905f5260205f2090600402015f91509050805f0154908060010154908060020154908060030154905084565b600b602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806004015f9054906101000a900460ff1690806005015490806006015490806007015f9054906101000a900460ff16908060080154905089565b61069061233e565b8060078190555050565b5f805f90505b600c80549050811015610747575f600c82815481106106c2576106c1612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154836107379190612c88565b92505080806001019150506106a0565b5090565b61075361233e565b61075b6123c5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c090612d3b565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108249190612b7a565b602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108639190612d6d565b90505f81116108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90612de2565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610903929190612e00565b6020604051808303815f875af115801561091f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109439190612e3b565b610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990612eb0565b60405180910390fd5b5061098b612412565b50565b60055481565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f831180156109e65750805f01548311155b610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612f18565b60405180910390fd5b806004015f9054906101000a900460ff1615610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90612f80565b60405180910390fd5b5f81600801819055506001816004015f6101000a81548160ff02191690831515021790555082816006018190555081816007015f6101000a81548160ff0219169083151502179055504281600301819055503373ffffffffffffffffffffffffffffffffffffffff167f22c7c0b19a37bf9c61460705b825360f34412b1da1d2307bdf23227eee8daf6a8484604051610b10929190612b93565b60405180910390a2505050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f815f015103610bf6575f915050610c0c565b5f81602001519050610c0781612250565b925050505b919050565b610c1961233e565b8060088190555050565b60085481565b600a5481565b610c3761233e565b818310610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061300e565b60405180910390fd5b5f60405180608001604052808581526020018481526020018381526020015f81525090505f60038054905090505f5b600380549050811015610cf45760038181548110610cc957610cc8612c2e565b5b905f5260205f2090600402015f0154861015610ce757809150610cf4565b8080600101915050610ca8565b50600382908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f6001600380549050610d59919061302c565b90505b81811115610dec576003600182610d73919061302c565b81548110610d8457610d83612c2e565b5b905f5260205f20906004020160038281548110610da457610da3612c2e565b5b905f5260205f2090600402015f820154815f01556001820154816001015560028201548160020155600382015481600301559050508080610de49061305f565b915050610d5c565b508160038281548110610e0257610e01612c2e565b5b905f5260205f2090600402015f820151815f01556020820151816001015560408201518160020155606082015181600301559050505050505050565b610e466123c5565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff16610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd906130d0565b60405180910390fd5b5f816007015f9054906101000a900460ff16610ef457600754610ef8565b6008545b9050808260030154610f0a9190612c88565b421015610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390613138565b60405180910390fd5b5f826007015f9054906101000a900460ff16610f6a57600954610f6e565b600a545b90505f612710828560060154610f849190613156565b610f8e91906131c4565b90505f818560060154610fa1919061302c565b90508460060154855f015f828254610fb9919061302c565b925050819055505f856004015f6101000a81548160ff02191690831515021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611037929190612e00565b6020604051808303815f875af1158015611053573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612e3b565b6110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad9061323e565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611133929190612e00565b6020604051808303815f875af115801561114f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111739190612e3b565b6111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906132a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f4416ca74b4c9dd8d6070d91c267a6cf53734c0f343ced0ad02471ccb5417037e8660060154876007015f9054906101000a900460ff1660405161120e929190612b93565b60405180910390a25050505050611223612412565b565b5f600c80549050905090565b61123961233e565b6112425f61241b565b565b61124c61233e565b6003805490508110611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a9061330e565b60405180910390fd5b5f8190505b60016003805490506112aa919061302c565b8110156113335760036001826112c09190612c88565b815481106112d1576112d0612c2e565b5b905f5260205f209060040201600382815481106112f1576112f0612c2e565b5b905f5260205f2090600402015f820154815f01556001820154816001015560028201548160020155600382015481600301559050508080600101915050611298565b5060038054806113465761134561332c565b5b600190038181905f5260205f2090600402015f8082015f9055600182015f9055600282015f9055600382015f90555050905550565b61138361233e565b5f83116113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906133a3565b60405180910390fd5b600380549050828290501461140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140690613431565b60405180910390fd5b5f805b83839050811015611451578383828181106114305761142f612c2e565b5b90506020020135826114429190612c88565b91508080600101915050611412565b5060648114611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90613499565b60405180910390fd5b5f5b600c805490508110156115e4575f600c82815481106114b9576114b8612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f6114ed82611f08565b9050600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600801548161153b919061302c565b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206008015f8282546115899190612c88565b9250508190555042600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206005018190555050508080600101915050611497565b508360045f8282546115f69190612c88565b9250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b815260040161165b939291906134b7565b6020604051808303815f875af1158015611677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169b9190612e3b565b6116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d19061323e565b60405180910390fd5b4260058190555050505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b61171d61233e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178290613536565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117d66123c5565b5f8111611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f9061359e565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f82825461186a9190612c88565b9250508190555061187d815f01546124de565b81600101819055504281600201819055504281600301819055506118a0336125a2565b61190557600c33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61190d612644565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161196b939291906134b7565b6020604051808303815f875af1158015611987573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ab9190612e3b565b6119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061323e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90838360010154604051611a369291906135bc565b60405180910390a250611a47612412565b50565b611a5261233e565b80600a8190555050565b5f805f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090508060800151611b38575f809250925050611ba1565b5f8160e0015115611b5c576008548260600151611b559190612c88565b9050611b71565b6007548260600151611b6e9190612c88565b90505b804210611b89575f8260e00151935093505050611ba1565b4281611b95919061302c565b8260e001519350935050505b915091565b611bae6123c5565b5f611bb833611f08565b90505f8111611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf39061362d565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c58929190612e00565b6020604051808303815f875af1158015611c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c989190612e3b565b611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce9061323e565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090504281600501819055505f81600801819055503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724183604051611d6f91906129dc565b60405180910390a25050611d81612412565b565b611d8b6123c5565b5f611d9533611f08565b90505f8111611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090613695565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254611e2b9190612c88565b925050819055505f611e3f825f01546124de565b905081600101548114611e56578082600101819055505b611e5e612644565b5f82600801819055504282600501819055503373ffffffffffffffffffffffffffffffffffffffff167f8ce0a2fad3764c1fd039c26f784a2d7490f96db7928a834db2330abc1efd294484604051611eb691906129dc565b60405180910390a2505050611ec9612412565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b611efe61233e565b8060098190555050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f815f01511480611fe357505f600380549050145b15611ff1575f91505061219c565b5f808260a00151148061200957506005548260a00151105b612017578160a0015161201b565b6005545b90505f81421161202b575f612038565b8142612037919061302c565b5b905062093a8081111561204c5762093a8090505b5f670de0b6b3a764000062093a8083670de0b6b3a76400006004546120719190613156565b61207b9190613156565b61208591906131c4565b61208f91906131c4565b90505f606460038660200151815481106120ac576120ab612c2e565b5b905f5260205f20906004020160020154836120c79190613156565b6120d191906131c4565b90505f60038660200151815481106120ec576120eb612c2e565b5b905f5260205f209060040201600301540361210e575f9550505050505061219c565b5f600386602001518154811061212757612126612c2e565b5b905f5260205f20906004020160030154670de0b6b3a76400008361214b9190613156565b61215591906131c4565b90505f670de0b6b3a764000082885f01516121709190613156565b61217a91906131c4565b90505f8761010001518261218e9190612c88565b905080985050505050505050505b919050565b60075481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121d461233e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612244575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161223b9190612b7a565b60405180910390fd5b61224d8161241b565b50565b5f6003805490508210612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061330e565b60405180910390fd5b5f6064600384815481106122af576122ae612c2e565b5b905f5260205f209060040201600201546004546122cc9190613156565b6122d691906131c4565b90505f600384815481106122ed576122ec612c2e565b5b905f5260205f2090600402016003015490505f8103612310575f92505050612339565b8060646034846123209190613156565b61232a9190613156565b61233491906131c4565b925050505b919050565b6123466127f3565b73ffffffffffffffffffffffffffffffffffffffff166123646116e7565b73ffffffffffffffffffffffffffffffffffffffff16146123c3576123876127f3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016123ba9190612b7a565b60405180910390fd5b565b60025f5403612409576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612400906136fd565b60405180910390fd5b60025f81905550565b60015f81905550565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b600380549050811015612561576003818154811061250557612504612c2e565b5b905f5260205f2090600402015f0154831015801561254657506003818154811061253257612531612c2e565b5b905f5260205f209060040201600101548311155b15612554578091505061259d565b80806001019150506124e4565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125949061378b565b60405180910390fd5b919050565b5f805f90505b600c8054905081101561263a578273ffffffffffffffffffffffffffffffffffffffff16600c82815481106125e0576125df612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361262d57600191505061263f565b80806001019150506125a8565b505f90505b919050565b5f5b600380549050811015612688575f6003828154811061266857612667612c2e565b5b905f5260205f209060040201600301819055508080600101915050612646565b505f5b600c805490508110156127f0575f600c82815481106126ad576126ac612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f81602001519050815f0151600382815481106127bc576127bb612c2e565b5b905f5260205f2090600402016003015f8282546127d99190612c88565b92505081905550505050808060010191505061268b565b50565b5f33905090565b5f80fd5b5f80fd5b5f819050919050565b61281481612802565b811461281e575f80fd5b50565b5f8135905061282f8161280b565b92915050565b5f6020828403121561284a576128496127fa565b5b5f61285784828501612821565b91505092915050565b61286981612802565b82525050565b5f6080820190506128825f830187612860565b61288f6020830186612860565b61289c6040830185612860565b6128a96060830184612860565b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128db826128b2565b9050919050565b6128eb816128d1565b81146128f5575f80fd5b50565b5f81359050612906816128e2565b92915050565b5f60208284031215612921576129206127fa565b5b5f61292e848285016128f8565b91505092915050565b5f8115159050919050565b61294b81612937565b82525050565b5f610120820190506129655f83018c612860565b612972602083018b612860565b61297f604083018a612860565b61298c6060830189612860565b6129996080830188612942565b6129a660a0830187612860565b6129b360c0830186612860565b6129c060e0830185612942565b6129ce610100830184612860565b9a9950505050505050505050565b5f6020820190506129ef5f830184612860565b92915050565b6129fe81612937565b8114612a08575f80fd5b50565b5f81359050612a19816129f5565b92915050565b5f8060408385031215612a3557612a346127fa565b5b5f612a4285828601612821565b9250506020612a5385828601612a0b565b9150509250929050565b5f805f60608486031215612a7457612a736127fa565b5b5f612a8186828701612821565b9350506020612a9286828701612821565b9250506040612aa386828701612821565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ace57612acd612aad565b5b8235905067ffffffffffffffff811115612aeb57612aea612ab1565b5b602083019150836020820283011115612b0757612b06612ab5565b5b9250929050565b5f805f60408486031215612b2557612b246127fa565b5b5f612b3286828701612821565b935050602084013567ffffffffffffffff811115612b5357612b526127fe565b5b612b5f86828701612ab9565b92509250509250925092565b612b74816128d1565b82525050565b5f602082019050612b8d5f830184612b6b565b92915050565b5f604082019050612ba65f830185612860565b612bb36020830184612942565b9392505050565b5f819050919050565b5f612bdd612bd8612bd3846128b2565b612bba565b6128b2565b9050919050565b5f612bee82612bc3565b9050919050565b5f612bff82612be4565b9050919050565b612c0f81612bf5565b82525050565b5f602082019050612c285f830184612c06565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9282612802565b9150612c9d83612802565b9250828201905080821115612cb557612cb4612c5b565b5b92915050565b5f82825260208201905092915050565b7f43616e6e6f74207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d25602383612cbb565b9150612d3082612ccb565b604082019050919050565b5f6020820190508181035f830152612d5281612d19565b9050919050565b5f81519050612d678161280b565b92915050565b5f60208284031215612d8257612d816127fa565b5b5f612d8f84828501612d59565b91505092915050565b7f4e6f20746f6b656e7320746f207472616e7366657200000000000000000000005f82015250565b5f612dcc601583612cbb565b9150612dd782612d98565b602082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b5f604082019050612e135f830185612b6b565b612e206020830184612860565b9392505050565b5f81519050612e35816129f5565b92915050565b5f60208284031215612e5057612e4f6127fa565b5b5f612e5d84828501612e27565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f612e9a601583612cbb565b9150612ea582612e66565b602082019050919050565b5f6020820190508181035f830152612ec781612e8e565b9050919050565b7f496e76616c696420756e7374616b6520616d6f756e74000000000000000000005f82015250565b5f612f02601683612cbb565b9150612f0d82612ece565b602082019050919050565b5f6020820190508181035f830152612f2f81612ef6565b9050919050565b7f556e7374616b6520616c726561647920696e69746961746564000000000000005f82015250565b5f612f6a601983612cbb565b9150612f7582612f36565b602082019050919050565b5f6020820190508181035f830152612f9781612f5e565b9050919050565b7f6d696e56616c7565206d757374206265206c657373207468616e206d617856615f8201527f6c75650000000000000000000000000000000000000000000000000000000000602082015250565b5f612ff8602383612cbb565b915061300382612f9e565b604082019050919050565b5f6020820190508181035f83015261302581612fec565b9050919050565b5f61303682612802565b915061304183612802565b925082820390508181111561305957613058612c5b565b5b92915050565b5f61306982612802565b91505f820361307b5761307a612c5b565b5b600182039050919050565b7f556e7374616b65206e6f7420696e6974696174656400000000000000000000005f82015250565b5f6130ba601583612cbb565b91506130c582613086565b602082019050919050565b5f6020820190508181035f8301526130e7816130ae565b9050919050565b7f436f6f6c646f776e206e6f74206d6574000000000000000000000000000000005f82015250565b5f613122601083612cbb565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b9050919050565b5f61316082612802565b915061316b83612802565b925082820261317981612802565b915082820484148315176131905761318f612c5b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131ce82612802565b91506131d983612802565b9250826131e9576131e8613197565b5b828204905092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f613228600f83612cbb565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613290601383612cbb565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f496e76616c6964207469657220696e64657800000000000000000000000000005f82015250565b5f6132f8601283612cbb565b9150613303826132c4565b602082019050919050565b5f6020820190508181035f830152613325816132ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f61338d601d83612cbb565b915061339882613359565b602082019050919050565b5f6020820190508181035f8301526133ba81613381565b9050919050565b7f416c6c6f636174696f6e73206c656e677468206d757374206d617463682074695f8201527f657273206c656e67746800000000000000000000000000000000000000000000602082015250565b5f61341b602a83612cbb565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f546f74616c20616c6c6f636174696f6e206d75737420626520313030250000005f82015250565b5f613483601d83612cbb565b915061348e8261344f565b602082019050919050565b5f6020820190508181035f8301526134b081613477565b9050919050565b5f6060820190506134ca5f830186612b6b565b6134d76020830185612b6b565b6134e46040830184612860565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f613520600f83612cbb565b915061352b826134ec565b602082019050919050565b5f6020820190508181035f83015261354d81613514565b9050919050565b7f43616e6e6f74207374616b65203020746f6b656e7300000000000000000000005f82015250565b5f613588601583612cbb565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b5f6040820190506135cf5f830185612860565b6135dc6020830184612860565b9392505050565b7f4e6f207265776172647320746f20636c61696d000000000000000000000000005f82015250565b5f613617601383612cbb565b9150613622826135e3565b602082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f4e6f207265776172647320746f20636f6d706f756e64000000000000000000005f82015250565b5f61367f601683612cbb565b915061368a8261364b565b602082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6136e7601f83612cbb565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f416d6f756e7420646f6573206e6f74207175616c69667920666f7220616e79205f8201527f7469657200000000000000000000000000000000000000000000000000000000602082015250565b5f613775602483612cbb565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b905091905056fea264697066735822122046d26aa006f62c8cdc51223bece0b4991723ff247a2f35ebe3c7beb816934c6964736f6c63430008180033000000000000000000000000613577bfea8ba6571f6b7a86716d04c80a3fbeb4000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101f9575f3560e01c8063784d11b711610118578063c00c9f7f116100ab578063d82e39621161007a578063d82e396214610533578063e70bc31714610563578063ede4140b14610581578063f2fde38b1461059f578063f57a225a146105bb576101f9565b8063c00c9f7f146104d1578063c415b95c146104db578063c54efb52146104f9578063d7bba41414610517576101f9565b8063a694fc3a116100e7578063a694fc3a1461045e578063a9e55de31461047a578063ae8ec59714610496578063b88a802f146104c7576101f9565b8063784d11b7146103ea5780638da5cb5b14610406578063965b13d914610424578063a42dce8014610442576101f9565b80634e55de9e1161019057806363803b231161015f57806363803b231461039c578063658b6729146103a6578063715018a6146103c45780637497211b146103ce576101f9565b80634e55de9e146103285780634f3bd4fc146103445780635d188192146103625780636358ec5714610380576101f9565b806327e3434e116101cc57806327e3434e146102a25780632bd1755a146102be578063326a2d91146102dc5780633660106e146102f8576101f9565b8063039af9eb146101fd57806316934fc4146102305780631ca6eafe14610268578063246d9fe814610284575b5f80fd5b61021760048036038101906102129190612835565b6105eb565b604051610227949392919061286f565b60405180910390f35b61024a6004803603810190610245919061290c565b610626565b60405161025f99989796959493929190612951565b60405180910390f35b610282600480360381019061027d9190612835565b610688565b005b61028c61069a565b60405161029991906129dc565b60405180910390f35b6102bc60048036038101906102b7919061290c565b61074b565b005b6102c661098e565b6040516102d391906129dc565b60405180910390f35b6102f660048036038101906102f19190612a1f565b610994565b005b610312600480360381019061030d919061290c565b610b1d565b60405161031f91906129dc565b60405180910390f35b610342600480360381019061033d9190612835565b610c11565b005b61034c610c23565b60405161035991906129dc565b60405180910390f35b61036a610c29565b60405161037791906129dc565b60405180910390f35b61039a60048036038101906103959190612a5d565b610c2f565b005b6103a4610e3e565b005b6103ae611225565b6040516103bb91906129dc565b60405180910390f35b6103cc611231565b005b6103e860048036038101906103e39190612835565b611244565b005b61040460048036038101906103ff9190612b0e565b61137b565b005b61040e6116e7565b60405161041b9190612b7a565b60405180910390f35b61042c61170f565b60405161043991906129dc565b60405180910390f35b61045c6004803603810190610457919061290c565b611715565b005b61047860048036038101906104739190612835565b6117ce565b005b610494600480360381019061048f9190612835565b611a4a565b005b6104b060048036038101906104ab919061290c565b611a5c565b6040516104be929190612b93565b60405180910390f35b6104cf611ba6565b005b6104d9611d83565b005b6104e3611ecb565b6040516104f09190612b7a565b60405180910390f35b610501611ef0565b60405161050e91906129dc565b60405180910390f35b610531600480360381019061052c9190612835565b611ef6565b005b61054d6004803603810190610548919061290c565b611f08565b60405161055a91906129dc565b60405180910390f35b61056b6121a1565b60405161057891906129dc565b60405180910390f35b6105896121a7565b6040516105969190612c15565b60405180910390f35b6105b960048036038101906105b4919061290c565b6121cc565b005b6105d560048036038101906105d09190612835565b612250565b6040516105e291906129dc565b60405180910390f35b600381815481106105fa575f80fd5b905f5260205f2090600402015f91509050805f0154908060010154908060020154908060030154905084565b600b602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806004015f9054906101000a900460ff1690806005015490806006015490806007015f9054906101000a900460ff16908060080154905089565b61069061233e565b8060078190555050565b5f805f90505b600c80549050811015610747575f600c82815481106106c2576106c1612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f0154836107379190612c88565b92505080806001019150506106a0565b5090565b61075361233e565b61075b6123c5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c090612d3b565b60405180910390fd5b5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108249190612b7a565b602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108639190612d6d565b90505f81116108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90612de2565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610903929190612e00565b6020604051808303815f875af115801561091f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109439190612e3b565b610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990612eb0565b60405180910390fd5b5061098b612412565b50565b60055481565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f831180156109e65750805f01548311155b610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612f18565b60405180910390fd5b806004015f9054906101000a900460ff1615610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d90612f80565b60405180910390fd5b5f81600801819055506001816004015f6101000a81548160ff02191690831515021790555082816006018190555081816007015f6101000a81548160ff0219169083151502179055504281600301819055503373ffffffffffffffffffffffffffffffffffffffff167f22c7c0b19a37bf9c61460705b825360f34412b1da1d2307bdf23227eee8daf6a8484604051610b10929190612b93565b60405180910390a2505050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f815f015103610bf6575f915050610c0c565b5f81602001519050610c0781612250565b925050505b919050565b610c1961233e565b8060088190555050565b60085481565b600a5481565b610c3761233e565b818310610c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c709061300e565b60405180910390fd5b5f60405180608001604052808581526020018481526020018381526020015f81525090505f60038054905090505f5b600380549050811015610cf45760038181548110610cc957610cc8612c2e565b5b905f5260205f2090600402015f0154861015610ce757809150610cf4565b8080600101915050610ca8565b50600382908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015560208201518160010155604082015181600201556060820151816003015550505f6001600380549050610d59919061302c565b90505b81811115610dec576003600182610d73919061302c565b81548110610d8457610d83612c2e565b5b905f5260205f20906004020160038281548110610da457610da3612c2e565b5b905f5260205f2090600402015f820154815f01556001820154816001015560028201548160020155600382015481600301559050508080610de49061305f565b915050610d5c565b508160038281548110610e0257610e01612c2e565b5b905f5260205f2090600402015f820151815f01556020820151816001015560408201518160020155606082015181600301559050505050505050565b610e466123c5565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff16610ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecd906130d0565b60405180910390fd5b5f816007015f9054906101000a900460ff16610ef457600754610ef8565b6008545b9050808260030154610f0a9190612c88565b421015610f4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4390613138565b60405180910390fd5b5f826007015f9054906101000a900460ff16610f6a57600954610f6e565b600a545b90505f612710828560060154610f849190613156565b610f8e91906131c4565b90505f818560060154610fa1919061302c565b90508460060154855f015f828254610fb9919061302c565b925050819055505f856004015f6101000a81548160ff02191690831515021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611037929190612e00565b6020604051808303815f875af1158015611053573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612e3b565b6110b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ad9061323e565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401611133929190612e00565b6020604051808303815f875af115801561114f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111739190612e3b565b6111b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a9906132a6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f4416ca74b4c9dd8d6070d91c267a6cf53734c0f343ced0ad02471ccb5417037e8660060154876007015f9054906101000a900460ff1660405161120e929190612b93565b60405180910390a25050505050611223612412565b565b5f600c80549050905090565b61123961233e565b6112425f61241b565b565b61124c61233e565b6003805490508110611293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128a9061330e565b60405180910390fd5b5f8190505b60016003805490506112aa919061302c565b8110156113335760036001826112c09190612c88565b815481106112d1576112d0612c2e565b5b905f5260205f209060040201600382815481106112f1576112f0612c2e565b5b905f5260205f2090600402015f820154815f01556001820154816001015560028201548160020155600382015481600301559050508080600101915050611298565b5060038054806113465761134561332c565b5b600190038181905f5260205f2090600402015f8082015f9055600182015f9055600282015f9055600382015f90555050905550565b61138361233e565b5f83116113c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bc906133a3565b60405180910390fd5b600380549050828290501461140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140690613431565b60405180910390fd5b5f805b83839050811015611451578383828181106114305761142f612c2e565b5b90506020020135826114429190612c88565b91508080600101915050611412565b5060648114611495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148c90613499565b60405180910390fd5b5f5b600c805490508110156115e4575f600c82815481106114b9576114b8612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f6114ed82611f08565b9050600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600801548161153b919061302c565b600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206008015f8282546115899190612c88565b9250508190555042600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206005018190555050508080600101915050611497565b508360045f8282546115f69190612c88565b9250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b815260040161165b939291906134b7565b6020604051808303815f875af1158015611677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169b9190612e3b565b6116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d19061323e565b60405180910390fd5b4260058190555050505050565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60045481565b61171d61233e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361178b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178290613536565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117d66123c5565b5f8111611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180f9061359e565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f82825461186a9190612c88565b9250508190555061187d815f01546124de565b81600101819055504281600201819055504281600301819055506118a0336125a2565b61190557600c33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61190d612644565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161196b939291906134b7565b6020604051808303815f875af1158015611987573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ab9190612e3b565b6119ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e19061323e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90838360010154604051611a369291906135bc565b60405180910390a250611a47612412565b50565b611a5261233e565b80600a8190555050565b5f805f600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090508060800151611b38575f809250925050611ba1565b5f8160e0015115611b5c576008548260600151611b559190612c88565b9050611b71565b6007548260600151611b6e9190612c88565b90505b804210611b89575f8260e00151935093505050611ba1565b4281611b95919061302c565b8260e001519350935050505b915091565b611bae6123c5565b5f611bb833611f08565b90505f8111611bfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf39061362d565b60405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611c58929190612e00565b6020604051808303815f875af1158015611c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c989190612e3b565b611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce9061323e565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090504281600501819055505f81600801819055503373ffffffffffffffffffffffffffffffffffffffff167f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724183604051611d6f91906129dc565b60405180910390a25050611d81612412565b565b611d8b6123c5565b5f611d9533611f08565b90505f8111611dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd090613695565b60405180910390fd5b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254611e2b9190612c88565b925050819055505f611e3f825f01546124de565b905081600101548114611e56578082600101819055505b611e5e612644565b5f82600801819055504282600501819055503373ffffffffffffffffffffffffffffffffffffffff167f8ce0a2fad3764c1fd039c26f784a2d7490f96db7928a834db2330abc1efd294484604051611eb691906129dc565b60405180910390a2505050611ec9612412565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b611efe61233e565b8060098190555050565b5f80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f815f01511480611fe357505f600380549050145b15611ff1575f91505061219c565b5f808260a00151148061200957506005548260a00151105b612017578160a0015161201b565b6005545b90505f81421161202b575f612038565b8142612037919061302c565b5b905062093a8081111561204c5762093a8090505b5f670de0b6b3a764000062093a8083670de0b6b3a76400006004546120719190613156565b61207b9190613156565b61208591906131c4565b61208f91906131c4565b90505f606460038660200151815481106120ac576120ab612c2e565b5b905f5260205f20906004020160020154836120c79190613156565b6120d191906131c4565b90505f60038660200151815481106120ec576120eb612c2e565b5b905f5260205f209060040201600301540361210e575f9550505050505061219c565b5f600386602001518154811061212757612126612c2e565b5b905f5260205f20906004020160030154670de0b6b3a76400008361214b9190613156565b61215591906131c4565b90505f670de0b6b3a764000082885f01516121709190613156565b61217a91906131c4565b90505f8761010001518261218e9190612c88565b905080985050505050505050505b919050565b60075481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121d461233e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612244575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161223b9190612b7a565b60405180910390fd5b61224d8161241b565b50565b5f6003805490508210612298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228f9061330e565b60405180910390fd5b5f6064600384815481106122af576122ae612c2e565b5b905f5260205f209060040201600201546004546122cc9190613156565b6122d691906131c4565b90505f600384815481106122ed576122ec612c2e565b5b905f5260205f2090600402016003015490505f8103612310575f92505050612339565b8060646034846123209190613156565b61232a9190613156565b61233491906131c4565b925050505b919050565b6123466127f3565b73ffffffffffffffffffffffffffffffffffffffff166123646116e7565b73ffffffffffffffffffffffffffffffffffffffff16146123c3576123876127f3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016123ba9190612b7a565b60405180910390fd5b565b60025f5403612409576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612400906136fd565b60405180910390fd5b60025f81905550565b60015f81905550565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f90505b600380549050811015612561576003818154811061250557612504612c2e565b5b905f5260205f2090600402015f0154831015801561254657506003818154811061253257612531612c2e565b5b905f5260205f209060040201600101548311155b15612554578091505061259d565b80806001019150506124e4565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125949061378b565b60405180910390fd5b919050565b5f805f90505b600c8054905081101561263a578273ffffffffffffffffffffffffffffffffffffffff16600c82815481106125e0576125df612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361262d57600191505061263f565b80806001019150506125a8565b505f90505b919050565b5f5b600380549050811015612688575f6003828154811061266857612667612c2e565b5b905f5260205f209060040201600301819055508080600101915050612646565b505f5b600c805490508110156127f0575f600c82815481106126ad576126ac612c2e565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581526020016005820154815260200160068201548152602001600782015f9054906101000a900460ff1615151515815260200160088201548152505090505f81602001519050815f0151600382815481106127bc576127bb612c2e565b5b905f5260205f2090600402016003015f8282546127d99190612c88565b92505081905550505050808060010191505061268b565b50565b5f33905090565b5f80fd5b5f80fd5b5f819050919050565b61281481612802565b811461281e575f80fd5b50565b5f8135905061282f8161280b565b92915050565b5f6020828403121561284a576128496127fa565b5b5f61285784828501612821565b91505092915050565b61286981612802565b82525050565b5f6080820190506128825f830187612860565b61288f6020830186612860565b61289c6040830185612860565b6128a96060830184612860565b95945050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128db826128b2565b9050919050565b6128eb816128d1565b81146128f5575f80fd5b50565b5f81359050612906816128e2565b92915050565b5f60208284031215612921576129206127fa565b5b5f61292e848285016128f8565b91505092915050565b5f8115159050919050565b61294b81612937565b82525050565b5f610120820190506129655f83018c612860565b612972602083018b612860565b61297f604083018a612860565b61298c6060830189612860565b6129996080830188612942565b6129a660a0830187612860565b6129b360c0830186612860565b6129c060e0830185612942565b6129ce610100830184612860565b9a9950505050505050505050565b5f6020820190506129ef5f830184612860565b92915050565b6129fe81612937565b8114612a08575f80fd5b50565b5f81359050612a19816129f5565b92915050565b5f8060408385031215612a3557612a346127fa565b5b5f612a4285828601612821565b9250506020612a5385828601612a0b565b9150509250929050565b5f805f60608486031215612a7457612a736127fa565b5b5f612a8186828701612821565b9350506020612a9286828701612821565b9250506040612aa386828701612821565b9150509250925092565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612ace57612acd612aad565b5b8235905067ffffffffffffffff811115612aeb57612aea612ab1565b5b602083019150836020820283011115612b0757612b06612ab5565b5b9250929050565b5f805f60408486031215612b2557612b246127fa565b5b5f612b3286828701612821565b935050602084013567ffffffffffffffff811115612b5357612b526127fe565b5b612b5f86828701612ab9565b92509250509250925092565b612b74816128d1565b82525050565b5f602082019050612b8d5f830184612b6b565b92915050565b5f604082019050612ba65f830185612860565b612bb36020830184612942565b9392505050565b5f819050919050565b5f612bdd612bd8612bd3846128b2565b612bba565b6128b2565b9050919050565b5f612bee82612bc3565b9050919050565b5f612bff82612be4565b9050919050565b612c0f81612bf5565b82525050565b5f602082019050612c285f830184612c06565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612c9282612802565b9150612c9d83612802565b9250828201905080821115612cb557612cb4612c5b565b5b92915050565b5f82825260208201905092915050565b7f43616e6e6f74207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d25602383612cbb565b9150612d3082612ccb565b604082019050919050565b5f6020820190508181035f830152612d5281612d19565b9050919050565b5f81519050612d678161280b565b92915050565b5f60208284031215612d8257612d816127fa565b5b5f612d8f84828501612d59565b91505092915050565b7f4e6f20746f6b656e7320746f207472616e7366657200000000000000000000005f82015250565b5f612dcc601583612cbb565b9150612dd782612d98565b602082019050919050565b5f6020820190508181035f830152612df981612dc0565b9050919050565b5f604082019050612e135f830185612b6b565b612e206020830184612860565b9392505050565b5f81519050612e35816129f5565b92915050565b5f60208284031215612e5057612e4f6127fa565b5b5f612e5d84828501612e27565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f612e9a601583612cbb565b9150612ea582612e66565b602082019050919050565b5f6020820190508181035f830152612ec781612e8e565b9050919050565b7f496e76616c696420756e7374616b6520616d6f756e74000000000000000000005f82015250565b5f612f02601683612cbb565b9150612f0d82612ece565b602082019050919050565b5f6020820190508181035f830152612f2f81612ef6565b9050919050565b7f556e7374616b6520616c726561647920696e69746961746564000000000000005f82015250565b5f612f6a601983612cbb565b9150612f7582612f36565b602082019050919050565b5f6020820190508181035f830152612f9781612f5e565b9050919050565b7f6d696e56616c7565206d757374206265206c657373207468616e206d617856615f8201527f6c75650000000000000000000000000000000000000000000000000000000000602082015250565b5f612ff8602383612cbb565b915061300382612f9e565b604082019050919050565b5f6020820190508181035f83015261302581612fec565b9050919050565b5f61303682612802565b915061304183612802565b925082820390508181111561305957613058612c5b565b5b92915050565b5f61306982612802565b91505f820361307b5761307a612c5b565b5b600182039050919050565b7f556e7374616b65206e6f7420696e6974696174656400000000000000000000005f82015250565b5f6130ba601583612cbb565b91506130c582613086565b602082019050919050565b5f6020820190508181035f8301526130e7816130ae565b9050919050565b7f436f6f6c646f776e206e6f74206d6574000000000000000000000000000000005f82015250565b5f613122601083612cbb565b915061312d826130ee565b602082019050919050565b5f6020820190508181035f83015261314f81613116565b9050919050565b5f61316082612802565b915061316b83612802565b925082820261317981612802565b915082820484148315176131905761318f612c5b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131ce82612802565b91506131d983612802565b9250826131e9576131e8613197565b5b828204905092915050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f613228600f83612cbb565b9150613233826131f4565b602082019050919050565b5f6020820190508181035f8301526132558161321c565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f613290601383612cbb565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f496e76616c6964207469657220696e64657800000000000000000000000000005f82015250565b5f6132f8601283612cbb565b9150613303826132c4565b602082019050919050565b5f6020820190508181035f830152613325816132ec565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f61338d601d83612cbb565b915061339882613359565b602082019050919050565b5f6020820190508181035f8301526133ba81613381565b9050919050565b7f416c6c6f636174696f6e73206c656e677468206d757374206d617463682074695f8201527f657273206c656e67746800000000000000000000000000000000000000000000602082015250565b5f61341b602a83612cbb565b9150613426826133c1565b604082019050919050565b5f6020820190508181035f8301526134488161340f565b9050919050565b7f546f74616c20616c6c6f636174696f6e206d75737420626520313030250000005f82015250565b5f613483601d83612cbb565b915061348e8261344f565b602082019050919050565b5f6020820190508181035f8301526134b081613477565b9050919050565b5f6060820190506134ca5f830186612b6b565b6134d76020830185612b6b565b6134e46040830184612860565b949350505050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f613520600f83612cbb565b915061352b826134ec565b602082019050919050565b5f6020820190508181035f83015261354d81613514565b9050919050565b7f43616e6e6f74207374616b65203020746f6b656e7300000000000000000000005f82015250565b5f613588601583612cbb565b915061359382613554565b602082019050919050565b5f6020820190508181035f8301526135b58161357c565b9050919050565b5f6040820190506135cf5f830185612860565b6135dc6020830184612860565b9392505050565b7f4e6f207265776172647320746f20636c61696d000000000000000000000000005f82015250565b5f613617601383612cbb565b9150613622826135e3565b602082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f4e6f207265776172647320746f20636f6d706f756e64000000000000000000005f82015250565b5f61367f601683612cbb565b915061368a8261364b565b602082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6136e7601f83612cbb565b91506136f2826136b3565b602082019050919050565b5f6020820190508181035f830152613714816136db565b9050919050565b7f416d6f756e7420646f6573206e6f74207175616c69667920666f7220616e79205f8201527f7469657200000000000000000000000000000000000000000000000000000000602082015250565b5f613775602483612cbb565b91506137808261371b565b604082019050919050565b5f6020820190508181035f8301526137a281613769565b905091905056fea264697066735822122046d26aa006f62c8cdc51223bece0b4991723ff247a2f35ebe3c7beb816934c6964736f6c63430008180033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000613577bfea8ba6571f6b7a86716d04c80a3fbeb4000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b
-----Decoded View---------------
Arg [0] : _lndryTokenAddress (address): 0x613577bFEa8Ba6571F6b7a86716D04c80a3FbEb4
Arg [1] : _initialOwner (address): 0xf572aD8D1049163D527cBbccc7045F0B39346C1b
Arg [2] : _feeCollector (address): 0xf572aD8D1049163D527cBbccc7045F0B39346C1b
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000613577bfea8ba6571f6b7a86716d04c80a3fbeb4
Arg [1] : 000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b
Arg [2] : 000000000000000000000000f572ad8d1049163d527cbbccc7045f0b39346c1b
Deployed Bytecode Sourcemap
10389:14568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11130:19;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;11549:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;12355:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23638:256;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14168:407;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11194:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15323:630;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24457:495;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12489:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11378:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11489:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19750:845;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16128:1102;;;:::i;:::-;;23530:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3361:103;;;:::i;:::-;;20600:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12919:1242;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2686:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11156:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15955:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14581:740;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12771:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19026:721;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;18575:447;;;:::i;:::-;;22700:825;;;:::i;:::-;;11287:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11428:48;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12617:146;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17234:1337;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11325:46;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10446:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3619:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23900:553;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11130:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11549:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12355:126::-;2572:13;:11;:13::i;:::-;12464:9:::1;12439:22;:34;;;;12355:126:::0;:::o;23638:256::-;23691:19;23728:9;23740:1;23728:13;;23723:164;23747:7;:14;;;;23743:1;:18;23723:164;;;23783:21;23807:7;23815:1;23807:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23783:34;;23847:6;:21;23854:13;23847:21;;;;;;;;;;;;;;;:28;;;23832:43;;;;;:::i;:::-;;;23768:119;23763:3;;;;;;;23723:164;;;;23638:256;:::o;14168:407::-;2572:13;:11;:13::i;:::-;6542:21:::1;:19;:21::i;:::-;14284:1:::2;14270:16;;:2;:16;;::::0;14262:64:::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;14337:23;14363:10;;;;;;;;;;;:20;;;14392:4;14363:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14337:61;;14435:1;14417:15;:19;14409:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:10;;;;;;;;;;;:19;;;14511:2;14515:15;14491:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14483:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14251:324;6586:20:::1;:18;:20::i;:::-;14168:407:::0;:::o;11194:35::-;;;;:::o;15323:630::-;15400:23;15426:6;:18;15433:10;15426:18;;;;;;;;;;;;;;;15400:44;;15469:1;15459:7;:11;:42;;;;;15485:9;:16;;;15474:7;:27;;15459:42;15451:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15544:9;:26;;;;;;;;;;;;15543:27;15535:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15706:1;15677:9;:26;;:30;;;;15745:4;15716:9;:26;;;:33;;;;;;;;;;;;;;;;;;15784:7;15756:9;:25;;:35;;;;15822:12;15798:9;:21;;;:36;;;;;;;;;;;;;;;;;;15869:15;15841:9;:25;;:43;;;;15915:10;15898:51;;;15927:7;15936:12;15898:51;;;;;;;:::i;:::-;;;;;;;;15393:560;15323:630;;:::o;24457:495::-;24512:7;24532:22;24557:6;:12;24564:4;24557:12;;;;;;;;;;;;;;;24532:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24654:1;24634:9;:16;;;:21;24630:98;;24679:1;24672:8;;;;;24630:98;24805:17;24825:9;:19;;;24805:39;;24923:21;24934:9;24923:10;:21::i;:::-;24916:28;;;;24457:495;;;;:::o;12489:120::-;2572:13;:11;:13::i;:::-;12592:9:::1;12570:19;:31;;;;12489:120:::0;:::o;11378:43::-;;;;:::o;11489:45::-;;;;:::o;19750:845::-;2572:13;:11;:13::i;:::-;19872:9:::1;19860;:21;19852:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;19928:19;19950:132;;;;;;;;19976:9;19950:132;;;;20006:9;19950:132;;;;20038:11;19950:132;;;;20073:1;19950:132;;::::0;19928:154:::1;;20148:16;20167:5;:12;;;;20148:31;;20191:9;20186:155;20210:5;:12;;;;20206:1;:16;20186:155;;;20256:5;20262:1;20256:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;20244:9;:29;20240:94;;;20301:1;20290:12;;20317:5;;20240:94;20224:3;;;;;;;20186:155;;;;20393:5;20404:7;20393:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20469:9;20496:1;20481:5;:12;;;;:16;;;;:::i;:::-;20469:28;;20464:96;20503:8;20499:1;:12;20464:96;;;20540:5;20550:1;20546;:5;;;;:::i;:::-;20540:12;;;;;;;;:::i;:::-;;;;;;;;;;;;20529:5;20535:1;20529:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20513:3;;;;;:::i;:::-;;;;20464:96;;;;20584:7;20566:5;20572:8;20566:15;;;;;;;;:::i;:::-;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19845:750;;19750:845:::0;;;:::o;16128:1102::-;6542:21;:19;:21::i;:::-;16184:23:::1;16210:6;:18;16217:10;16210:18;;;;;;;;;;;;;;;16184:44;;16243:9;:26;;;;;;;;;;;;16235:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16302:16;16321:9;:21;;;;;;;;;;;;:68;;16367:22;;16321:68;;;16345:19;;16321:68;16302:87;;16451:8;16423:9;:25;;;:36;;;;:::i;:::-;16404:15;:55;;16396:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16489:21;16513:9;:21;;;;;;;;;;;;:78;;16564:27;;16513:78;;;16537:24;;16513:78;16489:102;;16598:11;16658:5;16641:13;16613:9;:25;;;:41;;;;:::i;:::-;16612:51;;;;:::i;:::-;16598:65;;16670:22;16723:3;16695:9;:25;;;:31;;;;:::i;:::-;16670:56;;16755:9;:25;;;16735:9;:16;;;:45;;;;;;;:::i;:::-;;;;;;;;16846:5;16817:9;:26;;;:34;;;;;;;;;;;;;;;;;;16950:10;;;;;;;;;;;:19;;;16970:10;16982:14;16950:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16942:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17080:10;;;;;;;;;;;:19;;;17100:12;;;;;;;;;;;17114:3;17080:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17072:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17165:10;17156:70;;;17177:9;:25;;;17204:9;:21;;;;;;;;;;;;17156:70;;;;;;;:::i;:::-;;;;;;;;16177:1053;;;;;6586:20:::0;:18;:20::i;:::-;16128:1102::o;23530:100::-;23581:7;23608;:14;;;;23601:21;;23530:100;:::o;3361:103::-;2572:13;:11;:13::i;:::-;3426:30:::1;3453:1;3426:18;:30::i;:::-;3361:103::o:0;20600:277::-;2572:13;:11;:13::i;:::-;20677:5:::1;:12;;;;20669:5;:20;20661:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;20726:9;20738:5;20726:17;;20721:93;20764:1;20749:5;:12;;;;:16;;;;:::i;:::-;20745:1;:20;20721:93;;;20794:5;20804:1;20800;:5;;;;:::i;:::-;20794:12;;;;;;;;:::i;:::-;;;;;;;;;;;;20783:5;20789:1;20783:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20767:3;;;;;;;20721:93;;;;20820:5;:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;20600:277:::0;:::o;12919:1242::-;2572:13;:11;:13::i;:::-;13037:1:::1;13027:7;:11;13019:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13110:5;:12;;;;13087;;:19;;:35;13079:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;13178:23;13217:9:::0;13212:103:::1;13236:12;;:19;;13232:1;:23;13212:103;;;13292:12;;13305:1;13292:15;;;;;;;:::i;:::-;;;;;;;;13273:34;;;;;:::i;:::-;;;13257:3;;;;;;;13212:103;;;;13348:3;13329:15;:22;13321:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13503:9;13499:403;13522:7;:14;;;;13518:1;:18;13499:403;;;13554:14;13571:7;13579:1;13571:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13554:27;;13592:21;13616:23;13632:6;13616:15;:23::i;:::-;13592:47;;13737:6;:14;13744:6;13737:14;;;;;;;;;;;;;;;:31;;;13721:13;:47;;;;:::i;:::-;13686:6;:14;13693:6;13686:14;;;;;;;;;;;;;;;:31;;;:82;;;;;;;:::i;:::-;;;;;;;;13845:15;13807:6;:14;13814:6;13807:14;;;;;;;;;;;;;;;:35;;:53;;;;13543:359;;13538:3;;;;;;;13499:403;;;;13930:7;13910:16;;:27;;;;;;;:::i;:::-;;;;;;;;13991:10;;;;;;;;;;;:23;;;14015:10;14035:4;14042:7;13991:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13983:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;14102:15;14079:20;:38;;;;13012:1149;12919:1242:::0;;;:::o;2686:87::-;2732:7;2759:6;;;;;;;;;;;2752:13;;2686:87;:::o;11156:31::-;;;;:::o;15955:168::-;2572:13;:11;:13::i;:::-;16062:1:::1;16037:27;;:13;:27;;::::0;16029:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16106:13;16091:12;;:28;;;;;;;;;;;;;;;;;;15955:168:::0;:::o;14581:740::-;6542:21;:19;:21::i;:::-;14668:1:::1;14658:7;:11;14650:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;14710:23;14736:6;:18;14743:10;14736:18;;;;;;;;;;;;;;;14710:44;;14789:7;14769:9;:16;;;:27;;;;;;;:::i;:::-;;;;;;;;14833:31;14847:9;:16;;;14833:13;:31::i;:::-;14811:9;:19;;:53;;;;14901:15;14879:9;:19;;:37;;;;14959:15;14931:9;:25;;:43;;;;15018:20;15027:10;15018:8;:20::i;:::-;15013:86;;15059:7;15072:10;15059:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15013:86;15113:24;:22;:24::i;:::-;15162:10;;;;;;;;;;;:23;;;15186:10;15206:4;15213:7;15162:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15154:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:10;15261:48;;;15280:7;15289:9;:19;;;15261:48;;;;;;;:::i;:::-;;;;;;;;14635:686;6586:20:::0;:18;:20::i;:::-;14581:740;:::o;12771:140::-;2572:13;:11;:13::i;:::-;12889:14:::1;12862:24;:41;;;;12771:140:::0;:::o;19026:721::-;19094:16;19112:18;19139:22;19164:6;:13;19171:5;19164:13;;;;;;;;;;;;;;;19139:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19189:9;:26;;;19184:109;;19236:1;19239:5;19228:17;;;;;;;19184:109;19301:19;19331:9;:21;;;19327:196;;;19407:19;;19379:9;:25;;;:47;;;;:::i;:::-;19365:61;;19327:196;;;19493:22;;19465:9;:25;;;:50;;;;:::i;:::-;19451:64;;19327:196;19554:11;19535:15;:30;19531:110;;19586:1;19589:9;:21;;;19578:33;;;;;;;;19531:110;19671:15;19657:11;:29;;;;:::i;:::-;19688:9;:21;;;19649:61;;;;;;19026:721;;;;:::o;18575:447::-;6542:21;:19;:21::i;:::-;18627:14:::1;18644:27;18660:10;18644:15;:27::i;:::-;18627:44;;18695:1;18686:6;:10;18678:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18737:10;;;;;;;;;;;:19;;;18757:10;18769:6;18737:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18729:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18803:23;18829:6;:18;18836:10;18829:18;;;;;;;;;;;;;;;18803:44;;18887:15;18854:9;:30;;:48;;;;18938:1;18909:9;:26;;:30;;;;18999:10;18985:33;;;19011:6;18985:33;;;;;;:::i;:::-;;;;;;;;18620:402;;6586:20:::0;:18;:20::i;:::-;18575:447::o;22700:825::-;6542:21;:19;:21::i;:::-;22756:14:::1;22773:27;22789:10;22773:15;:27::i;:::-;22756:44;;22824:1;22815:6;:10;22807:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22861:23;22887:6;:18;22894:10;22887:18;;;;;;;;;;;;;;;22861:44;;22932:6;22912:9;:16;;;:26;;;;;;;:::i;:::-;;;;;;;;23050:20;23073:31;23087:9;:16;;;23073:13;:31::i;:::-;23050:54;;23131:9;:19;;;23115:12;:35;23111:138;;23185:12;23163:9;:19;;:34;;;;23111:138;23257:24;:22;:24::i;:::-;23384:1;23355:9;:26;;:30;;;;23457:15;23424:9;:30;;:48;;;;23502:10;23484:37;;;23514:6;23484:37;;;;;;:::i;:::-;;;;;;;;22749:776;;;6586:20:::0;:18;:20::i;:::-;22700:825::o;11287:27::-;;;;;;;;;;;;;:::o;11428:48::-;;;;:::o;12617:146::-;2572:13;:11;:13::i;:::-;12741:14:::1;12711:27;:44;;;;12617:146:::0;:::o;17234:1337::-;17295:7;17311:22;17336:6;:13;17343:5;17336:13;;;;;;;;;;;;;;;17311:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17384:1;17364:9;:16;;;:21;:42;;;;17405:1;17389:5;:12;;;;:17;17364:42;17360:75;;;17426:1;17419:8;;;;;17360:75;17443:22;17503:1;17469:9;:30;;;:35;:92;;;;17541:20;;17508:9;:30;;;:53;17469:92;17468:150;;17588:9;:30;;;17468:150;;;17565:20;;17468:150;17443:175;;17625:19;17665:14;17647:15;:32;:71;;17717:1;17647:71;;;17700:14;17682:15;:32;;;;:::i;:::-;17647:71;17625:93;;17745:6;17731:11;:20;17727:65;;;17778:6;17764:20;;17727:65;17886:34;11280:4;17978:6;17962:11;11280:4;17924:16;;:35;;;;:::i;:::-;:49;;;;:::i;:::-;17923:62;;;;:::i;:::-;:81;;;;:::i;:::-;17886:118;;18013:18;18103:3;18063:5;18069:9;:19;;;18063:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:37;;;18034:26;:66;;;;:::i;:::-;:72;;;;:::i;:::-;18013:93;;18161:1;18119:5;18125:9;:19;;;18119:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;:43;18115:104;;18182:1;18175:8;;;;;;;;;18115:104;18227:22;18286:5;18292:9;:19;;;18286:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;11280:4;18253:10;:29;;;;:::i;:::-;18252:72;;;;:::i;:::-;18227:97;;18333:21;11280:4;18377:14;18358:9;:16;;;:33;;;;:::i;:::-;18357:54;;;;:::i;:::-;18333:78;;18476:19;18514:9;:26;;;18498:13;:42;;;;:::i;:::-;18476:64;;18556:11;18549:18;;;;;;;;;;17234:1337;;;;:::o;11325:46::-;;;;:::o;10446:24::-;;;;;;;;;;;;;:::o;3619:220::-;2572:13;:11;:13::i;:::-;3724:1:::1;3704:22;;:8;:22;;::::0;3700:93:::1;;3778:1;3750:31;;;;;;;;;;;:::i;:::-;;;;;;;;3700:93;3803:28;3822:8;3803:18;:28::i;:::-;3619:220:::0;:::o;23900:553::-;23960:7;23996:5;:12;;;;23984:9;:24;23976:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;24040:22;24114:3;24084:5;24090:9;24084:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:27;;;24065:16;;:46;;;;:::i;:::-;:52;;;;:::i;:::-;24040:77;;24124:25;24152:5;24158:9;24152:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;24124:56;;24297:1;24276:17;:22;24272:81;;24318:1;24311:8;;;;;;24272:81;24396:17;24389:3;24384:2;24367:14;:19;;;;:::i;:::-;:25;;;;:::i;:::-;24366:47;;;;:::i;:::-;24359:54;;;;23900:553;;;;:::o;2851:166::-;2922:12;:10;:12::i;:::-;2911:23;;:7;:5;:7::i;:::-;:23;;;2907:103;;2985:12;:10;:12::i;:::-;2958:40;;;;;;;;;;;:::i;:::-;;;;;;;;2907:103;2851:166::o;6622:293::-;6024:1;6756:7;;:19;6748:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6024:1;6889:7;:18;;;;6622:293::o;6923:213::-;5980:1;7106:7;:22;;;;6923:213::o;3999:191::-;4073:16;4092:6;;;;;;;;;;;4073:25;;4118:8;4109:6;;:17;;;;;;;;;;;;;;;;;;4173:8;4142:40;;4163:8;4142:40;;;;;;;;;;;;4062:128;3999:191;:::o;21364:294::-;21426:7;21447:9;21459:1;21447:13;;21442:160;21466:5;:12;;;;21462:1;:16;21442:160;;;21510:5;21516:1;21510:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;21500:6;:27;;:58;;;;;21541:5;21547:1;21541:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:17;;;21531:6;:27;;21500:58;21496:99;;;21582:1;21575:8;;;;;21496:99;21480:3;;;;;;;21442:160;;;;21608:46;;;;;;;;;;:::i;:::-;;;;;;;;21364:294;;;;:::o;22141:251::-;22200:4;22222:9;22234:1;22222:13;;22217:145;22241:7;:14;;;;22237:1;:18;22217:145;;;22295:8;22281:22;;:7;22289:1;22281:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:22;;;22277:74;;22331:4;22324:11;;;;;22277:74;22257:3;;;;;;;22217:145;;;;22379:5;22372:12;;22141:251;;;;:::o;21670:451::-;21729:9;21724:94;21748:5;:12;;;;21744:1;:16;21724:94;;;21805:1;21782:5;21788:1;21782:8;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;;:24;;;;21762:3;;;;;;;21724:94;;;;21835:9;21830:284;21854:7;:14;;;;21850:1;:18;21830:284;;;21890:21;21914:7;21922:1;21914:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21890:34;;21939:22;21964:6;:21;21971:13;21964:21;;;;;;;;;;;;;;;21939:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22000:17;22020:9;:19;;;22000:39;;22086:9;:16;;;22054:5;22060:9;22054:16;;;;;;;;:::i;:::-;;;;;;;;;;;;:28;;;:48;;;;;;;:::i;:::-;;;;;;;;21875:239;;;21870:3;;;;;;;21830:284;;;;21670:451::o;695:98::-;748:7;775:10;768:17;;695:98;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:553::-;1326:4;1364:3;1353:9;1349:19;1341:27;;1378:71;1446:1;1435:9;1431:17;1422:6;1378:71;:::i;:::-;1459:72;1527:2;1516:9;1512:18;1503:6;1459:72;:::i;:::-;1541;1609:2;1598:9;1594:18;1585:6;1541:72;:::i;:::-;1623;1691:2;1680:9;1676:18;1667:6;1623:72;:::i;:::-;1149:553;;;;;;;:::o;1708:126::-;1745:7;1785:42;1778:5;1774:54;1763:65;;1708:126;;;:::o;1840:96::-;1877:7;1906:24;1924:5;1906:24;:::i;:::-;1895:35;;1840:96;;;:::o;1942:122::-;2015:24;2033:5;2015:24;:::i;:::-;2008:5;2005:35;1995:63;;2054:1;2051;2044:12;1995:63;1942:122;:::o;2070:139::-;2116:5;2154:6;2141:20;2132:29;;2170:33;2197:5;2170:33;:::i;:::-;2070:139;;;;:::o;2215:329::-;2274:6;2323:2;2311:9;2302:7;2298:23;2294:32;2291:119;;;2329:79;;:::i;:::-;2291:119;2449:1;2474:53;2519:7;2510:6;2499:9;2495:22;2474:53;:::i;:::-;2464:63;;2420:117;2215:329;;;;:::o;2550:90::-;2584:7;2627:5;2620:13;2613:21;2602:32;;2550:90;;;:::o;2646:109::-;2727:21;2742:5;2727:21;:::i;:::-;2722:3;2715:34;2646:109;;:::o;2761:1084::-;3066:4;3104:3;3093:9;3089:19;3081:27;;3118:71;3186:1;3175:9;3171:17;3162:6;3118:71;:::i;:::-;3199:72;3267:2;3256:9;3252:18;3243:6;3199:72;:::i;:::-;3281;3349:2;3338:9;3334:18;3325:6;3281:72;:::i;:::-;3363;3431:2;3420:9;3416:18;3407:6;3363:72;:::i;:::-;3445:67;3507:3;3496:9;3492:19;3483:6;3445:67;:::i;:::-;3522:73;3590:3;3579:9;3575:19;3566:6;3522:73;:::i;:::-;3605;3673:3;3662:9;3658:19;3649:6;3605:73;:::i;:::-;3688:67;3750:3;3739:9;3735:19;3726:6;3688:67;:::i;:::-;3765:73;3833:3;3822:9;3818:19;3809:6;3765:73;:::i;:::-;2761:1084;;;;;;;;;;;;:::o;3851:222::-;3944:4;3982:2;3971:9;3967:18;3959:26;;3995:71;4063:1;4052:9;4048:17;4039:6;3995:71;:::i;:::-;3851:222;;;;:::o;4079:116::-;4149:21;4164:5;4149:21;:::i;:::-;4142:5;4139:32;4129:60;;4185:1;4182;4175:12;4129:60;4079:116;:::o;4201:133::-;4244:5;4282:6;4269:20;4260:29;;4298:30;4322:5;4298:30;:::i;:::-;4201:133;;;;:::o;4340:468::-;4405:6;4413;4462:2;4450:9;4441:7;4437:23;4433:32;4430:119;;;4468:79;;:::i;:::-;4430:119;4588:1;4613:53;4658:7;4649:6;4638:9;4634:22;4613:53;:::i;:::-;4603:63;;4559:117;4715:2;4741:50;4783:7;4774:6;4763:9;4759:22;4741:50;:::i;:::-;4731:60;;4686:115;4340:468;;;;;:::o;4814:619::-;4891:6;4899;4907;4956:2;4944:9;4935:7;4931:23;4927:32;4924:119;;;4962:79;;:::i;:::-;4924:119;5082:1;5107:53;5152:7;5143:6;5132:9;5128:22;5107:53;:::i;:::-;5097:63;;5053:117;5209:2;5235:53;5280:7;5271:6;5260:9;5256:22;5235:53;:::i;:::-;5225:63;;5180:118;5337:2;5363:53;5408:7;5399:6;5388:9;5384:22;5363:53;:::i;:::-;5353:63;;5308:118;4814:619;;;;;:::o;5439:117::-;5548:1;5545;5538:12;5562:117;5671:1;5668;5661:12;5685:117;5794:1;5791;5784:12;5825:568;5898:8;5908:6;5958:3;5951:4;5943:6;5939:17;5935:27;5925:122;;5966:79;;:::i;:::-;5925:122;6079:6;6066:20;6056:30;;6109:18;6101:6;6098:30;6095:117;;;6131:79;;:::i;:::-;6095:117;6245:4;6237:6;6233:17;6221:29;;6299:3;6291:4;6283:6;6279:17;6269:8;6265:32;6262:41;6259:128;;;6306:79;;:::i;:::-;6259:128;5825:568;;;;;:::o;6399:704::-;6494:6;6502;6510;6559:2;6547:9;6538:7;6534:23;6530:32;6527:119;;;6565:79;;:::i;:::-;6527:119;6685:1;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6656:117;6840:2;6829:9;6825:18;6812:32;6871:18;6863:6;6860:30;6857:117;;;6893:79;;:::i;:::-;6857:117;7006:80;7078:7;7069:6;7058:9;7054:22;7006:80;:::i;:::-;6988:98;;;;6783:313;6399:704;;;;;:::o;7109:118::-;7196:24;7214:5;7196:24;:::i;:::-;7191:3;7184:37;7109:118;;:::o;7233:222::-;7326:4;7364:2;7353:9;7349:18;7341:26;;7377:71;7445:1;7434:9;7430:17;7421:6;7377:71;:::i;:::-;7233:222;;;;:::o;7461:320::-;7576:4;7614:2;7603:9;7599:18;7591:26;;7627:71;7695:1;7684:9;7680:17;7671:6;7627:71;:::i;:::-;7708:66;7770:2;7759:9;7755:18;7746:6;7708:66;:::i;:::-;7461:320;;;;;:::o;7787:60::-;7815:3;7836:5;7829:12;;7787:60;;;:::o;7853:142::-;7903:9;7936:53;7954:34;7963:24;7981:5;7963:24;:::i;:::-;7954:34;:::i;:::-;7936:53;:::i;:::-;7923:66;;7853:142;;;:::o;8001:126::-;8051:9;8084:37;8115:5;8084:37;:::i;:::-;8071:50;;8001:126;;;:::o;8133:140::-;8197:9;8230:37;8261:5;8230:37;:::i;:::-;8217:50;;8133:140;;;:::o;8279:159::-;8380:51;8425:5;8380:51;:::i;:::-;8375:3;8368:64;8279:159;;:::o;8444:250::-;8551:4;8589:2;8578:9;8574:18;8566:26;;8602:85;8684:1;8673:9;8669:17;8660:6;8602:85;:::i;:::-;8444:250;;;;:::o;8700:180::-;8748:77;8745:1;8738:88;8845:4;8842:1;8835:15;8869:4;8866:1;8859:15;8886:180;8934:77;8931:1;8924:88;9031:4;9028:1;9021:15;9055:4;9052:1;9045:15;9072:191;9112:3;9131:20;9149:1;9131:20;:::i;:::-;9126:25;;9165:20;9183:1;9165:20;:::i;:::-;9160:25;;9208:1;9205;9201:9;9194:16;;9229:3;9226:1;9223:10;9220:36;;;9236:18;;:::i;:::-;9220:36;9072:191;;;;:::o;9269:169::-;9353:11;9387:6;9382:3;9375:19;9427:4;9422:3;9418:14;9403:29;;9269:169;;;;:::o;9444:222::-;9584:34;9580:1;9572:6;9568:14;9561:58;9653:5;9648:2;9640:6;9636:15;9629:30;9444:222;:::o;9672:366::-;9814:3;9835:67;9899:2;9894:3;9835:67;:::i;:::-;9828:74;;9911:93;10000:3;9911:93;:::i;:::-;10029:2;10024:3;10020:12;10013:19;;9672:366;;;:::o;10044:419::-;10210:4;10248:2;10237:9;10233:18;10225:26;;10297:9;10291:4;10287:20;10283:1;10272:9;10268:17;10261:47;10325:131;10451:4;10325:131;:::i;:::-;10317:139;;10044:419;;;:::o;10469:143::-;10526:5;10557:6;10551:13;10542:22;;10573:33;10600:5;10573:33;:::i;:::-;10469:143;;;;:::o;10618:351::-;10688:6;10737:2;10725:9;10716:7;10712:23;10708:32;10705:119;;;10743:79;;:::i;:::-;10705:119;10863:1;10888:64;10944:7;10935:6;10924:9;10920:22;10888:64;:::i;:::-;10878:74;;10834:128;10618:351;;;;:::o;10975:171::-;11115:23;11111:1;11103:6;11099:14;11092:47;10975:171;:::o;11152:366::-;11294:3;11315:67;11379:2;11374:3;11315:67;:::i;:::-;11308:74;;11391:93;11480:3;11391:93;:::i;:::-;11509:2;11504:3;11500:12;11493:19;;11152:366;;;:::o;11524:419::-;11690:4;11728:2;11717:9;11713:18;11705:26;;11777:9;11771:4;11767:20;11763:1;11752:9;11748:17;11741:47;11805:131;11931:4;11805:131;:::i;:::-;11797:139;;11524:419;;;:::o;11949:332::-;12070:4;12108:2;12097:9;12093:18;12085:26;;12121:71;12189:1;12178:9;12174:17;12165:6;12121:71;:::i;:::-;12202:72;12270:2;12259:9;12255:18;12246:6;12202:72;:::i;:::-;11949:332;;;;;:::o;12287:137::-;12341:5;12372:6;12366:13;12357:22;;12388:30;12412:5;12388:30;:::i;:::-;12287:137;;;;:::o;12430:345::-;12497:6;12546:2;12534:9;12525:7;12521:23;12517:32;12514:119;;;12552:79;;:::i;:::-;12514:119;12672:1;12697:61;12750:7;12741:6;12730:9;12726:22;12697:61;:::i;:::-;12687:71;;12643:125;12430:345;;;;:::o;12781:171::-;12921:23;12917:1;12909:6;12905:14;12898:47;12781:171;:::o;12958:366::-;13100:3;13121:67;13185:2;13180:3;13121:67;:::i;:::-;13114:74;;13197:93;13286:3;13197:93;:::i;:::-;13315:2;13310:3;13306:12;13299:19;;12958:366;;;:::o;13330:419::-;13496:4;13534:2;13523:9;13519:18;13511:26;;13583:9;13577:4;13573:20;13569:1;13558:9;13554:17;13547:47;13611:131;13737:4;13611:131;:::i;:::-;13603:139;;13330:419;;;:::o;13755:172::-;13895:24;13891:1;13883:6;13879:14;13872:48;13755:172;:::o;13933:366::-;14075:3;14096:67;14160:2;14155:3;14096:67;:::i;:::-;14089:74;;14172:93;14261:3;14172:93;:::i;:::-;14290:2;14285:3;14281:12;14274:19;;13933:366;;;:::o;14305:419::-;14471:4;14509:2;14498:9;14494:18;14486:26;;14558:9;14552:4;14548:20;14544:1;14533:9;14529:17;14522:47;14586:131;14712:4;14586:131;:::i;:::-;14578:139;;14305:419;;;:::o;14730:175::-;14870:27;14866:1;14858:6;14854:14;14847:51;14730:175;:::o;14911:366::-;15053:3;15074:67;15138:2;15133:3;15074:67;:::i;:::-;15067:74;;15150:93;15239:3;15150:93;:::i;:::-;15268:2;15263:3;15259:12;15252:19;;14911:366;;;:::o;15283:419::-;15449:4;15487:2;15476:9;15472:18;15464:26;;15536:9;15530:4;15526:20;15522:1;15511:9;15507:17;15500:47;15564:131;15690:4;15564:131;:::i;:::-;15556:139;;15283:419;;;:::o;15708:222::-;15848:34;15844:1;15836:6;15832:14;15825:58;15917:5;15912:2;15904:6;15900:15;15893:30;15708:222;:::o;15936:366::-;16078:3;16099:67;16163:2;16158:3;16099:67;:::i;:::-;16092:74;;16175:93;16264:3;16175:93;:::i;:::-;16293:2;16288:3;16284:12;16277:19;;15936:366;;;:::o;16308:419::-;16474:4;16512:2;16501:9;16497:18;16489:26;;16561:9;16555:4;16551:20;16547:1;16536:9;16532:17;16525:47;16589:131;16715:4;16589:131;:::i;:::-;16581:139;;16308:419;;;:::o;16733:194::-;16773:4;16793:20;16811:1;16793:20;:::i;:::-;16788:25;;16827:20;16845:1;16827:20;:::i;:::-;16822:25;;16871:1;16868;16864:9;16856:17;;16895:1;16889:4;16886:11;16883:37;;;16900:18;;:::i;:::-;16883:37;16733:194;;;;:::o;16933:171::-;16972:3;16995:24;17013:5;16995:24;:::i;:::-;16986:33;;17041:4;17034:5;17031:15;17028:41;;17049:18;;:::i;:::-;17028:41;17096:1;17089:5;17085:13;17078:20;;16933:171;;;:::o;17110:::-;17250:23;17246:1;17238:6;17234:14;17227:47;17110:171;:::o;17287:366::-;17429:3;17450:67;17514:2;17509:3;17450:67;:::i;:::-;17443:74;;17526:93;17615:3;17526:93;:::i;:::-;17644:2;17639:3;17635:12;17628:19;;17287:366;;;:::o;17659:419::-;17825:4;17863:2;17852:9;17848:18;17840:26;;17912:9;17906:4;17902:20;17898:1;17887:9;17883:17;17876:47;17940:131;18066:4;17940:131;:::i;:::-;17932:139;;17659:419;;;:::o;18084:166::-;18224:18;18220:1;18212:6;18208:14;18201:42;18084:166;:::o;18256:366::-;18398:3;18419:67;18483:2;18478:3;18419:67;:::i;:::-;18412:74;;18495:93;18584:3;18495:93;:::i;:::-;18613:2;18608:3;18604:12;18597:19;;18256:366;;;:::o;18628:419::-;18794:4;18832:2;18821:9;18817:18;18809:26;;18881:9;18875:4;18871:20;18867:1;18856:9;18852:17;18845:47;18909:131;19035:4;18909:131;:::i;:::-;18901:139;;18628:419;;;:::o;19053:410::-;19093:7;19116:20;19134:1;19116:20;:::i;:::-;19111:25;;19150:20;19168:1;19150:20;:::i;:::-;19145:25;;19205:1;19202;19198:9;19227:30;19245:11;19227:30;:::i;:::-;19216:41;;19406:1;19397:7;19393:15;19390:1;19387:22;19367:1;19360:9;19340:83;19317:139;;19436:18;;:::i;:::-;19317:139;19101:362;19053:410;;;;:::o;19469:180::-;19517:77;19514:1;19507:88;19614:4;19611:1;19604:15;19638:4;19635:1;19628:15;19655:185;19695:1;19712:20;19730:1;19712:20;:::i;:::-;19707:25;;19746:20;19764:1;19746:20;:::i;:::-;19741:25;;19785:1;19775:35;;19790:18;;:::i;:::-;19775:35;19832:1;19829;19825:9;19820:14;;19655:185;;;;:::o;19846:165::-;19986:17;19982:1;19974:6;19970:14;19963:41;19846:165;:::o;20017:366::-;20159:3;20180:67;20244:2;20239:3;20180:67;:::i;:::-;20173:74;;20256:93;20345:3;20256:93;:::i;:::-;20374:2;20369:3;20365:12;20358:19;;20017:366;;;:::o;20389:419::-;20555:4;20593:2;20582:9;20578:18;20570:26;;20642:9;20636:4;20632:20;20628:1;20617:9;20613:17;20606:47;20670:131;20796:4;20670:131;:::i;:::-;20662:139;;20389:419;;;:::o;20814:169::-;20954:21;20950:1;20942:6;20938:14;20931:45;20814:169;:::o;20989:366::-;21131:3;21152:67;21216:2;21211:3;21152:67;:::i;:::-;21145:74;;21228:93;21317:3;21228:93;:::i;:::-;21346:2;21341:3;21337:12;21330:19;;20989:366;;;:::o;21361:419::-;21527:4;21565:2;21554:9;21550:18;21542:26;;21614:9;21608:4;21604:20;21600:1;21589:9;21585:17;21578:47;21642:131;21768:4;21642:131;:::i;:::-;21634:139;;21361:419;;;:::o;21786:168::-;21926:20;21922:1;21914:6;21910:14;21903:44;21786:168;:::o;21960:366::-;22102:3;22123:67;22187:2;22182:3;22123:67;:::i;:::-;22116:74;;22199:93;22288:3;22199:93;:::i;:::-;22317:2;22312:3;22308:12;22301:19;;21960:366;;;:::o;22332:419::-;22498:4;22536:2;22525:9;22521:18;22513:26;;22585:9;22579:4;22575:20;22571:1;22560:9;22556:17;22549:47;22613:131;22739:4;22613:131;:::i;:::-;22605:139;;22332:419;;;:::o;22757:180::-;22805:77;22802:1;22795:88;22902:4;22899:1;22892:15;22926:4;22923:1;22916:15;22943:179;23083:31;23079:1;23071:6;23067:14;23060:55;22943:179;:::o;23128:366::-;23270:3;23291:67;23355:2;23350:3;23291:67;:::i;:::-;23284:74;;23367:93;23456:3;23367:93;:::i;:::-;23485:2;23480:3;23476:12;23469:19;;23128:366;;;:::o;23500:419::-;23666:4;23704:2;23693:9;23689:18;23681:26;;23753:9;23747:4;23743:20;23739:1;23728:9;23724:17;23717:47;23781:131;23907:4;23781:131;:::i;:::-;23773:139;;23500:419;;;:::o;23925:229::-;24065:34;24061:1;24053:6;24049:14;24042:58;24134:12;24129:2;24121:6;24117:15;24110:37;23925:229;:::o;24160:366::-;24302:3;24323:67;24387:2;24382:3;24323:67;:::i;:::-;24316:74;;24399:93;24488:3;24399:93;:::i;:::-;24517:2;24512:3;24508:12;24501:19;;24160:366;;;:::o;24532:419::-;24698:4;24736:2;24725:9;24721:18;24713:26;;24785:9;24779:4;24775:20;24771:1;24760:9;24756:17;24749:47;24813:131;24939:4;24813:131;:::i;:::-;24805:139;;24532:419;;;:::o;24957:179::-;25097:31;25093:1;25085:6;25081:14;25074:55;24957:179;:::o;25142:366::-;25284:3;25305:67;25369:2;25364:3;25305:67;:::i;:::-;25298:74;;25381:93;25470:3;25381:93;:::i;:::-;25499:2;25494:3;25490:12;25483:19;;25142:366;;;:::o;25514:419::-;25680:4;25718:2;25707:9;25703:18;25695:26;;25767:9;25761:4;25757:20;25753:1;25742:9;25738:17;25731:47;25795:131;25921:4;25795:131;:::i;:::-;25787:139;;25514:419;;;:::o;25939:442::-;26088:4;26126:2;26115:9;26111:18;26103:26;;26139:71;26207:1;26196:9;26192:17;26183:6;26139:71;:::i;:::-;26220:72;26288:2;26277:9;26273:18;26264:6;26220:72;:::i;:::-;26302;26370:2;26359:9;26355:18;26346:6;26302:72;:::i;:::-;25939:442;;;;;;:::o;26387:165::-;26527:17;26523:1;26515:6;26511:14;26504:41;26387:165;:::o;26558:366::-;26700:3;26721:67;26785:2;26780:3;26721:67;:::i;:::-;26714:74;;26797:93;26886:3;26797:93;:::i;:::-;26915:2;26910:3;26906:12;26899:19;;26558:366;;;:::o;26930:419::-;27096:4;27134:2;27123:9;27119:18;27111:26;;27183:9;27177:4;27173:20;27169:1;27158:9;27154:17;27147:47;27211:131;27337:4;27211:131;:::i;:::-;27203:139;;26930:419;;;:::o;27355:171::-;27495:23;27491:1;27483:6;27479:14;27472:47;27355:171;:::o;27532:366::-;27674:3;27695:67;27759:2;27754:3;27695:67;:::i;:::-;27688:74;;27771:93;27860:3;27771:93;:::i;:::-;27889:2;27884:3;27880:12;27873:19;;27532:366;;;:::o;27904:419::-;28070:4;28108:2;28097:9;28093:18;28085:26;;28157:9;28151:4;28147:20;28143:1;28132:9;28128:17;28121:47;28185:131;28311:4;28185:131;:::i;:::-;28177:139;;27904:419;;;:::o;28329:332::-;28450:4;28488:2;28477:9;28473:18;28465:26;;28501:71;28569:1;28558:9;28554:17;28545:6;28501:71;:::i;:::-;28582:72;28650:2;28639:9;28635:18;28626:6;28582:72;:::i;:::-;28329:332;;;;;:::o;28667:169::-;28807:21;28803:1;28795:6;28791:14;28784:45;28667:169;:::o;28842:366::-;28984:3;29005:67;29069:2;29064:3;29005:67;:::i;:::-;28998:74;;29081:93;29170:3;29081:93;:::i;:::-;29199:2;29194:3;29190:12;29183:19;;28842:366;;;:::o;29214:419::-;29380:4;29418:2;29407:9;29403:18;29395:26;;29467:9;29461:4;29457:20;29453:1;29442:9;29438:17;29431:47;29495:131;29621:4;29495:131;:::i;:::-;29487:139;;29214:419;;;:::o;29639:172::-;29779:24;29775:1;29767:6;29763:14;29756:48;29639:172;:::o;29817:366::-;29959:3;29980:67;30044:2;30039:3;29980:67;:::i;:::-;29973:74;;30056:93;30145:3;30056:93;:::i;:::-;30174:2;30169:3;30165:12;30158:19;;29817:366;;;:::o;30189:419::-;30355:4;30393:2;30382:9;30378:18;30370:26;;30442:9;30436:4;30432:20;30428:1;30417:9;30413:17;30406:47;30470:131;30596:4;30470:131;:::i;:::-;30462:139;;30189:419;;;:::o;30614:181::-;30754:33;30750:1;30742:6;30738:14;30731:57;30614:181;:::o;30801:366::-;30943:3;30964:67;31028:2;31023:3;30964:67;:::i;:::-;30957:74;;31040:93;31129:3;31040:93;:::i;:::-;31158:2;31153:3;31149:12;31142:19;;30801:366;;;:::o;31173:419::-;31339:4;31377:2;31366:9;31362:18;31354:26;;31426:9;31420:4;31416:20;31412:1;31401:9;31397:17;31390:47;31454:131;31580:4;31454:131;:::i;:::-;31446:139;;31173:419;;;:::o;31598:223::-;31738:34;31734:1;31726:6;31722:14;31715:58;31807:6;31802:2;31794:6;31790:15;31783:31;31598:223;:::o;31827:366::-;31969:3;31990:67;32054:2;32049:3;31990:67;:::i;:::-;31983:74;;32066:93;32155:3;32066:93;:::i;:::-;32184:2;32179:3;32175:12;32168:19;;31827:366;;;:::o;32199:419::-;32365:4;32403:2;32392:9;32388:18;32380:26;;32452:9;32446:4;32442:20;32438:1;32427:9;32423:17;32416:47;32480:131;32606:4;32480:131;:::i;:::-;32472:139;;32199:419;;;:::o
Swarm Source
ipfs://46d26aa006f62c8cdc51223bece0b4991723ff247a2f35ebe3c7beb816934c69
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.