Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 13985134 | 999 days ago | IN | 0 ETH | 0.48166348 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Metabits
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-11 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @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; } } pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } pragma solidity ^0.8.0; /** * @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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; interface IMetaKidz { function balanceOf(address _user) external view returns(uint256); function ownerOf(uint256 _tokenId) external view returns(address); function totalSupply() external view returns (uint256); } contract Metabits is ERC20("MetaBits", "MBits"), Ownable { address public MetaKidzContractAddress; address public MetaKidzPAContractAddress; address public MetaKidzGCContractAddress; address public admin = 0x1097fd1777409Ff30fF32191891A9a9752b61F01; struct ContractSettings { uint256 baseRate; uint256 start; uint256 end; } ContractSettings public metaKidzContractSettings; ContractSettings public metaKidzPAContractSettings; ContractSettings public metaKidzGCContractSettings; IMetaKidz public iMetaKidz; IMetaKidz public iMetaKidzPA; IMetaKidz public iMetaKidzGC; IMetaKidz public iMetaKidzE; // Prevents new contracts from being added or changes to disbursement if permanently locked bool public isLocked = false; mapping(bytes32 => uint256) public metaKidzLastClaim; mapping(bytes32 => uint256) public metaKidzPALastClaim; mapping(bytes32 => uint256) public metaKidzGCLastClaim; event RewardPaid(address indexed user, uint256 reward); constructor(address _metaKidzAddress,address _metaKidzPAAddress,address _metaKidzGCAddress, uint256 _metaKidzBaseRate, uint256 _metaKidzPABaseRate, uint256 _metaKidzGCBaseRate) { MetaKidzContractAddress = _metaKidzAddress; MetaKidzPAContractAddress = _metaKidzPAAddress; MetaKidzGCContractAddress = _metaKidzGCAddress; iMetaKidz = IMetaKidz(MetaKidzContractAddress); iMetaKidzPA = IMetaKidz(MetaKidzPAContractAddress); iMetaKidzGC = IMetaKidz(MetaKidzGCContractAddress); // initialize contractSettings metaKidzContractSettings = ContractSettings({ baseRate: _metaKidzBaseRate * 10 ** 18, start: 1641408173, end: 1672944173 }); metaKidzPAContractSettings = ContractSettings({ baseRate: _metaKidzPABaseRate * 10 ** 18, start: 1641408173, end: 1672944173 }); metaKidzGCContractSettings = ContractSettings({ baseRate: _metaKidzGCBaseRate * 10 ** 18, start: 1641828960, end: 1799595360 }); } function setMetaKidzContractSettings(uint256 _baseRate, uint256 _start, uint256 _end) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); require(!isLocked, "Cannot modify end dates after lock"); metaKidzContractSettings.baseRate = _baseRate * 10 ** 18; metaKidzContractSettings.start = _start; metaKidzContractSettings.end = _end; } function setMetaKidzPAContractSettings(uint256 _baseRate, uint256 _start, uint256 _end) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); require(!isLocked, "Cannot modify end dates after lock"); metaKidzPAContractSettings.baseRate = _baseRate * 10 ** 18; metaKidzPAContractSettings.start = _start; metaKidzPAContractSettings.end = _end; } function setMetaKidzGCContractSettings(uint256 _baseRate, uint256 _start, uint256 _end) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); require(!isLocked, "Cannot modify end dates after lock"); metaKidzGCContractSettings.baseRate = _baseRate * 10 ** 18; metaKidzGCContractSettings.start = _start; metaKidzGCContractSettings.end = _end; } function claimRewardForMetaKidz(uint256 _metaKidzTokenId) public returns (uint256) { uint256 totalUnclaimedReward1 = 0; require(metaKidzContractSettings.end > block.timestamp, "Time for claiming has expired."); require(iMetaKidz.ownerOf(_metaKidzTokenId) == msg.sender, "Caller does not own the token being claimed for."); totalUnclaimedReward1 = computeUnclaimedRewardForMetaKidz(_metaKidzTokenId); // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimKey = keccak256(abi.encode(_metaKidzTokenId)); metaKidzLastClaim[lastClaimKey] = block.timestamp; // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward1); emit RewardPaid(msg.sender, totalUnclaimedReward1); return totalUnclaimedReward1; } function claimRewardForMetaKidzPA( uint256 _metaKidzPATokenId) public returns (uint256) { uint256 totalUnclaimedReward2 = 0; require(metaKidzPAContractSettings.end > block.timestamp, "Time for claiming has expired."); require(iMetaKidzPA.ownerOf(_metaKidzPATokenId) == msg.sender, "Caller does not own the token being claimed for."); totalUnclaimedReward2 = computeUnclaimedRewardForMetaKidzPA(_metaKidzPATokenId); // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimMetaKidzPAKey = keccak256(abi.encode(_metaKidzPATokenId)); metaKidzPALastClaim[lastClaimMetaKidzPAKey] = block.timestamp; // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward2); emit RewardPaid(msg.sender, totalUnclaimedReward2); return totalUnclaimedReward2; } function claimRewardForMetaKidzGC(uint256 _metaKidzGCTokenId) public returns (uint256) { uint256 totalUnclaimedReward1 = 0; require(metaKidzGCContractSettings.end > block.timestamp, "Time for claiming has expired."); require(iMetaKidzGC.ownerOf(_metaKidzGCTokenId) == msg.sender, "Caller does not own the token being claimed for."); totalUnclaimedReward1 = computeUnclaimedRewardForMetaKidzGC(_metaKidzGCTokenId); // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimKey = keccak256(abi.encode(_metaKidzGCTokenId)); metaKidzGCLastClaim[lastClaimKey] = block.timestamp; // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward1); emit RewardPaid(msg.sender, totalUnclaimedReward1); return totalUnclaimedReward1; } function claimRewardsForMetaKidz(uint256[] calldata _metaKidzTokenIds) public returns (uint256) { require(metaKidzContractSettings.end > block.timestamp, "Time for claiming has expired"); uint256 totalUnclaimedReward1 = 0; for(uint256 i = 0; i < _metaKidzTokenIds.length; i++) { uint256 _metaKidzTokenId = _metaKidzTokenIds[i]; require(iMetaKidz.ownerOf(_metaKidzTokenId) == msg.sender, "Caller does not own the token being claimed for."); uint256 unclaimedReward = computeUnclaimedRewardForMetaKidz(_metaKidzTokenId); totalUnclaimedReward1 = totalUnclaimedReward1 + unclaimedReward; // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimKey = keccak256(abi.encode(_metaKidzTokenId)); metaKidzLastClaim[lastClaimKey] = block.timestamp; } // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward1); emit RewardPaid(msg.sender, totalUnclaimedReward1); return totalUnclaimedReward1; } function claimRewardsForMetaKidzPA(uint256[] calldata _metaKidzPATokenIds) public returns (uint256) { require(metaKidzPAContractSettings.end > block.timestamp, "Time for claiming has expired"); uint256 totalUnclaimedReward2 = 0; for(uint256 i = 0; i < _metaKidzPATokenIds.length; i++) { uint256 _metaKidzPATokenId = _metaKidzPATokenIds[i]; require(iMetaKidzPA.ownerOf(_metaKidzPATokenId) == msg.sender, "Caller does not own the token being claimed for."); uint256 unclaimedReward = computeUnclaimedRewardForMetaKidzPA(_metaKidzPATokenId); totalUnclaimedReward2 = totalUnclaimedReward2 + unclaimedReward; // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimKey = keccak256(abi.encode(_metaKidzPATokenId)); metaKidzPALastClaim[lastClaimKey] = block.timestamp; } // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward2); emit RewardPaid(msg.sender, totalUnclaimedReward2); return totalUnclaimedReward2; } function claimRewardsForMetaKidzGC(uint256[] calldata _metaKidzGCTokenIds) public returns (uint256) { require(metaKidzGCContractSettings.end > block.timestamp, "Time for claiming has expired"); uint256 totalUnclaimedReward1 = 0; for(uint256 i = 0; i < _metaKidzGCTokenIds.length; i++) { uint256 _metaKidzGCTokenId = _metaKidzGCTokenIds[i]; require(iMetaKidzGC.ownerOf(_metaKidzGCTokenId) == msg.sender, "Caller does not own the token being claimed for."); uint256 unclaimedReward = computeUnclaimedRewardForMetaKidzGC(_metaKidzGCTokenId); totalUnclaimedReward1 = totalUnclaimedReward1 + unclaimedReward; // update the lastClaim date for tokenId and contractAddress bytes32 lastClaimKey = keccak256(abi.encode(_metaKidzGCTokenId)); metaKidzGCLastClaim[lastClaimKey] = block.timestamp; } // mint the tokens and distribute to msg.sender _mint(msg.sender, totalUnclaimedReward1); emit RewardPaid(msg.sender, totalUnclaimedReward1); return totalUnclaimedReward1; } function permanentlyLock() public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); isLocked = true; } function getUnclaimedRewardAmountForMetaKidz(uint256 _tokenId) public view returns (uint256) { return computeUnclaimedRewardForMetaKidz(_tokenId); } function getUnclaimedRewardAmountForMetaKidzPA(uint256 _tokenId) public view returns (uint256) { return computeUnclaimedRewardForMetaKidzPA(_tokenId); } function getUnclaimedRewardAmountForMetaKidzGC(uint256 _tokenId) public view returns (uint256) { return computeUnclaimedRewardForMetaKidzGC(_tokenId); } function getUnclaimedRewardsAmountForMetaKidz(uint256[] calldata _tokenIds) public view returns (uint256) { uint256 totalUnclaimedRewards = 0; for(uint256 i = 0; i < _tokenIds.length; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidz(_tokenIds[i]); } return totalUnclaimedRewards; } function getUnclaimedRewardsAmountForMetaKidzPA(uint256[] calldata _tokenIds) public view returns (uint256) { uint256 totalUnclaimedRewards = 0; for(uint256 i = 0; i < _tokenIds.length; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidzPA(_tokenIds[i]); } return totalUnclaimedRewards; } function getUnclaimedRewardsAmountForMetaKidzGC(uint256[] calldata _tokenIds) public view returns (uint256) { uint256 totalUnclaimedRewards = 0; for(uint256 i = 0; i < _tokenIds.length; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidzGC(_tokenIds[i]); } return totalUnclaimedRewards; } function getTotalUnclaimedRewardsForMetaKidzContract() public view returns (uint256) { uint256 totalUnclaimedRewards = 0; uint256 totalSupply = iMetaKidz.totalSupply(); for(uint256 i = 0; i < totalSupply; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidz(i); } return totalUnclaimedRewards; } function getTotalUnclaimedRewardsForMetaKidzPAContract() public view returns (uint256) { uint256 totalUnclaimedRewards = 0; uint256 totalSupply = iMetaKidzPA.totalSupply(); for(uint256 i = 0; i < totalSupply; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidzPA(i); } return totalUnclaimedRewards; } function getTotalUnclaimedRewardsForMetaKidzGCContract() public view returns (uint256) { uint256 totalUnclaimedRewards = 0; uint256 totalSupply = iMetaKidzGC.totalSupply(); for(uint256 i = 0; i < totalSupply; i++) { totalUnclaimedRewards += computeUnclaimedRewardForMetaKidzGC(i); } return totalUnclaimedRewards; } function getMetaKidzLastClaimedTime(uint256 _tokenId) public view returns (uint256) { bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); return metaKidzLastClaim[lastClaimKey]; } function getMetaKidzPALastClaimedTime(uint256 _tokenId) public view returns (uint256) { bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); return metaKidzPALastClaim[lastClaimKey]; } function getMetaKidzGCLastClaimedTime(uint256 _tokenId) public view returns (uint256) { bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); return metaKidzGCLastClaim[lastClaimKey]; } function computeAccumulatedReward(uint256 _lastClaimDate, uint256 _baseRate, uint256 currentTime) internal pure returns (uint256) { require(currentTime > _lastClaimDate, "Last claim date must be smaller than block timestamp"); uint256 secondsElapsed = currentTime - _lastClaimDate; uint256 accumulatedReward = secondsElapsed * _baseRate / 1 days; return accumulatedReward; } function computeUnclaimedRewardForMetaKidz(uint256 _tokenId) internal view returns (uint256) { // Will revert if tokenId does not exist iMetaKidz.ownerOf(_tokenId); // build the hash for lastClaim based on contractAddress and tokenId bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); uint256 lastClaimDate = metaKidzLastClaim[lastClaimKey]; uint256 baseRate = metaKidzContractSettings.baseRate; // if there has been a lastClaim, compute the value since lastClaim if (lastClaimDate != uint256(0)) { return computeAccumulatedReward(lastClaimDate, baseRate, block.timestamp); } else { // if there has not been a lastClaim, add the initIssuance + computed value since contract startDate uint256 totalReward = computeAccumulatedReward(metaKidzContractSettings.start, baseRate, block.timestamp); return totalReward; } } function computeUnclaimedRewardForMetaKidzPA(uint256 _tokenId) internal view returns (uint256) { // Will revert if tokenId does not exist iMetaKidzPA.ownerOf(_tokenId); // build the hash for lastClaim based on contractAddress and tokenId bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); uint256 lastClaimDate = metaKidzPALastClaim[lastClaimKey]; uint256 baseRate = metaKidzPAContractSettings.baseRate; // if there has been a lastClaim, compute the value since lastClaim if (lastClaimDate != uint256(0)) { return computeAccumulatedReward(lastClaimDate, baseRate, block.timestamp); } else { // if there has not been a lastClaim, add the initIssuance + computed value since contract startDate uint256 totalReward = computeAccumulatedReward(metaKidzPAContractSettings.start, baseRate, block.timestamp); return totalReward; } } function computeUnclaimedRewardForMetaKidzGC(uint256 _tokenId) internal view returns (uint256) { // Will revert if tokenId does not exist iMetaKidzGC.ownerOf(_tokenId); // build the hash for lastClaim based on contractAddress and tokenId bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); uint256 lastClaimDate = metaKidzGCLastClaim[lastClaimKey]; uint256 baseRate = metaKidzGCContractSettings.baseRate; // if there has been a lastClaim, compute the value since lastClaim if (lastClaimDate != uint256(0)) { return computeAccumulatedReward(lastClaimDate, baseRate, block.timestamp); } else { // if there has not been a lastClaim, add the initIssuance + computed value since contract startDate uint256 totalReward = computeAccumulatedReward(metaKidzGCContractSettings.start, baseRate, block.timestamp); return totalReward; } } function updateTimeForMetaKidzGC(uint256 _tokenId) external { require(msg.sender == address(iMetaKidzGC)); _tokenId = _tokenId-1; bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); metaKidzGCLastClaim[lastClaimKey] = block.timestamp; } function updateTimeForMetaKidz(uint256 _tokenId) external { require(msg.sender == address(iMetaKidz)); bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); metaKidzLastClaim[lastClaimKey] = block.timestamp; } function updateTimeForMetaKidzPA(uint256 _tokenId) external { require(msg.sender == address(iMetaKidzPA)); bytes32 lastClaimKey = keccak256(abi.encode(_tokenId)); metaKidzPALastClaim[lastClaimKey] = block.timestamp; } function burn(address _from, uint256 _amount) external { require(msg.sender == address(iMetaKidzE) || msg.sender == address(iMetaKidzPA)); _burn(_from, _amount); } function setMetaKidzEAddress(address _metaKidzEAddress) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); iMetaKidzE = IMetaKidz(_metaKidzEAddress); } function setMetaKidzPAAddress(address _metaKidzPAAddress) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); MetaKidzPAContractAddress = _metaKidzPAAddress; iMetaKidzPA = IMetaKidz(_metaKidzPAAddress); } function setMetaKidzAddress(address _metaKidzAddress) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); MetaKidzContractAddress = _metaKidzAddress; iMetaKidz = IMetaKidz(_metaKidzAddress); } function setMetaKidzGCAddress(address _metaKidzGCAddress) public { require(msg.sender == admin || msg.sender == owner(), "Invalid sender"); MetaKidzGCContractAddress = _metaKidzGCAddress; iMetaKidzGC = IMetaKidz(_metaKidzGCAddress); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_metaKidzAddress","type":"address"},{"internalType":"address","name":"_metaKidzPAAddress","type":"address"},{"internalType":"address","name":"_metaKidzGCAddress","type":"address"},{"internalType":"uint256","name":"_metaKidzBaseRate","type":"uint256"},{"internalType":"uint256","name":"_metaKidzPABaseRate","type":"uint256"},{"internalType":"uint256","name":"_metaKidzGCBaseRate","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MetaKidzContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MetaKidzGCContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MetaKidzPAContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_metaKidzTokenId","type":"uint256"}],"name":"claimRewardForMetaKidz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_metaKidzGCTokenId","type":"uint256"}],"name":"claimRewardForMetaKidzGC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_metaKidzPATokenId","type":"uint256"}],"name":"claimRewardForMetaKidzPA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_metaKidzTokenIds","type":"uint256[]"}],"name":"claimRewardsForMetaKidz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_metaKidzGCTokenIds","type":"uint256[]"}],"name":"claimRewardsForMetaKidzGC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_metaKidzPATokenIds","type":"uint256[]"}],"name":"claimRewardsForMetaKidzPA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMetaKidzGCLastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMetaKidzLastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMetaKidzPALastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalUnclaimedRewardsForMetaKidzContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalUnclaimedRewardsForMetaKidzGCContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalUnclaimedRewardsForMetaKidzPAContract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getUnclaimedRewardAmountForMetaKidz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getUnclaimedRewardAmountForMetaKidzGC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getUnclaimedRewardAmountForMetaKidzPA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getUnclaimedRewardsAmountForMetaKidz","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getUnclaimedRewardsAmountForMetaKidzGC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"}],"name":"getUnclaimedRewardsAmountForMetaKidzPA","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"iMetaKidz","outputs":[{"internalType":"contract IMetaKidz","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"iMetaKidzE","outputs":[{"internalType":"contract IMetaKidz","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"iMetaKidzGC","outputs":[{"internalType":"contract IMetaKidz","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"iMetaKidzPA","outputs":[{"internalType":"contract IMetaKidz","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metaKidzContractSettings","outputs":[{"internalType":"uint256","name":"baseRate","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metaKidzGCContractSettings","outputs":[{"internalType":"uint256","name":"baseRate","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"metaKidzGCLastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"metaKidzLastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metaKidzPAContractSettings","outputs":[{"internalType":"uint256","name":"baseRate","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"metaKidzPALastClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"permanentlyLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metaKidzAddress","type":"address"}],"name":"setMetaKidzAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseRate","type":"uint256"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"setMetaKidzContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metaKidzEAddress","type":"address"}],"name":"setMetaKidzEAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metaKidzGCAddress","type":"address"}],"name":"setMetaKidzGCAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseRate","type":"uint256"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"setMetaKidzGCContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_metaKidzPAAddress","type":"address"}],"name":"setMetaKidzPAAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseRate","type":"uint256"},{"internalType":"uint256","name":"_start","type":"uint256"},{"internalType":"uint256","name":"_end","type":"uint256"}],"name":"setMetaKidzPAContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"updateTimeForMetaKidz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"updateTimeForMetaKidzGC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"updateTimeForMetaKidzPA","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600980546001600160a01b031916731097fd1777409ff30ff32191891a9a9752b61f011790556016805460ff60a01b191690553480156200004457600080fd5b5060405162002e4a38038062002e4a83398101604081905262000067916200034f565b60408051808201825260088152674d6574614269747360c01b6020808301918252835180850190945260058452644d4269747360d81b908401528151919291620000b4916003916200028c565b508051620000ca9060049060208401906200028c565b505050620000e7620000e16200023660201b60201c565b6200023a565b600680546001600160a01b038089166001600160a01b0319928316811790935560078054898316908416811790915560088054928916928416831790556013805484169094179093556014805483169093179092556015805490911690911790556040805160608101909152806200016885670de0b6b3a7640000620003b5565b81526361d5e6ad6020808301919091526363b71a2d6040928301528251600a55820151600b5590810151600c5580516060810190915280620001b384670de0b6b3a7640000620003b5565b81526361d5e6ad6020808301919091526363b71a2d6040928301528251600d55820151600e5590810151600f5580516060810190915280620001fe83670de0b6b3a7640000620003b5565b81526361dc5260602080830191909152636b43a560604092830152825160105582015160115501516012555062000420945050505050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200029a90620003e3565b90600052602060002090601f016020900481019282620002be576000855562000309565b82601f10620002d957805160ff191683800117855562000309565b8280016001018555821562000309579182015b8281111562000309578251825591602001919060010190620002ec565b50620003179291506200031b565b5090565b5b808211156200031757600081556001016200031c565b80516001600160a01b03811681146200034a57600080fd5b919050565b60008060008060008060c087890312156200036957600080fd5b620003748762000332565b9550620003846020880162000332565b9450620003946040880162000332565b9350606087015192506080870151915060a087015190509295509295509295565b6000816000190483118215151615620003de57634e487b7160e01b600052601160045260246000fd5b500290565b600181811c90821680620003f857607f821691505b602082108114156200041a57634e487b7160e01b600052602260045260246000fd5b50919050565b612a1a80620004306000396000f3fe608060405234801561001057600080fd5b50600436106103995760003560e01c8063655f9f87116101e9578063a4e2d6341161010f578063dd62ed3e116100ad578063f851a4401161007c578063f851a4401461081f578063f9d7777414610832578063fbb9b0e714610845578063fbcd783a1461085857600080fd5b8063dd62ed3e146107ad578063e76f2b60146107e6578063f2fde38b146107f9578063f43078d31461080c57600080fd5b8063cb2c3187116100e9578063cb2c31871461076d578063ce42d29e14610780578063d8a2c8b514610792578063dc16f41f146107a557600080fd5b8063a4e2d63414610733578063a9059cbb14610747578063b353a9f61461075a57600080fd5b806392b1350c116101875780639dc29fac116101565780639dc29fac146106f25780639ffe3be314610705578063a0f68ab41461070d578063a457c2d71461072057600080fd5b806392b1350c146106b15780639406f4db146106c45780639529e248146106d757806395d89b41146106ea57600080fd5b8063818861ab116101c3578063818861ab14610672578063896a8ef91461067a5780638da5cb5b1461068d5780638f7918e51461069e57600080fd5b8063655f9f871461062e57806370a0823114610641578063715018a61461066a57600080fd5b80632f1bdba1116102ce578063452119e81161026c57806354da574a1161023b57806354da574a146105c85780635e94f901146105db57806360c03818146105ee5780636558f7701461060e57600080fd5b8063452119e81461058757806346a39e4d1461059a578063511a9267146105ad578063549b2c1e146105b557600080fd5b806331da012b116102a857806331da012b1461053b5780633849c1d31461054e57806339509351146105615780633ade29b11461057457600080fd5b80632f1bdba114610507578063306bdb3514610519578063313ce5671461052c57600080fd5b80631c68f5101161033b57806329d1d6751161031557806329d1d675146104ac5780632c100544146104bf5780632d547669146104df5780632e2918af146104f457600080fd5b80631c68f5101461045b57806323b872dd1461046e578063279384921461048157600080fd5b806318160ddd1161037757806318160ddd1461040057806318df6fe9146104085780631a9c6e2a1461041b5780631c016fad1461044857600080fd5b806306fdde031461039e578063095ea7b3146103bc57806312841bfb146103df575b600080fd5b6103a661086b565b6040516103b39190612760565b60405180910390f35b6103cf6103ca366004612661565b6108fd565b60405190151581526020016103b3565b6103f26103ed366004612702565b610913565b6040519081526020016103b3565b6002546103f2565b6103f2610416366004612702565b610955565b600d54600e54600f5461042d92919083565b604080519384526020840192909252908201526060016103b3565b6103f2610456366004612702565b610966565b6103f261046936600461268d565b610ac6565b6103cf61047c366004612620565b610b1a565b601354610494906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b6103f26104ba36600461268d565b610bc4565b6103f26104cd366004612702565b60186020526000908152604090205481565b6104f26104ed3660046125a6565b610d6d565b005b6103f261050236600461268d565b610dd8565b600a54600b54600c5461042d92919083565b600754610494906001600160a01b031681565b604051601281526020016103b3565b600854610494906001600160a01b031681565b6104f261055c366004612734565b610e24565b6103cf61056f366004612661565b610eae565b6104f2610582366004612702565b610eea565b601454610494906001600160a01b031681565b6104f26105a8366004612734565b610f4e565b6104f2610fd8565b6103f26105c3366004612702565b61102c565b6103f26105d636600461268d565b611037565b600654610494906001600160a01b031681565b6103f26105fc366004612702565b60196020526000908152604090205481565b6103f261061c366004612702565b60176020526000908152604090205481565b6104f261063c366004612702565b611199565b6103f261064f3660046125a6565b6001600160a01b031660009081526020819052604090205490565b6104f26111f0565b6103f2611256565b6104f2610688366004612734565b611321565b6005546001600160a01b0316610494565b6104f26106ac3660046125a6565b6113ab565b601654610494906001600160a01b031681565b6103f26106d2366004612702565b611416565b6103f26106e5366004612702565b611531565b6103a6611573565b6104f2610700366004612661565b611582565b6103f26115bc565b6104f261071b3660046125a6565b61167f565b6103cf61072e366004612661565b6116ea565b6016546103cf90600160a01b900460ff1681565b6103cf610755366004612661565b611783565b6104f26107683660046125a6565b611790565b6103f261077b366004612702565b6117f1565b60105460115460125461042d92919083565b6103f26107a036600461268d565b6117fc565b6103f2611848565b6103f26107bb3660046125e7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601554610494906001600160a01b031681565b6104f26108073660046125a6565b61190b565b6103f261081a36600461268d565b6119d6565b600954610494906001600160a01b031681565b6103f2610840366004612702565b611b38565b6103f2610853366004612702565b611b7a565b6104f2610866366004612702565b611c95565b60606003805461087a9061294d565b80601f01602080910402602001604051908101604052809291908181526020018280546108a69061294d565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b5050505050905090565b600061090a338484611cec565b50600192915050565b6000808260405160200161092991815260200190565b60408051601f198184030181529181528151602092830120600090815260179092529020549392505050565b600061096082611e11565b92915050565b600c54600090819042106109955760405162461bcd60e51b815260040161098c906127dd565b60405180910390fd5b6013546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1191906125ca565b6001600160a01b031614610a375760405162461bcd60e51b815260040161098c9061284b565b610a4083611f06565b9050600083604051602001610a5791815260200190565b60408051601f1981840301815291815281516020928301206000818152601790935291204290559050610a8a3383611fe8565b60405182815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a25092915050565b600080805b83811015610b1257610af4858583818110610ae857610ae86129b9565b905060200201356120c7565b610afe90836128dd565b915080610b0a81612988565b915050610acb565b509392505050565b6000610b278484846121a9565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bac5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161098c565b610bb98533858403611cec565b506001949350505050565b600042600d6002015411610bea5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d26576000858583818110610c0a57610c0a6129b9565b6014546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906125ca565b6001600160a01b031614610cba5760405162461bcd60e51b815260040161098c9061284b565b6000610cc582611e11565b9050610cd181856128dd565b9350600082604051602001610ce891815260200190565b60408051601f19818403018152918152815160209283012060009081526018909252902042905550829150610d1e905081612988565b915050610bee565b50610d313382611fe8565b60405181815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a29392505050565b6009546001600160a01b0316331480610d9057506005546001600160a01b031633145b610dac5760405162461bcd60e51b815260040161098c906127b5565b600880546001600160a01b039092166001600160a01b0319928316811790915560158054909216179055565b600080805b83811015610b1257610e06858583818110610dfa57610dfa6129b9565b90506020020135611e11565b610e1090836128dd565b915080610e1c81612988565b915050610ddd565b6009546001600160a01b0316331480610e4757506005546001600160a01b031633145b610e635760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff1615610e8d5760405162461bcd60e51b815260040161098c9061289b565b610e9f83670de0b6b3a7640000612917565b60105560119190915560125550565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161090a918590610ee59086906128dd565b611cec565b6015546001600160a01b03163314610f0157600080fd5b610f0c600182612936565b9050600081604051602001610f2391815260200190565b60408051601f1981840301815291815281516020928301206000908152601990925290204290555050565b6009546001600160a01b0316331480610f7157506005546001600160a01b031633145b610f8d5760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff1615610fb75760405162461bcd60e51b815260040161098c9061289b565b610fc983670de0b6b3a7640000612917565b600a55600b91909155600c5550565b6009546001600160a01b0316331480610ffb57506005546001600160a01b031633145b6110175760405162461bcd60e51b815260040161098c906127b5565b6016805460ff60a01b1916600160a01b179055565b600061096082611f06565b600042600a600201541161105d5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d2657600085858381811061107d5761107d6129b9565b6013546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110791906125ca565b6001600160a01b03161461112d5760405162461bcd60e51b815260040161098c9061284b565b600061113882611f06565b905061114481856128dd565b935060008260405160200161115b91815260200190565b60408051601f19818403018152918152815160209283012060009081526017909252902042905550829150611191905081612988565b915050611061565b6013546001600160a01b031633146111b057600080fd5b6000816040516020016111c591815260200190565b60408051601f1981840301815291815281516020928301206000908152601790925290204290555050565b6005546001600160a01b0316331461124a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b6112546000612378565b565b600080600090506000601460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ad57600080fd5b505afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e5919061271b565b905060005b81811015611319576112fb81611e11565b61130590846128dd565b92508061131181612988565b9150506112ea565b509092915050565b6009546001600160a01b031633148061134457506005546001600160a01b031633145b6113605760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff161561138a5760405162461bcd60e51b815260040161098c9061289b565b61139c83670de0b6b3a7640000612917565b600d55600e91909155600f5550565b6009546001600160a01b03163314806113ce57506005546001600160a01b031633145b6113ea5760405162461bcd60e51b815260040161098c906127b5565b600780546001600160a01b039092166001600160a01b0319928316811790915560148054909216179055565b600f546000908190421061143c5760405162461bcd60e51b815260040161098c906127dd565b6014546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561148057600080fd5b505afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b891906125ca565b6001600160a01b0316146114de5760405162461bcd60e51b815260040161098c9061284b565b6114e783611e11565b90506000836040516020016114fe91815260200190565b60408051601f1981840301815291815281516020928301206000818152601890935291204290559050610a8a3383611fe8565b6000808260405160200161154791815260200190565b60408051601f198184030181529181528151602092830120600090815260189092529020549392505050565b60606004805461087a9061294d565b6016546001600160a01b03163314806115a557506014546001600160a01b031633145b6115ae57600080fd5b6115b882826123ca565b5050565b600080600090506000601560009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561161357600080fd5b505afa158015611627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164b919061271b565b905060005b8181101561131957611661816120c7565b61166b90846128dd565b92508061167781612988565b915050611650565b6009546001600160a01b03163314806116a257506005546001600160a01b031633145b6116be5760405162461bcd60e51b815260040161098c906127b5565b600680546001600160a01b039092166001600160a01b0319928316811790915560138054909216179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561176c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161098c565b6117793385858403611cec565b5060019392505050565b600061090a3384846121a9565b6009546001600160a01b03163314806117b357506005546001600160a01b031633145b6117cf5760405162461bcd60e51b815260040161098c906127b5565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610960826120c7565b600080805b83811015610b125761182a85858381811061181e5761181e6129b9565b90506020020135611f06565b61183490836128dd565b91508061184081612988565b915050611801565b600080600090506000601360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d7919061271b565b905060005b81811015611319576118ed81611f06565b6118f790846128dd565b92508061190381612988565b9150506118dc565b6005546001600160a01b031633146119655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b6001600160a01b0381166119ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098c565b6119d381612378565b50565b600042601060020154116119fc5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d26576000858583818110611a1c57611a1c6129b9565b6015546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa691906125ca565b6001600160a01b031614611acc5760405162461bcd60e51b815260040161098c9061284b565b6000611ad7826120c7565b9050611ae381856128dd565b9350600082604051602001611afa91815260200190565b60408051601f19818403018152918152815160209283012060009081526019909252902042905550829150611b30905081612988565b915050611a00565b60008082604051602001611b4e91815260200190565b60408051601f198184030181529181528151602092830120600090815260199092529020549392505050565b60125460009081904210611ba05760405162461bcd60e51b815260040161098c906127dd565b6015546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c91906125ca565b6001600160a01b031614611c425760405162461bcd60e51b815260040161098c9061284b565b611c4b836120c7565b9050600083604051602001611c6291815260200190565b60408051601f1981840301815291815281516020928301206000818152601990935291204290559050610a8a3383611fe8565b6014546001600160a01b03163314611cac57600080fd5b600081604051602001611cc191815260200190565b60408051601f1981840301815291815281516020928301206000908152601890925290204290555050565b6001600160a01b038316611d4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161098c565b6001600160a01b038216611daf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161098c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6014546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b158015611e5657600080fd5b505afa158015611e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8e91906125ca565b50600082604051602001611ea491815260200190565b60408051601f19818403018152918152815160209283012060008181526018909352912054600d54919250908115611eea57611ee1828242612510565b95945050505050565b6000611efc600d600101548342612510565b9695505050505050565b6013546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b158015611f4b57600080fd5b505afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8391906125ca565b50600082604051602001611f9991815260200190565b60408051601f19818403018152918152815160209283012060008181526017909352912054600a54919250908115611fd657611ee1828242612510565b6000611efc600a600101548342612510565b6001600160a01b03821661203e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161098c565b806002600082825461205091906128dd565b90915550506001600160a01b0382166000908152602081905260408120805483929061207d9084906128dd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6015546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561210c57600080fd5b505afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906125ca565b5060008260405160200161215a91815260200190565b60408051601f1981840301815291815281516020928301206000818152601990935291205460105491925090811561219757611ee1828242612510565b6000611efc6010600101548342612510565b6001600160a01b03831661220d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161098c565b6001600160a01b03821661226f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161098c565b6001600160a01b038316600090815260208190526040902054818110156122e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161098c565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061231e9084906128dd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161236a91815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661242a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161098c565b6001600160a01b0382166000908152602081905260409020548181101561249e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161098c565b6001600160a01b03831660009081526020819052604081208383039055600280548492906124cd908490612936565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611e04565b600083821161257e5760405162461bcd60e51b815260206004820152603460248201527f4c61737420636c61696d2064617465206d75737420626520736d616c6c65722060448201527307468616e20626c6f636b2074696d657374616d760641b606482015260840161098c565b600061258a8584612936565b905060006201518061259c8684612917565b611efc91906128f5565b6000602082840312156125b857600080fd5b81356125c3816129cf565b9392505050565b6000602082840312156125dc57600080fd5b81516125c3816129cf565b600080604083850312156125fa57600080fd5b8235612605816129cf565b91506020830135612615816129cf565b809150509250929050565b60008060006060848603121561263557600080fd5b8335612640816129cf565b92506020840135612650816129cf565b929592945050506040919091013590565b6000806040838503121561267457600080fd5b823561267f816129cf565b946020939093013593505050565b600080602083850312156126a057600080fd5b823567ffffffffffffffff808211156126b857600080fd5b818501915085601f8301126126cc57600080fd5b8135818111156126db57600080fd5b8660208260051b85010111156126f057600080fd5b60209290920196919550909350505050565b60006020828403121561271457600080fd5b5035919050565b60006020828403121561272d57600080fd5b5051919050565b60008060006060848603121561274957600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b8181101561278d57858101830151858201604001528201612771565b8181111561279f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d24b73b30b634b21039b2b73232b960911b604082015260600190565b6020808252601e908201527f54696d6520666f7220636c61696d696e672068617320657870697265642e0000604082015260600190565b6020808252601d908201527f54696d6520666f7220636c61696d696e67206861732065787069726564000000604082015260600190565b60208082526030908201527f43616c6c657220646f6573206e6f74206f776e2074686520746f6b656e20626560408201526f34b7339031b630b4b6b2b2103337b91760811b606082015260800190565b60208082526022908201527f43616e6e6f74206d6f6469667920656e64206461746573206166746572206c6f604082015261636b60f01b606082015260800190565b600082198211156128f0576128f06129a3565b500190565b60008261291257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612931576129316129a3565b500290565b600082821015612948576129486129a3565b500390565b600181811c9082168061296157607f821691505b6020821081141561298257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561299c5761299c6129a3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146119d357600080fdfea264697066735822122088fb6ed9fb5b33d434f50ba35a147a6b70206db2ca5c46ce9193074b9fab2c5664736f6c63430008070033000000000000000000000000000000000000000000000000000000000000dead000000000000000000000000000000000000000000000000000000000000dead000000000000000000000000626160bea9450bb87f95adffd8c2d8b185f48f8c00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103995760003560e01c8063655f9f87116101e9578063a4e2d6341161010f578063dd62ed3e116100ad578063f851a4401161007c578063f851a4401461081f578063f9d7777414610832578063fbb9b0e714610845578063fbcd783a1461085857600080fd5b8063dd62ed3e146107ad578063e76f2b60146107e6578063f2fde38b146107f9578063f43078d31461080c57600080fd5b8063cb2c3187116100e9578063cb2c31871461076d578063ce42d29e14610780578063d8a2c8b514610792578063dc16f41f146107a557600080fd5b8063a4e2d63414610733578063a9059cbb14610747578063b353a9f61461075a57600080fd5b806392b1350c116101875780639dc29fac116101565780639dc29fac146106f25780639ffe3be314610705578063a0f68ab41461070d578063a457c2d71461072057600080fd5b806392b1350c146106b15780639406f4db146106c45780639529e248146106d757806395d89b41146106ea57600080fd5b8063818861ab116101c3578063818861ab14610672578063896a8ef91461067a5780638da5cb5b1461068d5780638f7918e51461069e57600080fd5b8063655f9f871461062e57806370a0823114610641578063715018a61461066a57600080fd5b80632f1bdba1116102ce578063452119e81161026c57806354da574a1161023b57806354da574a146105c85780635e94f901146105db57806360c03818146105ee5780636558f7701461060e57600080fd5b8063452119e81461058757806346a39e4d1461059a578063511a9267146105ad578063549b2c1e146105b557600080fd5b806331da012b116102a857806331da012b1461053b5780633849c1d31461054e57806339509351146105615780633ade29b11461057457600080fd5b80632f1bdba114610507578063306bdb3514610519578063313ce5671461052c57600080fd5b80631c68f5101161033b57806329d1d6751161031557806329d1d675146104ac5780632c100544146104bf5780632d547669146104df5780632e2918af146104f457600080fd5b80631c68f5101461045b57806323b872dd1461046e578063279384921461048157600080fd5b806318160ddd1161037757806318160ddd1461040057806318df6fe9146104085780631a9c6e2a1461041b5780631c016fad1461044857600080fd5b806306fdde031461039e578063095ea7b3146103bc57806312841bfb146103df575b600080fd5b6103a661086b565b6040516103b39190612760565b60405180910390f35b6103cf6103ca366004612661565b6108fd565b60405190151581526020016103b3565b6103f26103ed366004612702565b610913565b6040519081526020016103b3565b6002546103f2565b6103f2610416366004612702565b610955565b600d54600e54600f5461042d92919083565b604080519384526020840192909252908201526060016103b3565b6103f2610456366004612702565b610966565b6103f261046936600461268d565b610ac6565b6103cf61047c366004612620565b610b1a565b601354610494906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b6103f26104ba36600461268d565b610bc4565b6103f26104cd366004612702565b60186020526000908152604090205481565b6104f26104ed3660046125a6565b610d6d565b005b6103f261050236600461268d565b610dd8565b600a54600b54600c5461042d92919083565b600754610494906001600160a01b031681565b604051601281526020016103b3565b600854610494906001600160a01b031681565b6104f261055c366004612734565b610e24565b6103cf61056f366004612661565b610eae565b6104f2610582366004612702565b610eea565b601454610494906001600160a01b031681565b6104f26105a8366004612734565b610f4e565b6104f2610fd8565b6103f26105c3366004612702565b61102c565b6103f26105d636600461268d565b611037565b600654610494906001600160a01b031681565b6103f26105fc366004612702565b60196020526000908152604090205481565b6103f261061c366004612702565b60176020526000908152604090205481565b6104f261063c366004612702565b611199565b6103f261064f3660046125a6565b6001600160a01b031660009081526020819052604090205490565b6104f26111f0565b6103f2611256565b6104f2610688366004612734565b611321565b6005546001600160a01b0316610494565b6104f26106ac3660046125a6565b6113ab565b601654610494906001600160a01b031681565b6103f26106d2366004612702565b611416565b6103f26106e5366004612702565b611531565b6103a6611573565b6104f2610700366004612661565b611582565b6103f26115bc565b6104f261071b3660046125a6565b61167f565b6103cf61072e366004612661565b6116ea565b6016546103cf90600160a01b900460ff1681565b6103cf610755366004612661565b611783565b6104f26107683660046125a6565b611790565b6103f261077b366004612702565b6117f1565b60105460115460125461042d92919083565b6103f26107a036600461268d565b6117fc565b6103f2611848565b6103f26107bb3660046125e7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601554610494906001600160a01b031681565b6104f26108073660046125a6565b61190b565b6103f261081a36600461268d565b6119d6565b600954610494906001600160a01b031681565b6103f2610840366004612702565b611b38565b6103f2610853366004612702565b611b7a565b6104f2610866366004612702565b611c95565b60606003805461087a9061294d565b80601f01602080910402602001604051908101604052809291908181526020018280546108a69061294d565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b5050505050905090565b600061090a338484611cec565b50600192915050565b6000808260405160200161092991815260200190565b60408051601f198184030181529181528151602092830120600090815260179092529020549392505050565b600061096082611e11565b92915050565b600c54600090819042106109955760405162461bcd60e51b815260040161098c906127dd565b60405180910390fd5b6013546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1191906125ca565b6001600160a01b031614610a375760405162461bcd60e51b815260040161098c9061284b565b610a4083611f06565b9050600083604051602001610a5791815260200190565b60408051601f1981840301815291815281516020928301206000818152601790935291204290559050610a8a3383611fe8565b60405182815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a25092915050565b600080805b83811015610b1257610af4858583818110610ae857610ae86129b9565b905060200201356120c7565b610afe90836128dd565b915080610b0a81612988565b915050610acb565b509392505050565b6000610b278484846121a9565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bac5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161098c565b610bb98533858403611cec565b506001949350505050565b600042600d6002015411610bea5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d26576000858583818110610c0a57610c0a6129b9565b6014546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b158015610c5c57600080fd5b505afa158015610c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9491906125ca565b6001600160a01b031614610cba5760405162461bcd60e51b815260040161098c9061284b565b6000610cc582611e11565b9050610cd181856128dd565b9350600082604051602001610ce891815260200190565b60408051601f19818403018152918152815160209283012060009081526018909252902042905550829150610d1e905081612988565b915050610bee565b50610d313382611fe8565b60405181815233907fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e04869060200160405180910390a29392505050565b6009546001600160a01b0316331480610d9057506005546001600160a01b031633145b610dac5760405162461bcd60e51b815260040161098c906127b5565b600880546001600160a01b039092166001600160a01b0319928316811790915560158054909216179055565b600080805b83811015610b1257610e06858583818110610dfa57610dfa6129b9565b90506020020135611e11565b610e1090836128dd565b915080610e1c81612988565b915050610ddd565b6009546001600160a01b0316331480610e4757506005546001600160a01b031633145b610e635760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff1615610e8d5760405162461bcd60e51b815260040161098c9061289b565b610e9f83670de0b6b3a7640000612917565b60105560119190915560125550565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161090a918590610ee59086906128dd565b611cec565b6015546001600160a01b03163314610f0157600080fd5b610f0c600182612936565b9050600081604051602001610f2391815260200190565b60408051601f1981840301815291815281516020928301206000908152601990925290204290555050565b6009546001600160a01b0316331480610f7157506005546001600160a01b031633145b610f8d5760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff1615610fb75760405162461bcd60e51b815260040161098c9061289b565b610fc983670de0b6b3a7640000612917565b600a55600b91909155600c5550565b6009546001600160a01b0316331480610ffb57506005546001600160a01b031633145b6110175760405162461bcd60e51b815260040161098c906127b5565b6016805460ff60a01b1916600160a01b179055565b600061096082611f06565b600042600a600201541161105d5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d2657600085858381811061107d5761107d6129b9565b6013546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110791906125ca565b6001600160a01b03161461112d5760405162461bcd60e51b815260040161098c9061284b565b600061113882611f06565b905061114481856128dd565b935060008260405160200161115b91815260200190565b60408051601f19818403018152918152815160209283012060009081526017909252902042905550829150611191905081612988565b915050611061565b6013546001600160a01b031633146111b057600080fd5b6000816040516020016111c591815260200190565b60408051601f1981840301815291815281516020928301206000908152601790925290204290555050565b6005546001600160a01b0316331461124a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b6112546000612378565b565b600080600090506000601460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ad57600080fd5b505afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e5919061271b565b905060005b81811015611319576112fb81611e11565b61130590846128dd565b92508061131181612988565b9150506112ea565b509092915050565b6009546001600160a01b031633148061134457506005546001600160a01b031633145b6113605760405162461bcd60e51b815260040161098c906127b5565b601654600160a01b900460ff161561138a5760405162461bcd60e51b815260040161098c9061289b565b61139c83670de0b6b3a7640000612917565b600d55600e91909155600f5550565b6009546001600160a01b03163314806113ce57506005546001600160a01b031633145b6113ea5760405162461bcd60e51b815260040161098c906127b5565b600780546001600160a01b039092166001600160a01b0319928316811790915560148054909216179055565b600f546000908190421061143c5760405162461bcd60e51b815260040161098c906127dd565b6014546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b15801561148057600080fd5b505afa158015611494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b891906125ca565b6001600160a01b0316146114de5760405162461bcd60e51b815260040161098c9061284b565b6114e783611e11565b90506000836040516020016114fe91815260200190565b60408051601f1981840301815291815281516020928301206000818152601890935291204290559050610a8a3383611fe8565b6000808260405160200161154791815260200190565b60408051601f198184030181529181528151602092830120600090815260189092529020549392505050565b60606004805461087a9061294d565b6016546001600160a01b03163314806115a557506014546001600160a01b031633145b6115ae57600080fd5b6115b882826123ca565b5050565b600080600090506000601560009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561161357600080fd5b505afa158015611627573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164b919061271b565b905060005b8181101561131957611661816120c7565b61166b90846128dd565b92508061167781612988565b915050611650565b6009546001600160a01b03163314806116a257506005546001600160a01b031633145b6116be5760405162461bcd60e51b815260040161098c906127b5565b600680546001600160a01b039092166001600160a01b0319928316811790915560138054909216179055565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561176c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161098c565b6117793385858403611cec565b5060019392505050565b600061090a3384846121a9565b6009546001600160a01b03163314806117b357506005546001600160a01b031633145b6117cf5760405162461bcd60e51b815260040161098c906127b5565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000610960826120c7565b600080805b83811015610b125761182a85858381811061181e5761181e6129b9565b90506020020135611f06565b61183490836128dd565b91508061184081612988565b915050611801565b600080600090506000601360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561189f57600080fd5b505afa1580156118b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d7919061271b565b905060005b81811015611319576118ed81611f06565b6118f790846128dd565b92508061190381612988565b9150506118dc565b6005546001600160a01b031633146119655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b6001600160a01b0381166119ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098c565b6119d381612378565b50565b600042601060020154116119fc5760405162461bcd60e51b815260040161098c90612814565b6000805b83811015610d26576000858583818110611a1c57611a1c6129b9565b6015546040516331a9108f60e11b8152602092909202939093013560048201819052935033926001600160a01b03169150636352211e9060240160206040518083038186803b158015611a6e57600080fd5b505afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa691906125ca565b6001600160a01b031614611acc5760405162461bcd60e51b815260040161098c9061284b565b6000611ad7826120c7565b9050611ae381856128dd565b9350600082604051602001611afa91815260200190565b60408051601f19818403018152918152815160209283012060009081526019909252902042905550829150611b30905081612988565b915050611a00565b60008082604051602001611b4e91815260200190565b60408051601f198184030181529181528151602092830120600090815260199092529020549392505050565b60125460009081904210611ba05760405162461bcd60e51b815260040161098c906127dd565b6015546040516331a9108f60e11b81526004810185905233916001600160a01b031690636352211e9060240160206040518083038186803b158015611be457600080fd5b505afa158015611bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1c91906125ca565b6001600160a01b031614611c425760405162461bcd60e51b815260040161098c9061284b565b611c4b836120c7565b9050600083604051602001611c6291815260200190565b60408051601f1981840301815291815281516020928301206000818152601990935291204290559050610a8a3383611fe8565b6014546001600160a01b03163314611cac57600080fd5b600081604051602001611cc191815260200190565b60408051601f1981840301815291815281516020928301206000908152601890925290204290555050565b6001600160a01b038316611d4e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161098c565b6001600160a01b038216611daf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161098c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6014546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b158015611e5657600080fd5b505afa158015611e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8e91906125ca565b50600082604051602001611ea491815260200190565b60408051601f19818403018152918152815160209283012060008181526018909352912054600d54919250908115611eea57611ee1828242612510565b95945050505050565b6000611efc600d600101548342612510565b9695505050505050565b6013546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b158015611f4b57600080fd5b505afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8391906125ca565b50600082604051602001611f9991815260200190565b60408051601f19818403018152918152815160209283012060008181526017909352912054600a54919250908115611fd657611ee1828242612510565b6000611efc600a600101548342612510565b6001600160a01b03821661203e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161098c565b806002600082825461205091906128dd565b90915550506001600160a01b0382166000908152602081905260408120805483929061207d9084906128dd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6015546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561210c57600080fd5b505afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906125ca565b5060008260405160200161215a91815260200190565b60408051601f1981840301815291815281516020928301206000818152601990935291205460105491925090811561219757611ee1828242612510565b6000611efc6010600101548342612510565b6001600160a01b03831661220d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161098c565b6001600160a01b03821661226f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161098c565b6001600160a01b038316600090815260208190526040902054818110156122e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161098c565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061231e9084906128dd565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161236a91815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661242a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161098c565b6001600160a01b0382166000908152602081905260409020548181101561249e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161098c565b6001600160a01b03831660009081526020819052604081208383039055600280548492906124cd908490612936565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611e04565b600083821161257e5760405162461bcd60e51b815260206004820152603460248201527f4c61737420636c61696d2064617465206d75737420626520736d616c6c65722060448201527307468616e20626c6f636b2074696d657374616d760641b606482015260840161098c565b600061258a8584612936565b905060006201518061259c8684612917565b611efc91906128f5565b6000602082840312156125b857600080fd5b81356125c3816129cf565b9392505050565b6000602082840312156125dc57600080fd5b81516125c3816129cf565b600080604083850312156125fa57600080fd5b8235612605816129cf565b91506020830135612615816129cf565b809150509250929050565b60008060006060848603121561263557600080fd5b8335612640816129cf565b92506020840135612650816129cf565b929592945050506040919091013590565b6000806040838503121561267457600080fd5b823561267f816129cf565b946020939093013593505050565b600080602083850312156126a057600080fd5b823567ffffffffffffffff808211156126b857600080fd5b818501915085601f8301126126cc57600080fd5b8135818111156126db57600080fd5b8660208260051b85010111156126f057600080fd5b60209290920196919550909350505050565b60006020828403121561271457600080fd5b5035919050565b60006020828403121561272d57600080fd5b5051919050565b60008060006060848603121561274957600080fd5b505081359360208301359350604090920135919050565b600060208083528351808285015260005b8181101561278d57858101830151858201604001528201612771565b8181111561279f576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600e908201526d24b73b30b634b21039b2b73232b960911b604082015260600190565b6020808252601e908201527f54696d6520666f7220636c61696d696e672068617320657870697265642e0000604082015260600190565b6020808252601d908201527f54696d6520666f7220636c61696d696e67206861732065787069726564000000604082015260600190565b60208082526030908201527f43616c6c657220646f6573206e6f74206f776e2074686520746f6b656e20626560408201526f34b7339031b630b4b6b2b2103337b91760811b606082015260800190565b60208082526022908201527f43616e6e6f74206d6f6469667920656e64206461746573206166746572206c6f604082015261636b60f01b606082015260800190565b600082198211156128f0576128f06129a3565b500190565b60008261291257634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612931576129316129a3565b500290565b600082821015612948576129486129a3565b500390565b600181811c9082168061296157607f821691505b6020821081141561298257634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561299c5761299c6129a3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146119d357600080fdfea264697066735822122088fb6ed9fb5b33d434f50ba35a147a6b70206db2ca5c46ce9193074b9fab2c5664736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000dead000000000000000000000000000000000000000000000000000000000000dead000000000000000000000000626160bea9450bb87f95adffd8c2d8b185f48f8c00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000a
-----Decoded View---------------
Arg [0] : _metaKidzAddress (address): 0x000000000000000000000000000000000000dEaD
Arg [1] : _metaKidzPAAddress (address): 0x000000000000000000000000000000000000dEaD
Arg [2] : _metaKidzGCAddress (address): 0x626160BEA9450bb87F95AdFFd8c2d8B185F48f8c
Arg [3] : _metaKidzBaseRate (uint256): 5
Arg [4] : _metaKidzPABaseRate (uint256): 5
Arg [5] : _metaKidzGCBaseRate (uint256): 10
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000dead
Arg [1] : 000000000000000000000000000000000000000000000000000000000000dead
Arg [2] : 000000000000000000000000626160bea9450bb87f95adffd8c2d8b185f48f8c
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode Sourcemap
18559:18560:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6170:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8337:169;;;;;;:::i;:::-;;:::i;:::-;;;3569:14:1;;3562:22;3544:41;;3532:2;3517:18;8337:169:0;3404:187:1;31041:210:0;;;;;;:::i;:::-;;:::i;:::-;;;11643:25:1;;;11631:2;11616:18;31041:210:0;11497:177:1;7290:108:0;7378:12;;7290:108;;28426:166;;;;;;:::i;:::-;;:::i;19002:50::-;;;;;;;;;;;;;;;;;11881:25:1;;;11937:2;11922:18;;11915:34;;;;11965:18;;;11958:34;11869:2;11854:18;19002:50:0;11679:319:1;22014:861:0;;;;;;:::i;:::-;;:::i;29510:362::-;;;;;;:::i;:::-;;:::i;8988:480::-;;;;;;:::i;:::-;;:::i;19116:26::-;;;;;-1:-1:-1;;;;;19116:26:0;;;;;;-1:-1:-1;;;;;3360:32:1;;;3342:51;;3330:2;3315:18;19116:26:0;3196:203:1;25800:1139:0;;;;;;:::i;:::-;;:::i;19446:54::-;;;;;;:::i;:::-;;;;;;;;;;;;;;36855:261;;;;;;:::i;:::-;;:::i;:::-;;29140:362;;;;;;:::i;:::-;;:::i;18947:48::-;;;;;;;;;;;;;18668:40;;;;;-1:-1:-1;;;;;18668:40:0;;;7132:93;;;7215:2;12145:36:1;;12133:2;12118:18;7132:93:0;12003:184:1;18715:40:0;;;;;-1:-1:-1;;;;;18715:40:0;;;21584:422;;;;;;:::i;:::-;;:::i;9877:215::-;;;;;;:::i;:::-;;:::i;35155:281::-;;;;;;:::i;:::-;;:::i;19149:28::-;;;;;-1:-1:-1;;;;;19149:28:0;;;20732:414;;;;;;:::i;:::-;;:::i;28094:150::-;;;:::i;28252:162::-;;;;;;:::i;:::-;;:::i;24677:1115::-;;;;;;:::i;:::-;;:::i;18623:38::-;;;;;-1:-1:-1;;;;;18623:38:0;;;19507:54;;;;;;:::i;:::-;;;;;;;;;;;;;;19387:52;;;;;;:::i;:::-;;;;;;;;;;;;;;35444:243;;;;;;:::i;:::-;;:::i;7461:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;7562:18:0;7535:7;7562:18;;;;;;;;;;;;7461:127;17671:94;;;:::i;30263:381::-;;;:::i;21154:422::-;;;;;;:::i;:::-;;:::i;17020:87::-;17093:6;;-1:-1:-1;;;;;17093:6:0;17020:87;;36334:260;;;;;;:::i;:::-;;:::i;19219:27::-;;;;;-1:-1:-1;;;;;19219:27:0;;;22883:899;;;;;;:::i;:::-;;:::i;31259:214::-;;;;;;:::i;:::-;;:::i;6389:104::-;;;:::i;35952:171::-;;;;;;:::i;:::-;;:::i;30652:381::-;;;:::i;36600:249::-;;;;;;:::i;:::-;;:::i;10595:401::-;;;;;;:::i;:::-;;:::i;19352:28::-;;;;;-1:-1:-1;;;19352:28:0;;;;;;7801:175;;;;;;:::i;:::-;;:::i;36129:199::-;;;;;;:::i;:::-;;:::i;28600:166::-;;;;;;:::i;:::-;;:::i;19059:50::-;;;;;;;;;;;;;28774:358;;;;;;:::i;:::-;;:::i;29880:375::-;;;:::i;8039:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;8155:18:0;;;8128:7;8155:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8039:151;19184:28;;;;;-1:-1:-1;;;;;19184:28:0;;;17920:192;;;;;;:::i;:::-;;:::i;26947:1139::-;;;;;;:::i;:::-;;:::i;18762:65::-;;;;;-1:-1:-1;;;;;18762:65:0;;;31481:214;;;;;;:::i;:::-;;:::i;23790:879::-;;;;;;:::i;:::-;;:::i;35695:249::-;;;;;;:::i;:::-;;:::i;6170:100::-;6224:13;6257:5;6250:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6170:100;:::o;8337:169::-;8420:4;8437:39;682:10;8460:7;8469:6;8437:8;:39::i;:::-;-1:-1:-1;8494:4:0;8337:169;;;;:::o;31041:210::-;31116:7;31138:20;31182:8;31171:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;31171:20:0;;;;-1:-1:-1;;31171:20:0;;;;;;;;;31161:31;;31171:20;31161:31;;;;31212;;;;:17;:31;;;;;;;31041:210;-1:-1:-1;;;31041:210:0:o;28426:166::-;28512:7;28539:45;28575:8;28539:35;:45::i;:::-;28532:52;28426:166;-1:-1:-1;;28426:166:0:o;22014:861::-;22160:28;;22088:7;;;;22191:15;-1:-1:-1;22152:89:0;;;;-1:-1:-1;;;22152:89:0;;;;;;;:::i;:::-;;;;;;;;;22260:9;;:35;;-1:-1:-1;;;22260:35:0;;;;;11643:25:1;;;22299:10:0;;-1:-1:-1;;;;;22260:9:0;;:17;;11616:18:1;;22260:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22260:49:0;;22252:110;;;;-1:-1:-1;;;22252:110:0;;;;;;;:::i;:::-;22399:51;22433:16;22399:33;:51::i;:::-;22375:75;;22533:20;22577:16;22566:28;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;22566:28:0;;;;-1:-1:-1;;22566:28:0;;;;;;;;;22556:39;;22566:28;22556:39;;;;22606:31;;;;:17;:31;;;;;22640:15;22606:49;;22556:39;-1:-1:-1;22725:40:0;22731:10;22743:21;22725:5;:40::i;:::-;22781:45;;11643:25:1;;;22792:10:0;;22781:45;;11631:2:1;11616:18;22781:45:0;;;;;;;-1:-1:-1;22846:21:0;22014:861;-1:-1:-1;;22014:861:0:o;29510:362::-;29609:7;;;29677:147;29696:20;;;29677:147;;;29763:49;29799:9;;29809:1;29799:12;;;;;;;:::i;:::-;;;;;;;29763:35;:49::i;:::-;29738:74;;;;:::i;:::-;;-1:-1:-1;29718:3:0;;;;:::i;:::-;;;;29677:147;;;-1:-1:-1;29843:21:0;29510:362;-1:-1:-1;;;29510:362:0:o;8988:480::-;9128:4;9145:36;9155:6;9163:9;9174:6;9145:9;:36::i;:::-;-1:-1:-1;;;;;9221:19:0;;9194:24;9221:19;;;:11;:19;;;;;;;;682:10;9221:33;;;;;;;;9273:26;;;;9265:79;;;;-1:-1:-1;;;9265:79:0;;6992:2:1;9265:79:0;;;6974:21:1;7031:2;7011:18;;;7004:30;7070:34;7050:18;;;7043:62;-1:-1:-1;;;7121:18:1;;;7114:38;7169:19;;9265:79:0;6790:404:1;9265:79:0;9372:57;9381:6;682:10;9422:6;9403:16;:25;9372:8;:57::i;:::-;-1:-1:-1;9456:4:0;;8988:480;-1:-1:-1;;;;8988:480:0:o;25800:1139::-;25891:7;25952:15;25919:26;:30;;;:48;25911:90;;;;-1:-1:-1;;;25911:90:0;;;;;;;:::i;:::-;26014:29;26064:9;26060:662;26079:30;;;26060:662;;;26131:26;26160:19;;26180:1;26160:22;;;;;;;:::i;:::-;26207:11;;:39;;-1:-1:-1;;;26207:39:0;;26160:22;;;;;;;;;;26207:39;;;11643:25:1;;;26160:22:0;-1:-1:-1;26250:10:0;;-1:-1:-1;;;;;26207:11:0;;-1:-1:-1;26207:19:0;;11616:18:1;;26207:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26207:53:0;;26199:114;;;;-1:-1:-1;;;26199:114:0;;;;;;;:::i;:::-;26330:23;26356:55;26392:18;26356:35;:55::i;:::-;26330:81;-1:-1:-1;26450:39:0;26330:81;26450:21;:39;:::i;:::-;26426:63;;26580:20;26624:18;26613:30;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;26613:30:0;;;;-1:-1:-1;;26613:30:0;;;;;;;;;26603:41;;26613:30;26603:41;;;;26659:33;;;;:19;:33;;;;;26695:15;26659:51;;-1:-1:-1;26111:3:0;;-1:-1:-1;26111:3:0;;-1:-1:-1;26111:3:0;;:::i;:::-;;;;26060:662;;;;26789:40;26795:10;26807:21;26789:5;:40::i;:::-;26845:45;;11643:25:1;;;26856:10:0;;26845:45;;11631:2:1;11616:18;26845:45:0;;;;;;;26910:21;25800:1139;-1:-1:-1;;;25800:1139:0:o;36855:261::-;36953:5;;-1:-1:-1;;;;;36953:5:0;36939:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;36962:10;:21;36939:44;36931:71;;;;-1:-1:-1;;;36931:71:0;;;;;;;:::i;:::-;37010:25;:46;;-1:-1:-1;;;;;37010:46:0;;;-1:-1:-1;;;;;;37010:46:0;;;;;;;;37067:11;:44;;;;;;;;36855:261::o;29140:362::-;29239:7;;;29307:147;29326:20;;;29307:147;;;29393:49;29429:9;;29439:1;29429:12;;;;;;;:::i;:::-;;;;;;;29393:35;:49::i;:::-;29368:74;;;;:::i;:::-;;-1:-1:-1;29348:3:0;;;;:::i;:::-;;;;29307:147;;21584:422;21712:5;;-1:-1:-1;;;;;21712:5:0;21698:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;21721:10;:21;21698:44;21690:71;;;;-1:-1:-1;;;21690:71:0;;;;;;;:::i;:::-;21781:8;;-1:-1:-1;;;21781:8:0;;;;21780:9;21772:56;;;;-1:-1:-1;;;21772:56:0;;;;;;;:::i;:::-;21877:21;:9;21890:8;21877:21;:::i;:::-;21839:26;:59;21909:32;:41;;;;21961:30;:37;-1:-1:-1;21584:422:0:o;9877:215::-;682:10;9965:4;10014:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10014:34:0;;;;;;;;;;9965:4;;9982:80;;10005:7;;10014:47;;10051:10;;10014:47;:::i;:::-;9982:8;:80::i;35155:281::-;35256:11;;-1:-1:-1;;;;;35256:11:0;35234:10;:34;35226:43;;;;;;35291:10;35300:1;35291:8;:10;:::i;:::-;35280:21;;35312:20;35356:8;35345:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;35345:20:0;;;;-1:-1:-1;;35345:20:0;;;;;;;;;35335:31;;35345:20;35335:31;;;;35377:33;;;;:19;:33;;;;;35413:15;35377:51;;-1:-1:-1;;35155:281:0:o;20732:414::-;20858:5;;-1:-1:-1;;;;;20858:5:0;20844:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;20867:10;:21;20844:44;20836:71;;;;-1:-1:-1;;;20836:71:0;;;;;;;:::i;:::-;20927:8;;-1:-1:-1;;;20927:8:0;;;;20926:9;20918:56;;;;-1:-1:-1;;;20918:56:0;;;;;;;:::i;:::-;21021:21;:9;21034:8;21021:21;:::i;:::-;20985:24;:57;21053:30;:39;;;;21103:28;:35;-1:-1:-1;20732:414:0:o;28094:150::-;28161:5;;-1:-1:-1;;;;;28161:5:0;28147:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;28170:10;:21;28147:44;28139:71;;;;-1:-1:-1;;;28139:71:0;;;;;;;:::i;:::-;28221:8;:15;;-1:-1:-1;;;;28221:15:0;-1:-1:-1;;;28221:15:0;;;28094:150::o;28252:162::-;28336:7;28363:43;28397:8;28363:33;:43::i;24677:1115::-;24764:7;24823:15;24792:24;:28;;;:46;24784:88;;;;-1:-1:-1;;;24784:88:0;;;;;;;:::i;:::-;24885:29;24935:9;24931:644;24950:28;;;24931:644;;;25000:24;25027:17;;25045:1;25027:20;;;;;;;:::i;:::-;25072:9;;:35;;-1:-1:-1;;;25072:35:0;;25027:20;;;;;;;;;;25072:35;;;11643:25:1;;;25027:20:0;-1:-1:-1;25111:10:0;;-1:-1:-1;;;;;25072:9:0;;-1:-1:-1;25072:17:0;;11616:18:1;;25072:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25072:49:0;;25064:110;;;;-1:-1:-1;;;25064:110:0;;;;;;;:::i;:::-;25191:23;25217:51;25251:16;25217:33;:51::i;:::-;25191:77;-1:-1:-1;25307:39:0;25191:77;25307:21;:39;:::i;:::-;25283:63;;25437:20;25481:16;25470:28;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;25470:28:0;;;;-1:-1:-1;;25470:28:0;;;;;;;;;25460:39;;25470:28;25460:39;;;;25514:31;;;;:17;:31;;;;;25548:15;25514:49;;-1:-1:-1;24980:3:0;;-1:-1:-1;24980:3:0;;-1:-1:-1;24980:3:0;;:::i;:::-;;;;24931:644;;35444:243;35543:9;;-1:-1:-1;;;;;35543:9:0;35521:10;:32;35513:41;;;;;;35565:20;35609:8;35598:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;35598:20:0;;;;-1:-1:-1;;35598:20:0;;;;;;;;;35588:31;;35598:20;35588:31;;;;35630;;;;:17;:31;;;;;35664:15;35630:49;;-1:-1:-1;;35444:243:0:o;17671:94::-;17093:6;;-1:-1:-1;;;;;17093:6:0;682:10;17240:23;17232:68;;;;-1:-1:-1;;;17232:68:0;;7401:2:1;17232:68:0;;;7383:21:1;;;7420:18;;;7413:30;7479:34;7459:18;;;7452:62;7531:18;;17232:68:0;7199:356:1;17232:68:0;17736:21:::1;17754:1;17736:9;:21::i;:::-;17671:94::o:0;30263:381::-;30341:7;30361:29;30393:1;30361:33;;30405:19;30427:11;;;;;;;;;-1:-1:-1;;;;;30427:11:0;-1:-1:-1;;;;;30427:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30405:47;;30469:9;30465:131;30488:11;30484:1;:15;30465:131;;;30546:38;30582:1;30546:35;:38::i;:::-;30521:63;;;;:::i;:::-;;-1:-1:-1;30501:3:0;;;;:::i;:::-;;;;30465:131;;;-1:-1:-1;30615:21:0;;30263:381;-1:-1:-1;;30263:381:0:o;21154:422::-;21282:5;;-1:-1:-1;;;;;21282:5:0;21268:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;21291:10;:21;21268:44;21260:71;;;;-1:-1:-1;;;21260:71:0;;;;;;;:::i;:::-;21351:8;;-1:-1:-1;;;21351:8:0;;;;21350:9;21342:56;;;;-1:-1:-1;;;21342:56:0;;;;;;;:::i;:::-;21447:21;:9;21460:8;21447:21;:::i;:::-;21409:26;:59;21479:32;:41;;;;21531:30;:37;-1:-1:-1;21154:422:0:o;36334:260::-;36432:5;;-1:-1:-1;;;;;36432:5:0;36418:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;36441:10;:21;36418:44;36410:71;;;;-1:-1:-1;;;36410:71:0;;;;;;;:::i;:::-;36489:25;:46;;-1:-1:-1;;;;;36489:46:0;;;-1:-1:-1;;;;;;36489:46:0;;;;;;;;36546:11;:43;;;;;;;;36334:260::o;22883:899::-;23035:30;;22962:7;;;;23068:15;-1:-1:-1;23027:91:0;;;;-1:-1:-1;;;23027:91:0;;;;;;;:::i;:::-;23137:11;;:39;;-1:-1:-1;;;23137:39:0;;;;;11643:25:1;;;23180:10:0;;-1:-1:-1;;;;;23137:11:0;;:19;;11616:18:1;;23137:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23137:53:0;;23129:114;;;;-1:-1:-1;;;23129:114:0;;;;;;;:::i;:::-;23280:55;23316:18;23280:35;:55::i;:::-;23256:79;;23418:30;23472:18;23461:30;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;23461:30:0;;;;-1:-1:-1;;23461:30:0;;;;;;;;;23451:41;;23461:30;23451:41;;;;23503:43;;;;:19;:43;;;;;23549:15;23503:61;;23451:41;-1:-1:-1;23632:40:0;23638:10;23650:21;23632:5;:40::i;31259:214::-;31336:7;31358:20;31402:8;31391:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;31391:20:0;;;;-1:-1:-1;;31391:20:0;;;;;;;;;31381:31;;31391:20;31381:31;;;;31432:33;;;;:19;:33;;;;;;;31259:214;-1:-1:-1;;;31259:214:0:o;6389:104::-;6445:13;6478:7;6471:14;;;;;:::i;35952:171::-;36042:10;;-1:-1:-1;;;;;36042:10:0;36020;:33;;:71;;-1:-1:-1;36079:11:0;;-1:-1:-1;;;;;36079:11:0;36057:10;:34;36020:71;36012:80;;;;;;36097:21;36103:5;36110:7;36097:5;:21::i;:::-;35952:171;;:::o;30652:381::-;30730:7;30750:29;30782:1;30750:33;;30794:19;30816:11;;;;;;;;;-1:-1:-1;;;;;30816:11:0;-1:-1:-1;;;;;30816:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30794:47;;30858:9;30854:131;30877:11;30873:1;:15;30854:131;;;30935:38;30971:1;30935:35;:38::i;:::-;30910:63;;;;:::i;:::-;;-1:-1:-1;30890:3:0;;;;:::i;:::-;;;;30854:131;;36600:249;36694:5;;-1:-1:-1;;;;;36694:5:0;36680:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;36703:10;:21;36680:44;36672:71;;;;-1:-1:-1;;;36672:71:0;;;;;;;:::i;:::-;36751:23;:42;;-1:-1:-1;;;;;36751:42:0;;;-1:-1:-1;;;;;;36751:42:0;;;;;;;;36804:9;:40;;;;;;;;36600:249::o;10595:401::-;682:10;10688:4;10732:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10732:34:0;;;;;;;;;;10785:35;;;;10777:85;;;;-1:-1:-1;;;10777:85:0;;10933:2:1;10777:85:0;;;10915:21:1;10972:2;10952:18;;;10945:30;11011:34;10991:18;;;10984:62;-1:-1:-1;;;11062:18:1;;;11055:35;11107:19;;10777:85:0;10731:401:1;10777:85:0;10890:67;682:10;10913:7;10941:15;10922:16;:34;10890:8;:67::i;:::-;-1:-1:-1;10984:4:0;;10595:401;-1:-1:-1;;;10595:401:0:o;7801:175::-;7887:4;7904:42;682:10;7928:9;7939:6;7904:9;:42::i;36129:199::-;36225:5;;-1:-1:-1;;;;;36225:5:0;36211:10;:19;;:44;;-1:-1:-1;17093:6:0;;-1:-1:-1;;;;;17093:6:0;36234:10;:21;36211:44;36203:71;;;;-1:-1:-1;;;36203:71:0;;;;;;;:::i;:::-;36282:10;:41;;-1:-1:-1;;;;;;36282:41:0;-1:-1:-1;;;;;36282:41:0;;;;;;;;;;36129:199::o;28600:166::-;28686:7;28713:45;28749:8;28713:35;:45::i;28774:358::-;28871:7;;;28939:145;28958:20;;;28939:145;;;29025:47;29059:9;;29069:1;29059:12;;;;;;;:::i;:::-;;;;;;;29025:33;:47::i;:::-;29000:72;;;;:::i;:::-;;-1:-1:-1;28980:3:0;;;;:::i;:::-;;;;28939:145;;29880:375;29956:7;29976:29;30008:1;29976:33;;30020:19;30042:9;;;;;;;;;-1:-1:-1;;;;;30042:9:0;-1:-1:-1;;;;;30042:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30020:45;;30082:9;30078:129;30101:11;30097:1;:15;30078:129;;;30159:36;30193:1;30159:33;:36::i;:::-;30134:61;;;;:::i;:::-;;-1:-1:-1;30114:3:0;;;;:::i;:::-;;;;30078:129;;17920:192;17093:6;;-1:-1:-1;;;;;17093:6:0;682:10;17240:23;17232:68;;;;-1:-1:-1;;;17232:68:0;;7401:2:1;17232:68:0;;;7383:21:1;;;7420:18;;;7413:30;7479:34;7459:18;;;7452:62;7531:18;;17232:68:0;7199:356:1;17232:68:0;-1:-1:-1;;;;;18009:22:0;::::1;18001:73;;;::::0;-1:-1:-1;;;18001:73:0;;5432:2:1;18001:73:0::1;::::0;::::1;5414:21:1::0;5471:2;5451:18;;;5444:30;5510:34;5490:18;;;5483:62;-1:-1:-1;;;5561:18:1;;;5554:36;5607:19;;18001:73:0::1;5230:402:1::0;18001:73:0::1;18085:19;18095:8;18085:9;:19::i;:::-;17920:192:::0;:::o;26947:1139::-;27038:7;27099:15;27066:26;:30;;;:48;27058:90;;;;-1:-1:-1;;;27058:90:0;;;;;;;:::i;:::-;27161:29;27211:9;27207:662;27226:30;;;27207:662;;;27278:26;27307:19;;27327:1;27307:22;;;;;;;:::i;:::-;27354:11;;:39;;-1:-1:-1;;;27354:39:0;;27307:22;;;;;;;;;;27354:39;;;11643:25:1;;;27307:22:0;-1:-1:-1;27397:10:0;;-1:-1:-1;;;;;27354:11:0;;-1:-1:-1;27354:19:0;;11616:18:1;;27354:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27354:53:0;;27346:114;;;;-1:-1:-1;;;27346:114:0;;;;;;;:::i;:::-;27477:23;27503:55;27539:18;27503:35;:55::i;:::-;27477:81;-1:-1:-1;27597:39:0;27477:81;27597:21;:39;:::i;:::-;27573:63;;27727:20;27771:18;27760:30;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;27760:30:0;;;;-1:-1:-1;;27760:30:0;;;;;;;;;27750:41;;27760:30;27750:41;;;;27806:33;;;;:19;:33;;;;;27842:15;27806:51;;-1:-1:-1;27258:3:0;;-1:-1:-1;27258:3:0;;-1:-1:-1;27258:3:0;;:::i;:::-;;;;27207:662;;31481:214;31558:7;31580:20;31624:8;31613:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;31613:20:0;;;;-1:-1:-1;;31613:20:0;;;;;;;;;31603:31;;31613:20;31603:31;;;;31654:33;;;;:19;:33;;;;;;;31481:214;-1:-1:-1;;;31481:214:0:o;23790:879::-;23940:30;;23868:7;;;;23973:15;-1:-1:-1;23932:91:0;;;;-1:-1:-1;;;23932:91:0;;;;;;;:::i;:::-;24042:11;;:39;;-1:-1:-1;;;24042:39:0;;;;;11643:25:1;;;24085:10:0;;-1:-1:-1;;;;;24042:11:0;;:19;;11616:18:1;;24042:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24042:53:0;;24034:114;;;;-1:-1:-1;;;24034:114:0;;;;;;;:::i;:::-;24185:55;24221:18;24185:35;:55::i;:::-;24161:79;;24323:20;24367:18;24356:30;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;24356:30:0;;;;-1:-1:-1;;24356:30:0;;;;;;;;;24346:41;;24356:30;24346:41;;;;24398:33;;;;:19;:33;;;;;24434:15;24398:51;;24346:41;-1:-1:-1;24519:40:0;24525:10;24537:21;24519:5;:40::i;35695:249::-;35796:11;;-1:-1:-1;;;;;35796:11:0;35774:10;:34;35766:43;;;;;;35820:20;35864:8;35853:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;35853:20:0;;;;-1:-1:-1;;35853:20:0;;;;;;;;;35843:31;;35853:20;35843:31;;;;35885:33;;;;:19;:33;;;;;35921:15;35885:51;;-1:-1:-1;;35695:249:0:o;14243:380::-;-1:-1:-1;;;;;14379:19:0;;14371:68;;;;-1:-1:-1;;;14371:68:0;;10107:2:1;14371:68:0;;;10089:21:1;10146:2;10126:18;;;10119:30;10185:34;10165:18;;;10158:62;-1:-1:-1;;;10236:18:1;;;10229:34;10280:19;;14371:68:0;9905:400:1;14371:68:0;-1:-1:-1;;;;;14458:21:0;;14450:68;;;;-1:-1:-1;;;14450:68:0;;5839:2:1;14450:68:0;;;5821:21:1;5878:2;5858:18;;;5851:30;5917:34;5897:18;;;5890:62;-1:-1:-1;;;5968:18:1;;;5961:32;6010:19;;14450:68:0;5637:398:1;14450:68:0;-1:-1:-1;;;;;14531:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14583:32;;11643:25:1;;;14583:32:0;;11616:18:1;14583:32:0;;;;;;;;14243:380;;;:::o;33129:1003::-;33287:11;;:29;;-1:-1:-1;;;33287:29:0;;;;;11643:25:1;;;33215:7:0;;-1:-1:-1;;;;;33287:11:0;;:19;;11616:18:1;;33287:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33407:20;33451:8;33440:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;33440:20:0;;;;-1:-1:-1;;33440:20:0;;;;;;;;;33430:31;;33440:20;33430:31;;;;33472:21;33496:33;;;:19;:33;;;;;;33559:26;:35;33430:31;;-1:-1:-1;33496:33:0;33688:27;;33684:441;;33739:66;33764:13;33779:8;33789:15;33739:24;:66::i;:::-;33732:73;33129:1003;-1:-1:-1;;;;;33129:1003:0:o;33684:441::-;33971:19;33993:85;34018:26;:32;;;34052:8;34062:15;33993:24;:85::i;:::-;33971:107;33129:1003;-1:-1:-1;;;;;;33129:1003:0:o;32128:993::-;32284:9;;:27;;-1:-1:-1;;;32284:27:0;;;;;11643:25:1;;;32212:7:0;;-1:-1:-1;;;;;32284:9:0;;:17;;11616:18:1;;32284:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32402:20;32446:8;32435:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;32435:20:0;;;;-1:-1:-1;;32435:20:0;;;;;;;;;32425:31;;32435:20;32425:31;;;;32467:21;32491:31;;;:17;:31;;;;;;32552:24;:33;32425:31;;-1:-1:-1;32491:31:0;32679:27;;32675:439;;32730:66;32755:13;32770:8;32780:15;32730:24;:66::i;32675:439::-;32962:19;32984:83;33009:24;:30;;;33041:8;33051:15;32984:24;:83::i;12494:399::-;-1:-1:-1;;;;;12578:21:0;;12570:65;;;;-1:-1:-1;;;12570:65:0;;11339:2:1;12570:65:0;;;11321:21:1;11378:2;11358:18;;;11351:30;11417:33;11397:18;;;11390:61;11468:18;;12570:65:0;11137:355:1;12570:65:0;12726:6;12710:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;12743:18:0;;:9;:18;;;;;;;;;;:28;;12765:6;;12743:9;:28;;12765:6;;12743:28;:::i;:::-;;;;-1:-1:-1;;12787:37:0;;11643:25:1;;;-1:-1:-1;;;;;12787:37:0;;;12804:1;;12787:37;;11631:2:1;11616:18;12787:37:0;;;;;;;35952:171;;:::o;34140:1003::-;34298:11;;:29;;-1:-1:-1;;;34298:29:0;;;;;11643:25:1;;;34226:7:0;;-1:-1:-1;;;;;34298:11:0;;:19;;11616:18:1;;34298:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34418:20;34462:8;34451:20;;;;;;11643:25:1;;11631:2;11616:18;;11497:177;34451:20:0;;;;-1:-1:-1;;34451:20:0;;;;;;;;;34441:31;;34451:20;34441:31;;;;34483:21;34507:33;;;:19;:33;;;;;;34570:26;:35;34441:31;;-1:-1:-1;34507:33:0;34699:27;;34695:441;;34750:66;34775:13;34790:8;34800:15;34750:24;:66::i;34695:441::-;34982:19;35004:85;35029:26;:32;;;35063:8;35073:15;35004:24;:85::i;11486:721::-;-1:-1:-1;;;;;11626:20:0;;11618:70;;;;-1:-1:-1;;;11618:70:0;;9298:2:1;11618:70:0;;;9280:21:1;9337:2;9317:18;;;9310:30;9376:34;9356:18;;;9349:62;-1:-1:-1;;;9427:18:1;;;9420:35;9472:19;;11618:70:0;9096:401:1;11618:70:0;-1:-1:-1;;;;;11707:23:0;;11699:71;;;;-1:-1:-1;;;11699:71:0;;4625:2:1;11699:71:0;;;4607:21:1;4664:2;4644:18;;;4637:30;4703:34;4683:18;;;4676:62;-1:-1:-1;;;4754:18:1;;;4747:33;4797:19;;11699:71:0;4423:399:1;11699:71:0;-1:-1:-1;;;;;11867:17:0;;11843:21;11867:17;;;;;;;;;;;11903:23;;;;11895:74;;;;-1:-1:-1;;;11895:74:0;;6242:2:1;11895:74:0;;;6224:21:1;6281:2;6261:18;;;6254:30;6320:34;6300:18;;;6293:62;-1:-1:-1;;;6371:18:1;;;6364:36;6417:19;;11895:74:0;6040:402:1;11895:74:0;-1:-1:-1;;;;;11997:17:0;;;:9;:17;;;;;;;;;;;12017:22;;;11997:42;;12057:20;;;;;;;;:30;;12033:6;;11997:9;12057:30;;12033:6;;12057:30;:::i;:::-;;;;;;;;12122:9;-1:-1:-1;;;;;12105:35:0;12114:6;-1:-1:-1;;;;;12105:35:0;;12133:6;12105:35;;;;11643:25:1;;11631:2;11616:18;;11497:177;12105:35:0;;;;;;;;11607:600;11486:721;;;:::o;18120:173::-;18195:6;;;-1:-1:-1;;;;;18212:17:0;;;-1:-1:-1;;;;;;18212:17:0;;;;;;;18245:40;;18195:6;;;18212:17;18195:6;;18245:40;;18176:16;;18245:40;18165:128;18120:173;:::o;13226:579::-;-1:-1:-1;;;;;13310:21:0;;13302:67;;;;-1:-1:-1;;;13302:67:0;;8479:2:1;13302:67:0;;;8461:21:1;8518:2;8498:18;;;8491:30;8557:34;8537:18;;;8530:62;-1:-1:-1;;;8608:18:1;;;8601:31;8649:19;;13302:67:0;8277:397:1;13302:67:0;-1:-1:-1;;;;;13469:18:0;;13444:22;13469:18;;;;;;;;;;;13506:24;;;;13498:71;;;;-1:-1:-1;;;13498:71:0;;5029:2:1;13498:71:0;;;5011:21:1;5068:2;5048:18;;;5041:30;5107:34;5087:18;;;5080:62;-1:-1:-1;;;5158:18:1;;;5151:32;5200:19;;13498:71:0;4827:398:1;13498:71:0;-1:-1:-1;;;;;13597:18:0;;:9;:18;;;;;;;;;;13618:23;;;13597:44;;13659:12;:22;;13635:6;;13597:9;13659:22;;13635:6;;13659:22;:::i;:::-;;;;-1:-1:-1;;13699:37:0;;11643:25:1;;;13725:1:0;;-1:-1:-1;;;;;13699:37:0;;;;;11631:2:1;11616:18;13699:37:0;11497:177:1;31703:419:0;31824:7;31866:14;31852:11;:28;31844:93;;;;-1:-1:-1;;;31844:93:0;;10512:2:1;31844:93:0;;;10494:21:1;10551:2;10531:18;;;10524:30;10590:34;10570:18;;;10563:62;-1:-1:-1;;;10641:18:1;;;10634:50;10701:19;;31844:93:0;10310:416:1;31844:93:0;31950:22;31975:28;31989:14;31975:11;:28;:::i;:::-;31950:53;-1:-1:-1;32014:25:0;32071:6;32042:26;32059:9;31950:53;32042:26;:::i;:::-;:35;;;;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:1:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:52;;;1521:1;1518;1511:12;1473:52;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1376:315:1:o;1696:615::-;1782:6;1790;1843:2;1831:9;1822:7;1818:23;1814:32;1811:52;;;1859:1;1856;1849:12;1811:52;1899:9;1886:23;1928:18;1969:2;1961:6;1958:14;1955:34;;;1985:1;1982;1975:12;1955:34;2023:6;2012:9;2008:22;1998:32;;2068:7;2061:4;2057:2;2053:13;2049:27;2039:55;;2090:1;2087;2080:12;2039:55;2130:2;2117:16;2156:2;2148:6;2145:14;2142:34;;;2172:1;2169;2162:12;2142:34;2225:7;2220:2;2210:6;2207:1;2203:14;2199:2;2195:23;2191:32;2188:45;2185:65;;;2246:1;2243;2236:12;2185:65;2277:2;2269:11;;;;;2299:6;;-1:-1:-1;1696:615:1;;-1:-1:-1;;;;1696:615:1:o;2316:180::-;2375:6;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;-1:-1:-1;2467:23:1;;2316:180;-1:-1:-1;2316:180:1:o;2686:184::-;2756:6;2809:2;2797:9;2788:7;2784:23;2780:32;2777:52;;;2825:1;2822;2815:12;2777:52;-1:-1:-1;2848:16:1;;2686:184;-1:-1:-1;2686:184:1:o;2875:316::-;2952:6;2960;2968;3021:2;3009:9;3000:7;2996:23;2992:32;2989:52;;;3037:1;3034;3027:12;2989:52;-1:-1:-1;;3060:23:1;;;3130:2;3115:18;;3102:32;;-1:-1:-1;3181:2:1;3166:18;;;3153:32;;2875:316;-1:-1:-1;2875:316:1:o;3821:597::-;3933:4;3962:2;3991;3980:9;3973:21;4023:6;4017:13;4066:6;4061:2;4050:9;4046:18;4039:34;4091:1;4101:140;4115:6;4112:1;4109:13;4101:140;;;4210:14;;;4206:23;;4200:30;4176:17;;;4195:2;4172:26;4165:66;4130:10;;4101:140;;;4259:6;4256:1;4253:13;4250:91;;;4329:1;4324:2;4315:6;4304:9;4300:22;4296:31;4289:42;4250:91;-1:-1:-1;4402:2:1;4381:15;-1:-1:-1;;4377:29:1;4362:45;;;;4409:2;4358:54;;3821:597;-1:-1:-1;;;3821:597:1:o;6447:338::-;6649:2;6631:21;;;6688:2;6668:18;;;6661:30;-1:-1:-1;;;6722:2:1;6707:18;;6700:44;6776:2;6761:18;;6447:338::o;7560:354::-;7762:2;7744:21;;;7801:2;7781:18;;;7774:30;7840:32;7835:2;7820:18;;7813:60;7905:2;7890:18;;7560:354::o;7919:353::-;8121:2;8103:21;;;8160:2;8140:18;;;8133:30;8199:31;8194:2;8179:18;;8172:59;8263:2;8248:18;;7919:353::o;8679:412::-;8881:2;8863:21;;;8920:2;8900:18;;;8893:30;8959:34;8954:2;8939:18;;8932:62;-1:-1:-1;;;9025:2:1;9010:18;;9003:46;9081:3;9066:19;;8679:412::o;9502:398::-;9704:2;9686:21;;;9743:2;9723:18;;;9716:30;9782:34;9777:2;9762:18;;9755:62;-1:-1:-1;;;9848:2:1;9833:18;;9826:32;9890:3;9875:19;;9502:398::o;12192:128::-;12232:3;12263:1;12259:6;12256:1;12253:13;12250:39;;;12269:18;;:::i;:::-;-1:-1:-1;12305:9:1;;12192:128::o;12325:217::-;12365:1;12391;12381:132;;12435:10;12430:3;12426:20;12423:1;12416:31;12470:4;12467:1;12460:15;12498:4;12495:1;12488:15;12381:132;-1:-1:-1;12527:9:1;;12325:217::o;12547:168::-;12587:7;12653:1;12649;12645:6;12641:14;12638:1;12635:21;12630:1;12623:9;12616:17;12612:45;12609:71;;;12660:18;;:::i;:::-;-1:-1:-1;12700:9:1;;12547:168::o;12720:125::-;12760:4;12788:1;12785;12782:8;12779:34;;;12793:18;;:::i;:::-;-1:-1:-1;12830:9:1;;12720:125::o;12850:380::-;12929:1;12925:12;;;;12972;;;12993:61;;13047:4;13039:6;13035:17;13025:27;;12993:61;13100:2;13092:6;13089:14;13069:18;13066:38;13063:161;;;13146:10;13141:3;13137:20;13134:1;13127:31;13181:4;13178:1;13171:15;13209:4;13206:1;13199:15;13063:161;;12850:380;;;:::o;13235:135::-;13274:3;-1:-1:-1;;13295:17:1;;13292:43;;;13315:18;;:::i;:::-;-1:-1:-1;13362:1:1;13351:13;;13235:135::o;13375:127::-;13436:10;13431:3;13427:20;13424:1;13417:31;13467:4;13464:1;13457:15;13491:4;13488:1;13481:15;13507:127;13568:10;13563:3;13559:20;13556:1;13549:31;13599:4;13596:1;13589:15;13623:4;13620:1;13613:15;13639:131;-1:-1:-1;;;;;13714:31:1;;13704:42;;13694:70;;13760:1;13757;13750:12
Swarm Source
ipfs://88fb6ed9fb5b33d434f50ba35a147a6b70206db2ca5c46ce9193074b9fab2c56
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 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.