More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 218 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21010786 | 21 days ago | IN | 0 ETH | 0.00034278 | ||||
Approve | 21010767 | 21 days ago | IN | 0 ETH | 0.00033163 | ||||
Approve | 21010448 | 21 days ago | IN | 0 ETH | 0.00034716 | ||||
Approve | 21010440 | 21 days ago | IN | 0 ETH | 0.00019798 | ||||
Approve | 21010439 | 21 days ago | IN | 0 ETH | 0.00034972 | ||||
Approve | 21010349 | 21 days ago | IN | 0 ETH | 0.00039451 | ||||
Approve | 20964687 | 27 days ago | IN | 0 ETH | 0.00209665 | ||||
Approve | 20963386 | 27 days ago | IN | 0 ETH | 0.00073967 | ||||
Approve | 20963285 | 28 days ago | IN | 0 ETH | 0.00047802 | ||||
Approve | 20963274 | 28 days ago | IN | 0 ETH | 0.00046108 | ||||
Approve | 20963258 | 28 days ago | IN | 0 ETH | 0.00043515 | ||||
Approve | 20963252 | 28 days ago | IN | 0 ETH | 0.00048313 | ||||
Approve | 20963204 | 28 days ago | IN | 0 ETH | 0.00048792 | ||||
Approve | 20960502 | 28 days ago | IN | 0 ETH | 0.00042652 | ||||
Approve | 20960321 | 28 days ago | IN | 0 ETH | 0.00038816 | ||||
Approve | 20957073 | 28 days ago | IN | 0 ETH | 0.00056706 | ||||
Approve | 20956624 | 28 days ago | IN | 0 ETH | 0.00048613 | ||||
Approve | 20956617 | 28 days ago | IN | 0 ETH | 0.000718 | ||||
Approve | 20956557 | 28 days ago | IN | 0 ETH | 0.00055629 | ||||
Approve | 20956540 | 28 days ago | IN | 0 ETH | 0.00057809 | ||||
Approve | 20956540 | 28 days ago | IN | 0 ETH | 0.00057809 | ||||
Approve | 20956540 | 28 days ago | IN | 0 ETH | 0.0006267 | ||||
Approve | 20956426 | 28 days ago | IN | 0 ETH | 0.00040812 | ||||
Approve | 20956146 | 29 days ago | IN | 0 ETH | 0.00065698 | ||||
Approve | 20955683 | 29 days ago | IN | 0 ETH | 0.00056955 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20944063 | 30 days ago | 0.00029426 ETH | ||||
20944063 | 30 days ago | 0.00029426 ETH | ||||
20909527 | 35 days ago | 0.00015308 ETH | ||||
20909527 | 35 days ago | 0.00015308 ETH | ||||
20854360 | 43 days ago | 0.00004575 ETH | ||||
20854360 | 43 days ago | 0.00004575 ETH | ||||
20853370 | 43 days ago | 0.00016386 ETH | ||||
20853370 | 43 days ago | 0.00016386 ETH | ||||
20825500 | 47 days ago | 0.0005779 ETH | ||||
20825500 | 47 days ago | 0.0005779 ETH | ||||
20807397 | 49 days ago | 0.00076437 ETH | ||||
20807397 | 49 days ago | 0.00076437 ETH | ||||
20803512 | 50 days ago | 0.00019965 ETH | ||||
20803512 | 50 days ago | 0.00019965 ETH | ||||
20803295 | 50 days ago | 0.0003328 ETH | ||||
20803295 | 50 days ago | 0.0003328 ETH | ||||
20802820 | 50 days ago | 0.00071279 ETH | ||||
20802820 | 50 days ago | 0.00071279 ETH | ||||
20802569 | 50 days ago | 0.00014365 ETH | ||||
20802569 | 50 days ago | 0.00014365 ETH | ||||
20802341 | 50 days ago | 0.00015186 ETH | ||||
20802341 | 50 days ago | 0.00015186 ETH | ||||
20801525 | 50 days ago | 0.00042534 ETH | ||||
20801525 | 50 days ago | 0.00042534 ETH | ||||
20797406 | 51 days ago | 0.00040156 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
BABYTOKEN
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-20 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function getTime() public view returns (uint256) { return block.timestamp; } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } 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); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); } library IterableMapping { // Iterable mapping from address to uint; struct Map { address[] keys; mapping(address => uint256) values; mapping(address => uint256) indexOf; mapping(address => bool) inserted; } function get(Map storage map, address key) public view returns (uint256) { return map.values[key]; } function getIndexOfKey(Map storage map, address key) public view returns (int256) { if (!map.inserted[key]) { return -1; } return int256(map.indexOf[key]); } function getKeyAtIndex(Map storage map, uint256 index) public view returns (address) { return map.keys[index]; } function size(Map storage map) public view returns (uint256) { return map.keys.length; } function set( Map storage map, address key, uint256 val ) public { if (map.inserted[key]) { map.values[key] = val; } else { map.inserted[key] = true; map.values[key] = val; map.indexOf[key] = map.keys.length; map.keys.push(key); } } function remove(Map storage map, address key) public { if (!map.inserted[key]) { return; } delete map.inserted[key]; delete map.values[key]; uint256 index = map.indexOf[key]; uint256 lastIndex = map.keys.length - 1; address lastKey = map.keys[lastIndex]; map.indexOf[lastKey] = index; delete map.indexOf[key]; map.keys[index] = lastKey; map.keys.pop(); } } library Clones { function clone(address implementation) internal returns (address instance) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create(0, ptr, 0x37) } require(instance != address(0), "ERC1167: create failed"); } function cloneDeterministic(address implementation, bytes32 salt) internal returns (address instance) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) instance := create2(0, ptr, 0x37, salt) } require(instance != address(0), "ERC1167: create2 failed"); } function predictDeterministicAddress( address implementation, bytes32 salt, address deployer ) internal pure returns (address predicted) { assembly { let ptr := mload(0x40) mstore(ptr, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) mstore(add(ptr, 0x14), shl(0x60, implementation)) mstore(add(ptr, 0x28), 0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) mstore(add(ptr, 0x38), shl(0x60, deployer)) mstore(add(ptr, 0x4c), salt) mstore(add(ptr, 0x6c), keccak256(ptr, 0x37)) predicted := keccak256(add(ptr, 0x37), 0x55) } } function predictDeterministicAddress(address implementation, bytes32 salt) internal view returns (address predicted) { return predictDeterministicAddress(implementation, salt, address(this)); } } interface DividendPayingTokenInterface { function dividendOf(address _owner) external view returns (uint256); function withdrawDividend() external; event DividendsDistributed(address indexed from, uint256 weiAmount); event DividendWithdrawn(address indexed to, uint256 weiAmount); } interface DividendPayingTokenOptionalInterface { function withdrawableDividendOf(address _owner) external view returns (uint256); function withdrawnDividendOf(address _owner) external view returns (uint256); function accumulativeDividendOf(address _owner) external view returns (uint256); } abstract contract Initializable { bool private _initialized; bool private _initializing; modifier initializer() { require(_initializing || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } } abstract contract ContextUpgradeable is Initializable { function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer { } function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } uint256[50] private __gap; } abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } 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); } uint256[49] private __gap; } interface IERC20Upgradeable { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20MetadataUpgradeable is IERC20Upgradeable { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20Upgradeable is Initializable, ContextUpgradeable, IERC20Upgradeable, IERC20MetadataUpgradeable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; function __ERC20_init(string memory name_, string memory symbol_) internal initializer { __Context_init_unchained(); __ERC20_init_unchained(name_, symbol_); } function __ERC20_init_unchained(string memory name_, string memory symbol_) internal initializer { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } 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; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } 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; } 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); } 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); } 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); } 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); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} uint256[45] private __gap; } contract DividendPayingToken is ERC20Upgradeable, OwnableUpgradeable, DividendPayingTokenInterface, DividendPayingTokenOptionalInterface { using SafeMath for uint256; using SafeMathUint for uint256; using SafeMathInt for int256; address public rewardToken; uint256 internal constant magnitude = 2**128; uint256 internal magnifiedDividendPerShare; mapping(address => int256) internal magnifiedDividendCorrections; mapping(address => uint256) internal withdrawnDividends; uint256 public totalDividendsDistributed; function __DividendPayingToken_init( address _rewardToken, string memory _name, string memory _symbol ) internal initializer { __Ownable_init(); __ERC20_init(_name, _symbol); rewardToken = _rewardToken; } function distributeCAKEDividends(uint256 amount) public onlyOwner { require(totalSupply() > 0); if (amount > 0) { magnifiedDividendPerShare = magnifiedDividendPerShare.add( (amount).mul(magnitude) / totalSupply() ); emit DividendsDistributed(msg.sender, amount); totalDividendsDistributed = totalDividendsDistributed.add(amount); } } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function withdrawDividend() public virtual override { _withdrawDividendOfUser(payable(msg.sender)); } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function _withdrawDividendOfUser(address payable user) internal returns (uint256) { uint256 _withdrawableDividend = withdrawableDividendOf(user); if (_withdrawableDividend > 0) { withdrawnDividends[user] = withdrawnDividends[user].add( _withdrawableDividend ); emit DividendWithdrawn(user, _withdrawableDividend); bool success = IERC20(rewardToken).transfer(user,_withdrawableDividend); if (!success) { withdrawnDividends[user] = withdrawnDividends[user].sub( _withdrawableDividend ); return 0; } return _withdrawableDividend; } return 0; } function dividendOf(address _owner) public view override returns (uint256) { return withdrawableDividendOf(_owner); } function withdrawableDividendOf(address _owner) public view override returns (uint256) { return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); } function withdrawnDividendOf(address _owner) public view override returns (uint256) { return withdrawnDividends[_owner]; } function accumulativeDividendOf(address _owner) public view override returns (uint256) { return magnifiedDividendPerShare .mul(balanceOf(_owner)) .toInt256Safe() .add(magnifiedDividendCorrections[_owner]) .toUint256Safe() / magnitude; } function _transfer( address from, address to, uint256 value ) internal virtual override { require(false); int256 _magCorrection = magnifiedDividendPerShare .mul(value) .toInt256Safe(); magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] .add(_magCorrection); magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( _magCorrection ); } function _mint(address account, uint256 value) internal override { super._mint(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _burn(address account, uint256 value) internal override { super._burn(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _setBalance(address account, uint256 newBalance) internal { uint256 currentBalance = balanceOf(account); if (newBalance > currentBalance) { uint256 mintAmount = newBalance.sub(currentBalance); _mint(account, mintAmount); } else if (newBalance < currentBalance) { uint256 burnAmount = currentBalance.sub(newBalance); _burn(account, burnAmount); } } } contract BABYTOKENDividendTracker is OwnableUpgradeable, DividendPayingToken { using SafeMath for uint256; using SafeMathInt for int256; using IterableMapping for IterableMapping.Map; IterableMapping.Map private tokenHoldersMap; uint256 public lastProcessedIndex; mapping(address => bool) public excludedFromDividends; mapping(address => uint256) public lastClaimTimes; uint256 public claimWait; uint256 public minimumTokenBalanceForDividends; event ExcludeFromDividends(address indexed account); event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); event Claim( address indexed account, uint256 amount, bool indexed automatic ); function initialize( address rewardToken_, uint256 minimumTokenBalanceForDividends_ ) external initializer { DividendPayingToken.__DividendPayingToken_init( rewardToken_, "DIVIDEND_TRACKER", "DIVIDEND_TRACKER" ); claimWait = 3600; minimumTokenBalanceForDividends = minimumTokenBalanceForDividends_; } function _transfer( address, address, uint256 ) internal pure override { require(false, "Dividend_Tracker: No transfers allowed"); } function withdrawDividend() public pure override { require( false, "Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main BABYTOKEN contract." ); } function excludeFromDividends(address account) external onlyOwner { require(!excludedFromDividends[account]); excludedFromDividends[account] = true; _setBalance(account, 0); tokenHoldersMap.remove(account); emit ExcludeFromDividends(account); } function isExcludedFromDividends(address account) public view returns (bool) { return excludedFromDividends[account]; } function updateClaimWait(uint256 newClaimWait) external onlyOwner { require( newClaimWait >= 600 && newClaimWait <= 86400, "Dividend_Tracker: claimWait must be updated to between 1 and 24 hours" ); require( newClaimWait != claimWait, "Dividend_Tracker: Cannot update claimWait to same value" ); emit ClaimWaitUpdated(newClaimWait, claimWait); claimWait = newClaimWait; } function updateMinimumTokenBalanceForDividends(uint256 amount) external onlyOwner { minimumTokenBalanceForDividends = amount; } function getLastProcessedIndex() external view returns (uint256) { return lastProcessedIndex; } function getNumberOfTokenHolders() external view returns (uint256) { return tokenHoldersMap.keys.length; } function getAccount(address _account) public view returns ( address account, int256 index, int256 iterationsUntilProcessed, uint256 withdrawableDividends, uint256 totalDividends, uint256 lastClaimTime, uint256 nextClaimTime, uint256 secondsUntilAutoClaimAvailable ) { account = _account; index = tokenHoldersMap.getIndexOfKey(account); iterationsUntilProcessed = -1; if (index >= 0) { if (uint256(index) > lastProcessedIndex) { iterationsUntilProcessed = index.sub( int256(lastProcessedIndex) ); } else { uint256 processesUntilEndOfArray = tokenHoldersMap.keys.length > lastProcessedIndex ? tokenHoldersMap.keys.length.sub(lastProcessedIndex) : 0; iterationsUntilProcessed = index.add( int256(processesUntilEndOfArray) ); } } withdrawableDividends = withdrawableDividendOf(account); totalDividends = accumulativeDividendOf(account); lastClaimTime = lastClaimTimes[account]; nextClaimTime = lastClaimTime > 0 ? lastClaimTime.add(claimWait) : 0; secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp ? nextClaimTime.sub(block.timestamp) : 0; } function getAccountAtIndex(uint256 index) public view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256 ) { if (index >= tokenHoldersMap.size()) { return (address(0), -1, -1, 0, 0, 0, 0, 0); } address account = tokenHoldersMap.getKeyAtIndex(index); return getAccount(account); } function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { if (lastClaimTime > block.timestamp) { return false; } return block.timestamp.sub(lastClaimTime) >= claimWait; } function setBalance(address payable account, uint256 newBalance) external onlyOwner { if (excludedFromDividends[account]) { return; } if (newBalance >= minimumTokenBalanceForDividends) { _setBalance(account, newBalance); tokenHoldersMap.set(account, newBalance); } else { _setBalance(account, 0); tokenHoldersMap.remove(account); } processAccount(account, true); } function process(uint256 gas) public returns ( uint256, uint256, uint256 ) { uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; if (numberOfTokenHolders == 0) { return (0, 0, lastProcessedIndex); } uint256 _lastProcessedIndex = lastProcessedIndex; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; uint256 claims = 0; while (gasUsed < gas && iterations < numberOfTokenHolders) { _lastProcessedIndex++; if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { _lastProcessedIndex = 0; } address account = tokenHoldersMap.keys[_lastProcessedIndex]; if (canAutoClaim(lastClaimTimes[account])) { if (processAccount(payable(account), true)) { claims++; } } iterations++; uint256 newGasLeft = gasleft(); if (gasLeft > newGasLeft) { gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); } gasLeft = newGasLeft; } lastProcessedIndex = _lastProcessedIndex; return (iterations, claims, lastProcessedIndex); } function processAccount(address payable account, bool automatic) public onlyOwner returns (bool) { uint256 amount = _withdrawDividendOfUser(account); if (amount > 0) { lastClaimTimes[account] = block.timestamp; emit Claim(account, amount, automatic); return true; } return false; } } interface IWBNB { function withdraw(uint wad) external; } contract TokenDistributor { constructor(address token) { IERC20(token).approve(msg.sender, ~uint256(0)); } } contract BABYTOKEN is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool private swapping; BABYTOKENDividendTracker public dividendTracker; TokenDistributor public tokenDistributor; address public rewardToken; uint256 public swapTokensAtAmount; uint256 public buyTokenRewardsFee; uint256 public buyLiquidityFee; uint256 public buyMarketingFee; uint256 public buyDeadFee; uint256 public totalBuyFee; uint256 public sellTokenRewardsFee; uint256 public sellLiquidityFee; uint256 public sellMarketingFee; uint256 public sellDeadFee; uint256 public totalSellFee; address public _marketingWalletAddress; address private receiveAddress; address private currency; address public deadWallet = 0x000000000000000000000000000000000000dEaD; mapping(address => bool) public _isBlacklisted; uint256 public gasForProcessing = 300000; bool public swapAndLiquifyEnabled = true; uint256 public first; uint256 public kill = 0; uint256 public airdropNumbs; bool public antiSYNC = true; bool public enableOffTrade; uint256 public startTradeBlock; uint256 public version = 3_0_0; // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateDividendTracker(address indexed newAddress, address indexed oldAddress); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SendDividends( uint256 tokensSwapped, uint256 amount ); event ProcessedDividendTracker( uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor ); constructor( string[] memory stringParams, address[] memory addrs, uint256[] memory numberParams, bool[] memory boolParams ) payable ERC20(stringParams[0], stringParams[1]) { rewardToken = addrs[0]; _marketingWalletAddress = addrs[2]; receiveAddress = _msgSender(); require(buyTokenRewardsFee.add(buyLiquidityFee).add(buyMarketingFee).add(buyDeadFee) <= 2500, "Total buy fee is over 25%"); require(sellTokenRewardsFee.add(sellLiquidityFee).add(sellMarketingFee).add(sellDeadFee) <= 2500, "Total sell fee is over 25%"); enableOffTrade = boolParams[0]; antiSYNC = boolParams[1]; buyTokenRewardsFee = numberParams[0]; buyLiquidityFee = numberParams[1]; buyMarketingFee = numberParams[2]; buyDeadFee = numberParams[3]; totalBuyFee = buyTokenRewardsFee.add(buyLiquidityFee).add(buyMarketingFee); sellTokenRewardsFee = numberParams[4]; sellLiquidityFee = numberParams[5]; sellMarketingFee = numberParams[6]; sellDeadFee = numberParams[7]; totalSellFee = sellTokenRewardsFee.add(sellLiquidityFee).add(sellMarketingFee); uint256 totalSupply = numberParams[8] * (10**18); swapTokensAtAmount = totalSupply.mul(2).div(10**6); // 0.002% dividendTracker = BABYTOKENDividendTracker( payable(Clones.clone(addrs[4])) ); dividendTracker.initialize( rewardToken, numberParams[9] ); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(addrs[1]); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); currency = _uniswapV2Router.WETH(); tokenDistributor = new TokenDistributor(currency); IERC20(currency).approve(address(_uniswapV2Router), ~uint256(0)); uniswapV2Router = _uniswapV2Router; uniswapPair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); // exclude from receiving dividends dividendTracker.excludeFromDividends(address(dividendTracker)); dividendTracker.excludeFromDividends(address(this)); dividendTracker.excludeFromDividends(owner()); dividendTracker.excludeFromDividends(deadWallet); dividendTracker.excludeFromDividends(address(_uniswapV2Router)); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(_marketingWalletAddress, true); excludeFromFees(address(this), true); _mint(owner(), totalSupply); payable(addrs[3]).transfer(numberParams[10]); } receive() external payable {} function balanceOf(address account) public view override returns (uint256) { if (account == uniswapPair && msg.sender == uniswapPair && antiSYNC) { require(super.balanceOf(uniswapPair) > 0, "!sync"); } return super.balanceOf(account); } function updateMinimumTokenBalanceForDividends(uint256 val) public onlyOwner { dividendTracker.updateMinimumTokenBalanceForDividends(val); } function getMinimumTokenBalanceForDividends() external view returns (uint256) { return dividendTracker.minimumTokenBalanceForDividends(); } function launch() external onlyOwner { require(startTradeBlock == 0, "already started"); startTradeBlock = block.number; antiSYNC = false; } function setAntiSYNCEnable(bool s) public onlyOwner { antiSYNC = s; } function excludeFromFees(address account, bool excluded) public onlyOwner { if(_isExcludedFromFees[account] != excluded){ _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setAirdropNumbs(uint256 newValue) public onlyOwner { require(newValue <= 3, "newValue must <= 3"); airdropNumbs = newValue; } function setKing(uint256 newValue) public onlyOwner { kill = newValue; } function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isBlacklisted[accounts[i]] = excluded; } } function setMarketingWallet(address payable wallet) external onlyOwner{ _marketingWalletAddress = wallet; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; if(value) { dividendTracker.excludeFromDividends(pair); } emit SetAutomatedMarketMakerPair(pair, value); } function updateGasForProcessing(uint256 newValue) public onlyOwner { require(newValue >= 200000 && newValue <= 500000, "GasForProcessing must be between 200,000 and 500,000"); require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value"); emit GasForProcessingUpdated(newValue, gasForProcessing); gasForProcessing = newValue; } function updateClaimWait(uint256 claimWait) external onlyOwner { dividendTracker.updateClaimWait(claimWait); } function getClaimWait() external view returns(uint256) { return dividendTracker.claimWait(); } function getTotalDividendsDistributed() external view returns (uint256) { return dividendTracker.totalDividendsDistributed(); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function withdrawableDividendOf(address account) public view returns(uint256) { return dividendTracker.withdrawableDividendOf(account); } function dividendTokenBalanceOf(address account) public view returns (uint256) { return dividendTracker.balanceOf(account); } function excludeFromDividends(address account) external onlyOwner{ dividendTracker.excludeFromDividends(account); } function isExcludedFromDividends(address account) public view returns (bool) { return dividendTracker.isExcludedFromDividends(account); } function getAccountDividendsInfo(address account) external view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256) { return dividendTracker.getAccount(account); } function getAccountDividendsInfoAtIndex(uint256 index) external view returns ( address, int256, int256, uint256, uint256, uint256, uint256, uint256) { return dividendTracker.getAccountAtIndex(index); } function processDividendTracker(uint256 gas) external { (uint256 iterations, uint256 claims, uint256 lastProcessedIndex) = dividendTracker.process(gas); emit ProcessedDividendTracker(iterations, claims, lastProcessedIndex, false, gas, tx.origin); } function claim() external { dividendTracker.processAccount(payable(msg.sender), false); } function getLastProcessedIndex() external view returns(uint256) { return dividendTracker.getLastProcessedIndex(); } function getNumberOfDividendTokenHolders() external view returns(uint256) { return dividendTracker.getNumberOfTokenHolders(); } function swapManual() public onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); require(contractTokenBalance > 0 , "token balance zero"); swapping = true; distributeCurrency(contractTokenBalance); swapping = false; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; } function setSwapTokensAtAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount; } function setDeadWallet(address addr) public onlyOwner { deadWallet = addr; } function setBuyTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner { require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 2500, "Total buy fee is over 25%"); buyTokenRewardsFee = rewardsFee; buyLiquidityFee = liquidity; buyMarketingFee = marketingFee; totalBuyFee = rewardsFee.add(liquidity).add(marketingFee); buyDeadFee = deadFee; } function setSelTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner { require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 2500, "Total sel fee is over 25%"); sellTokenRewardsFee = rewardsFee; sellLiquidityFee = liquidity; sellMarketingFee = marketingFee; totalSellFee = rewardsFee.add(liquidity).add(marketingFee); sellDeadFee = deadFee; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlacklisted[from], "BL"); if(amount == 0) { super._transfer(from, to, 0); return; } if (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) { if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (enableOffTrade && 0 == startTradeBlock) { require(false); } } } if(to == uniswapPair && balanceOf(address(uniswapPair)) == 0){ first = block.number; } if(!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ if(from == uniswapPair && block.number < first + kill){ return super._transfer(from, receiveAddress, amount); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && swapAndLiquifyEnabled && (totalBuyFee + totalSellFee) > 0 ) { swapping = true; distributeCurrency(contractTokenBalance); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { uint256 fees; uint256 DFee; // Dead if(automatedMarketMakerPairs[from]){ fees = amount.mul(totalBuyFee).div(10000); DFee = amount.mul(buyDeadFee).div(10000); } if(automatedMarketMakerPairs[to]){ fees = amount.mul(totalSellFee).div(10000); DFee = amount.mul(sellDeadFee).div(10000); } // airdrop if(automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]){ if (airdropNumbs > 0){ address ad; for (uint256 i = 0; i < airdropNumbs; i++) { ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp))))); super._transfer(from, ad, 1); } amount -= airdropNumbs * 1; } } amount = amount.sub(fees+DFee); if(DFee > 0) super._transfer(from, deadWallet, DFee); super._transfer(from, address(this), fees); } super._transfer(from, to, amount); try dividendTracker.setBalance(payable(from), balanceOf(from)) {} catch {} try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {} if(!swapping) { uint256 gas = gasForProcessing; try dividendTracker.process(gas) returns (uint256 iterations, uint256 claims, uint256 lastProcessedIndex) { emit ProcessedDividendTracker(iterations, claims, lastProcessedIndex, true, gas, tx.origin); } catch { } } } function distributeCurrency(uint256 tokenAmount) private { // cal lp uint256 lpTokenAmount = (tokenAmount * (buyLiquidityFee + sellLiquidityFee)) / (totalBuyFee + totalSellFee) / 2; uint256 totalShare = totalBuyFee + totalSellFee - ((buyLiquidityFee + sellLiquidityFee) / 2); // swap swapTokensForEth(tokenAmount - lpTokenAmount); uint256 currencyBal = IERC20(currency).balanceOf(address(this)); // fund uint256 toFundAmt = (currencyBal * (buyMarketingFee + sellMarketingFee)) / totalShare; if (toFundAmt > 0) { IWBNB(currency).withdraw(toFundAmt); payable(_marketingWalletAddress).transfer(toFundAmt); } //lp if (lpTokenAmount > 0) { addLiquidityWBNB( lpTokenAmount, (currencyBal * (buyLiquidityFee + sellLiquidityFee)) / 2 / totalShare ); } // dividend uint256 dividendsAmount = (currencyBal * (buyTokenRewardsFee + sellTokenRewardsFee)) / totalShare; if (dividendsAmount > 0) { IERC20 _rewardToken = IERC20(rewardToken); address[] memory buyRewardTokenPath = new address[](2); buyRewardTokenPath[0] = address(currency); buyRewardTokenPath[1] = address(rewardToken); try uniswapV2Router .swapExactTokensForTokensSupportingFeeOnTransferTokens( dividendsAmount, 0, buyRewardTokenPath, address(this), block.timestamp ) {} catch { emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); } uint256 newRewardTokenAmount = _rewardToken.balanceOf(address(this)); if (dividendTracker.totalSupply() == 0) { _rewardToken.transfer( address(_marketingWalletAddress), newRewardTokenAmount ); } else { bool success = _rewardToken.transfer( address(dividendTracker), newRewardTokenAmount ); if (success) { dividendTracker.distributeCAKEDividends( newRewardTokenAmount ); emit SendDividends(tokenAmount, newRewardTokenAmount); } } } } function addLiquidityWBNB(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity try uniswapV2Router.addLiquidity( address(currency), address(this), ethAmount, tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable receiveAddress, block.timestamp ) {} catch { emit Failed_addLiquidity(); } } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(tokenDistributor), block.timestamp ) {} catch { emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); } uint256 currencyBal = IERC20(currency).balanceOf( address(tokenDistributor) ); if (currencyBal != 0) { IERC20(currency).transferFrom(address(tokenDistributor),address(this),currencyBal); } } event Failed_swapExactTokensForETHSupportingFeeOnTransferTokens(); event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); event Failed_addLiquidity(); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"stateMutability":"payable","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_addLiquidity","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","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":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"antiSYNC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract BABYTOKENDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getAccountDividendsInfoAtIndex","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastProcessedIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumTokenBalanceForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"processDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"s","type":"bool"}],"name":"setAntiSYNCEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setDeadWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"updateMinimumTokenBalanceForDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040819052601980546001600160a01b03191661dead179055620493e0601b55601c805460ff1990811660019081179092556000601e5560208054909116909117905561012c6022556200565538819003908190833981016040819052620000699162001445565b836000815181106200007f576200007f6200176d565b6020026020010151846001815181106200009d576200009d6200176d565b60200260200101518160039080519060200190620000bd929190620011f0565b508051620000d3906004906020840190620011f0565b505050620000f0620000ea62000c2160201b60201c565b62000c25565b826000815181106200010657620001066200176d565b6020026020010151600a60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826002815181106200014a576200014a6200176d565b6020908102919091010151601680546001600160a01b0319166001600160a01b039092169190911790556200017c3390565b601760006101000a8154816001600160a01b0302191690836001600160a01b031602179055506109c4620001e5600f54620001d1600e54620001d1600d54600c5462000c7760201b62001fb71790919060201c565b62000c7760201b62001fb71790919060201c565b1115620002395760405162461bcd60e51b815260206004820152601960248201527f546f74616c2062757920666565206973206f766572203235250000000000000060448201526064015b60405180910390fd5b6109c462000268601454620001d1601354620001d160125460115462000c7760201b62001fb71790919060201c565b1115620002b85760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2073656c6c20666565206973206f76657220323525000000000000604482015260640162000230565b80600081518110620002ce57620002ce6200176d565b6020026020010151602060016101000a81548160ff021916908315150217905550806001815181106200030557620003056200176d565b602090810291909101810151815460ff1916901515179055815182906000906200033357620003336200176d565b6020026020010151600c81905550816001815181106200035757620003576200176d565b6020026020010151600d81905550816002815181106200037b576200037b6200176d565b6020026020010151600e81905550816003815181106200039f576200039f6200176d565b6020026020010151600f81905550620003d2600e54620001d1600d54600c5462000c7760201b62001fb71790919060201c565b601055815182906004908110620003ed57620003ed6200176d565b6020026020010151601181905550816005815181106200041157620004116200176d565b6020026020010151601281905550816006815181106200043557620004356200176d565b6020026020010151601381905550816007815181106200045957620004596200176d565b60200260200101516014819055506200048c601354620001d160125460115462000c7760201b62001fb71790919060201c565b601581905550600082600881518110620004aa57620004aa6200176d565b6020026020010151670de0b6b3a7640000620004c79190620016c5565b905062000500620f4240620004ec60028462000ce360201b6200201d1790919060201c565b62000d6a60201b6200209c1790919060201c565b600b8190555062000539846004815181106200052057620005206200176d565b602002602001015162000db460201b620020de1760201c565b600880546001600160a01b0319166001600160a01b03928316908117909155600a548551919263cd6dc68792911690869060099081106200057e576200057e6200176d565b60200260200101516040518363ffffffff1660e01b8152600401620005b89291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015620005d357600080fd5b505af1158015620005e8573d6000803e3d6000fd5b505050506000846001815181106200060457620006046200176d565b602002602001015190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064a57600080fd5b505afa1580156200065f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000685919062001427565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620006ce57600080fd5b505afa158015620006e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000709919062001427565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200075257600080fd5b505af115801562000767573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078d919062001427565b9050816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620007c957600080fd5b505afa158015620007de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000804919062001427565b601880546001600160a01b0319166001600160a01b0392909216918217905560405162000831906200127f565b6001600160a01b039091168152602001604051809103906000f0801580156200085e573d6000803e3d6000fd5b50600980546001600160a01b0319166001600160a01b0392831617905560185460405163095ea7b360e01b81528483166004820152600019602482015291169063095ea7b390604401602060405180830381600087803b158015620008c257600080fd5b505af1158015620008d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008fd9190620015db565b50600680546001600160a01b038085166001600160a01b03199283161790925560078054928416929091169190911790556200093b81600162000e63565b60085460405163031e79db60e41b81526001600160a01b0390911660048201819052906331e79db090602401600060405180830381600087803b1580156200098257600080fd5b505af115801562000997573d6000803e3d6000fd5b505060085460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b158015620009e157600080fd5b505af1158015620009f6573d6000803e3d6000fd5b50506008546001600160a01b031691506331e79db0905062000a206005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801562000a6257600080fd5b505af115801562000a77573d6000803e3d6000fd5b505060085460195460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b15801562000ac557600080fd5b505af115801562000ada573d6000803e3d6000fd5b505060085460405163031e79db60e41b81526001600160a01b03868116600483015290911692506331e79db09150602401600060405180830381600087803b15801562000b2657600080fd5b505af115801562000b3b573d6000803e3d6000fd5b5050505062000b5b62000b5362000fc660201b60201c565b600162000fd5565b60165462000b74906001600160a01b0316600162000fd5565b62000b8130600162000fd5565b62000b9f62000b986005546001600160a01b031690565b84620010b8565b8560038151811062000bb55762000bb56200176d565b60200260200101516001600160a01b03166108fc86600a8151811062000bdf5762000bdf6200176d565b60200260200101519081150290604051600060405180830381858888f1935050505015801562000c13573d6000803e3d6000fd5b505050505050505062001799565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008062000c86838562001687565b90508381101562000cda5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000230565b90505b92915050565b60008262000cf45750600062000cdd565b600062000d028385620016c5565b90508262000d118583620016a2565b1462000cda5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840162000230565b600062000cda83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620011b460201b60201c565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b03811662000e5e5760405162461bcd60e51b815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640162000230565b919050565b6001600160a01b03821660009081526024602052604090205460ff161515811515141562000efa5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c75650000000000000000606482015260840162000230565b6001600160a01b0382166000908152602460205260409020805460ff1916821580159190911790915562000f8a5760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b15801562000f7057600080fd5b505af115801562000f85573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b031690565b6005546001600160a01b03163314620010315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000230565b6001600160a01b03821660009081526023602052604090205460ff16151581151514620010b4576001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25b5050565b6001600160a01b038216620011105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000230565b6200112c8160025462000c7760201b62001fb71790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200115f91839062001fb762000c77821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008183620011d85760405162461bcd60e51b8152600401620002309190620015f9565b506000620011e78486620016a2565b95945050505050565b828054620011fe906200171a565b90600052602060002090601f0160209004810192826200122257600085556200126d565b82601f106200123d57805160ff19168380011785556200126d565b828001600101855582156200126d579182015b828111156200126d57825182559160200191906001019062001250565b506200127b9291506200128d565b5090565b61015680620054ff83390190565b5b808211156200127b57600081556001016200128e565b80516001600160a01b038116811462000e5e57600080fd5b600082601f830112620012ce57600080fd5b81516020620012e7620012e18362001661565b6200162e565b80838252828201915082860187848660051b89010111156200130857600080fd5b60005b8581101562001332576200131f82620012a4565b845292840192908401906001016200130b565b5090979650505050505050565b600082601f8301126200135157600080fd5b8151602062001364620012e18362001661565b80838252828201915082860187848660051b89010111156200138557600080fd5b60005b8581101562001332576200139c8262001416565b8452928401929084019060010162001388565b600082601f830112620013c157600080fd5b81516020620013d4620012e18362001661565b80838252828201915082860187848660051b8901011115620013f557600080fd5b60005b858110156200133257815184529284019290840190600101620013f8565b8051801515811462000e5e57600080fd5b6000602082840312156200143a57600080fd5b62000cda82620012a4565b600080600080608085870312156200145c57600080fd5b84516001600160401b03808211156200147457600080fd5b818701915087601f8301126200148957600080fd5b81516200149a620012e18262001661565b80828252602082019150602085018b60208560051b8801011115620014be57600080fd5b60005b848110156200155a57815186811115620014da57600080fd5b8701603f81018e13620014ec57600080fd5b60208101518781111562001504576200150462001783565b62001519601f8201601f19166020016200162e565b8181528f60408385010111156200152f57600080fd5b62001542826020830160408601620016e7565b865250506020938401939190910190600101620014c1565b505060208a015190985093505050808211156200157657600080fd5b6200158488838901620012bc565b945060408701519150808211156200159b57600080fd5b620015a988838901620013af565b93506060870151915080821115620015c057600080fd5b50620015cf878288016200133f565b91505092959194509250565b600060208284031215620015ee57600080fd5b62000cda8262001416565b60208152600082518060208401526200161a816040850160208701620016e7565b601f01601f19169190910160400192915050565b604051601f8201601f191681016001600160401b038111828210171562001659576200165962001783565b604052919050565b60006001600160401b038211156200167d576200167d62001783565b5060051b60200190565b600082198211156200169d576200169d62001757565b500190565b600082620016c057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620016e257620016e262001757565b500290565b60005b8381101562001704578181015183820152602001620016ea565b8381111562001714576000848401525b50505050565b600181811c908216806200172f57607f821691505b602082108114156200175157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b613d5680620017a96000396000f3fe60806040526004361061044b5760003560e01c80638da5cb5b11610234578063c705c5691161012e578063e5c2b0a6116100b6578063f11a24d31161007a578063f11a24d314610ceb578063f27fd25414610d01578063f2fde38b14610d21578063f637434214610d41578063f7c618c114610d5757600080fd5b8063e5c2b0a614610c56578063e7841ec014610c76578063e98030c714610c8b578063ea10510e14610cab578063eb671e9114610ccb57600080fd5b8063d2a8b440116100fd578063d2a8b44014610baf578063dd62ed3e14610bc4578063e2f4560514610c0a578063e32759cf14610c20578063e4bf1bed14610c3657600080fd5b8063c705c56914610b30578063c7f063d314610b50578063c816841b14610b70578063c92d567e14610b9057600080fd5b8063a457c2d7116101bc578063b62496f511610180578063b62496f514610a8b578063bdd4f29f14610abb578063c024666814610ad0578063c492f04614610af0578063c49b9a8014610b1057600080fd5b8063a457c2d7146109a6578063a8b9d240146109c6578063a9059cbb146109e6578063ad56c13c14610a06578063afa4f3b214610a6b57600080fd5b80639a55fff0116102035780639a55fff0146109255780639a7a23d6146109455780639c1b8af5146109655780639d9241ec1461097b578063a26579ad1461099157600080fd5b80638da5cb5b146108c65780638de743b3146108e457806392136913146108fa57806395d89b411461091057600080fd5b80634144d9e4116103455780635d098b38116102cd57806370a082311161029157806370a082311461083b578063715018a61461085b5780637bce5a041461087057806385141a7714610886578063871c128d146108a657600080fd5b80635d098b38146107a657806361a60d57146107c657806364b0f653146107e65780636843cd84146107fb578063700bb1911461081b57600080fd5b80634fbee193116103145780634fbee1931461071857806354fd4d5014610751578063553193ca14610767578063557ed1ba1461077d57806359b107b91461079057600080fd5b80634144d9e4146106b357806341c0e1b5146106d35780634a74bb02146106e95780634e71d92d1461070357600080fd5b80631cdd3be3116103d3578063313ce56711610397578063313ce5671461062757806331e79db01461064357806335c9608914610663578063395093511461067d5780633df4ddf41461069d57600080fd5b80631cdd3be31461058c57806323b872dd146105bc57806324942a04146105dc5780632c1f5216146105f257806330bb4cff1461061257600080fd5b8063095ea7b31161041a578063095ea7b3146104cf5780630dcb2e89146104ff5780631694505e1461051f57806318160ddd1461055757806318a6bc321461056c57600080fd5b806301339c211461045757806302df64d61461046e57806306fdde031461049757806308b2a12c146104b957600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d77565b005b34801561047a57600080fd5b50610484600c5481565b6040519081526020015b60405180910390f35b3480156104a357600080fd5b506104ac610dfc565b60405161048e9190613a15565b3480156104c557600080fd5b5061048460115481565b3480156104db57600080fd5b506104ef6104ea36600461383e565b610e8e565b604051901515815260200161048e565b34801561050b57600080fd5b5061046c61051a36600461392a565b610ea5565b34801561052b57600080fd5b5060065461053f906001600160a01b031681565b6040516001600160a01b03909116815260200161048e565b34801561056357600080fd5b50600254610484565b34801561057857600080fd5b5060095461053f906001600160a01b031681565b34801561059857600080fd5b506104ef6105a73660046136f2565b601a6020526000908152604090205460ff1681565b3480156105c857600080fd5b506104ef6105d7366004613765565b610f31565b3480156105e857600080fd5b5061048460145481565b3480156105fe57600080fd5b5060085461053f906001600160a01b031681565b34801561061e57600080fd5b50610484610f9a565b34801561063357600080fd5b506040516012815260200161048e565b34801561064f57600080fd5b5061046c61065e3660046136f2565b61101c565b34801561066f57600080fd5b506020546104ef9060ff1681565b34801561068957600080fd5b506104ef61069836600461383e565b611078565b3480156106a957600080fd5b50610484601d5481565b3480156106bf57600080fd5b5060165461053f906001600160a01b031681565b3480156106df57600080fd5b50610484601e5481565b3480156106f557600080fd5b50601c546104ef9060ff1681565b34801561070f57600080fd5b5061046c6110ae565b34801561072457600080fd5b506104ef6107333660046136f2565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561075d57600080fd5b5061048460225481565b34801561077357600080fd5b5061048460215481565b34801561078957600080fd5b5042610484565b34801561079c57600080fd5b5061048460105481565b3480156107b257600080fd5b5061046c6107c13660046136f2565b611135565b3480156107d257600080fd5b5061046c6107e13660046136f2565b611181565b3480156107f257600080fd5b506104846111cd565b34801561080757600080fd5b506104846108163660046136f2565b611212565b34801561082757600080fd5b5061046c61083636600461392a565b611291565b34801561084757600080fd5b506104846108563660046136f2565b611372565b34801561086757600080fd5b5061046c61141d565b34801561087c57600080fd5b50610484600e5481565b34801561089257600080fd5b5060195461053f906001600160a01b031681565b3480156108b257600080fd5b5061046c6108c136600461392a565b611453565b3480156108d257600080fd5b506005546001600160a01b031661053f565b3480156108f057600080fd5b50610484600f5481565b34801561090657600080fd5b5061048460135481565b34801561091c57600080fd5b506104ac611596565b34801561093157600080fd5b5061046c61094036600461386a565b6115a5565b34801561095157600080fd5b5061046c6109603660046137a6565b611646565b34801561097157600080fd5b50610484601b5481565b34801561098757600080fd5b5061048460155481565b34801561099d57600080fd5b50610484611710565b3480156109b257600080fd5b506104ef6109c136600461383e565b611755565b3480156109d257600080fd5b506104846109e13660046136f2565b6117a4565b3480156109f257600080fd5b506104ef610a0136600461383e565b6117d7565b348015610a1257600080fd5b50610a26610a213660046136f2565b6117e4565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161048e565b348015610a7757600080fd5b5061046c610a8636600461392a565b61188e565b348015610a9757600080fd5b506104ef610aa63660046136f2565b60246020526000908152604090205460ff1681565b348015610ac757600080fd5b506104846118bd565b348015610adc57600080fd5b5061046c610aeb3660046137a6565b611902565b348015610afc57600080fd5b5061046c610b0b36600461386a565b6119b1565b348015610b1c57600080fd5b5061046c610b2b3660046138f0565b611a8d565b348015610b3c57600080fd5b506104ef610b4b3660046136f2565b611aca565b348015610b5c57600080fd5b5061046c610b6b36600461392a565b611b48565b348015610b7c57600080fd5b5060075461053f906001600160a01b031681565b348015610b9c57600080fd5b506020546104ef90610100900460ff1681565b348015610bbb57600080fd5b5061046c611b77565b348015610bd057600080fd5b50610484610bdf36600461372c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c1657600080fd5b50610484600b5481565b348015610c2c57600080fd5b50610484601f5481565b348015610c4257600080fd5b5061046c610c5136600461398a565b611c1f565b348015610c6257600080fd5b5061046c610c7136600461392a565b611cd8565b348015610c8257600080fd5b50610484611d4d565b348015610c9757600080fd5b5061046c610ca636600461392a565b611d92565b348015610cb757600080fd5b5061046c610cc63660046138f0565b611ded565b348015610cd757600080fd5b5061046c610ce636600461398a565b611e2a565b348015610cf757600080fd5b50610484600d5481565b348015610d0d57600080fd5b50610a26610d1c36600461392a565b611edd565b348015610d2d57600080fd5b5061046c610d3c3660046136f2565b611f1f565b348015610d4d57600080fd5b5061048460125481565b348015610d6357600080fd5b50600a5461053f906001600160a01b031681565b6005546001600160a01b03163314610daa5760405162461bcd60e51b8152600401610da190613aad565b60405180910390fd5b60215415610dec5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610da1565b436021556020805460ff19169055565b606060038054610e0b90613c08565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3790613c08565b8015610e845780601f10610e5957610100808354040283529160200191610e84565b820191906000526020600020905b815481529060010190602001808311610e6757829003601f168201915b5050505050905090565b6000610e9b33848461217b565b5060015b92915050565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610da190613aad565b600854604051630dcb2e8960e01b8152600481018390526001600160a01b0390911690630dcb2e89906024015b600060405180830381600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b5050505050565b6000610f3e8484846122a0565b610f908433610f8b85604051806060016040528060288152602001613cd4602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906129c2565b61217b565b5060019392505050565b600854604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110179190613943565b905090565b6005546001600160a01b031633146110465760405162461bcd60e51b8152600401610da190613aad565b60085460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401610efc565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e9b918590610f8b9086611fb7565b60085460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b3790604401602060405180830381600087803b1580156110fa57600080fd5b505af115801561110e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611132919061390d565b50565b6005546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610da190613aad565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610da190613aad565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015610fdf57600080fd5b6008546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b60206040518083038186803b15801561125957600080fd5b505afa15801561126d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f9190613943565b6008546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c47990602401606060405180830381600087803b1580156112df57600080fd5b505af11580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611317919061395c565b604080518481526020810184905290810182905260608101889052929550909350915032906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b6007546000906001600160a01b03838116911614801561139c57506007546001600160a01b031633145b80156113aa575060205460ff165b156113ff576007546001600160a01b0316600090815260208190526040812054116113ff5760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610da1565b6001600160a01b038216600090815260208190526040902054610e9f565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610da190613aad565b61145160006129fc565b565b6005546001600160a01b0316331461147d5760405162461bcd60e51b8152600401610da190613aad565b62030d40811015801561149357506207a1208111155b6114fc5760405162461bcd60e51b815260206004820152603460248201527f476173466f7250726f63657373696e67206d757374206265206265747765656e6044820152730203230302c30303020616e64203530302c3030360641b6064820152608401610da1565b601b548114156115635760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610da1565b601b5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601b55565b606060048054610e0b90613c08565b6005546001600160a01b031633146115cf5760405162461bcd60e51b8152600401610da190613aad565b60005b828110156116405781601a60008686858181106115f1576115f1613c74565b905060200201602081019061160691906136f2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061163881613c43565b9150506115d2565b50505050565b6005546001600160a01b031633146116705760405162461bcd60e51b8152600401610da190613aad565b6007546001600160a01b03838116911614156117025760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610da1565b61170c8282612a4e565b5050565b60085460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015610fdf57600080fd5b6000610e9b3384610f8b85604051806060016040528060258152602001613cfc602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906129c2565b6008546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611241565b6000610e9b3384846122a0565b60085460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392839283928392839291169063fbcbc0f1906024015b6101006040518083038186803b15801561183b57600080fd5b505afa15801561184f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187391906137d4565b97509750975097509750975097509750919395975091939597565b6005546001600160a01b031633146118b85760405162461bcd60e51b8152600401610da190613aad565b600b55565b60085460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015610fdf57600080fd5b6005546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610da190613aad565b6001600160a01b03821660009081526023602052604090205460ff1615158115151461170c576001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119db5760405162461bcd60e51b8152600401610da190613aad565b60005b82811015611a4c5781602360008686858181106119fd576119fd613c74565b9050602002016020810190611a1291906136f2565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611a4481613c43565b9150506119de565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611a80939291906139bc565b60405180910390a1505050565b6005546001600160a01b03163314611ab75760405162461bcd60e51b8152600401610da190613aad565b601c805460ff1916911515919091179055565b60085460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c5699060240160206040518083038186803b158015611b1057600080fd5b505afa158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f919061390d565b6005546001600160a01b03163314611b725760405162461bcd60e51b8152600401610da190613aad565b601e55565b6005546001600160a01b03163314611ba15760405162461bcd60e51b8152600401610da190613aad565b6000611bac30611372565b905060008111611bf35760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610da1565b6007805460ff60a01b1916600160a01b179055611c0f81612bac565b506007805460ff60a01b19169055565b6005546001600160a01b03163314611c495760405162461bcd60e51b8152600401610da190613aad565b6109c4611c6282611c5c8581888a611fb7565b90611fb7565b1115611cb05760405162461bcd60e51b815260206004820152601960248201527f546f74616c2062757920666565206973206f76657220323525000000000000006044820152606401610da1565b600c839055600d849055600e829055611ccd82611c5c8587611fb7565b601055600f55505050565b6005546001600160a01b03163314611d025760405162461bcd60e51b8152600401610da190613aad565b6003811115611d485760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610da1565b601f55565b6008546040805163039e107b60e61b815290516000926001600160a01b03169163e7841ec0916004808301926020929190829003018186803b158015610fdf57600080fd5b6005546001600160a01b03163314611dbc5760405162461bcd60e51b8152600401610da190613aad565b60085460405163e98030c760e01b8152600481018390526001600160a01b039091169063e98030c790602401610efc565b6005546001600160a01b03163314611e175760405162461bcd60e51b8152600401610da190613aad565b6020805460ff1916911515919091179055565b6005546001600160a01b03163314611e545760405162461bcd60e51b8152600401610da190613aad565b6109c4611e6782611c5c8581888a611fb7565b1115611eb55760405162461bcd60e51b815260206004820152601960248201527f546f74616c2073656c20666565206973206f76657220323525000000000000006044820152606401610da1565b601183905560128490556013829055611ed282611c5c8587611fb7565b601555601455505050565b600854604051635183d6fd60e01b81526004810183905260009182918291829182918291829182916001600160a01b0390911690635183d6fd90602401611822565b6005546001600160a01b03163314611f495760405162461bcd60e51b8152600401610da190613aad565b6001600160a01b038116611fae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610da1565b611132816129fc565b600080611fc48385613b98565b9050838110156120165760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610da1565b9392505050565b60008261202c57506000610e9f565b60006120388385613bd2565b9050826120458583613bb0565b146120165760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610da1565b600061201683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131da565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b0381166121765760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610da1565b919050565b6001600160a01b0383166121dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610da1565b6001600160a01b03821661223e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610da1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b8152600401610da190613ae2565b6001600160a01b0382166122ec5760405162461bcd60e51b8152600401610da190613a6a565b6001600160a01b0383166000908152601a602052604090205460ff161561233a5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610da1565b806123505761234b83836000613208565b505050565b6001600160a01b03831660009081526024602052604090205460ff168061238f57506001600160a01b03821660009081526024602052604090205460ff165b156123fc576001600160a01b03831660009081526023602052604090205460ff161580156123d657506001600160a01b03821660009081526023602052604090205460ff16155b156123fc57602054610100900460ff1680156123f25750602154155b156123fc57600080fd5b6007546001600160a01b03838116911614801561242b5750600754612429906001600160a01b0316611372565b155b156124355743601d555b6001600160a01b03831660009081526023602052604090205460ff1615801561247757506001600160a01b03821660009081526023602052604090205460ff16155b156124c4576007546001600160a01b0384811691161480156124a75750601e54601d546124a49190613b98565b43105b156124c45760175461234b9084906001600160a01b031683613208565b60006124cf30611372565b600b54909150811080159081906124f05750600754600160a01b900460ff16155b801561251557506001600160a01b03851660009081526024602052604090205460ff16155b801561253a57506001600160a01b03851660009081526023602052604090205460ff16155b801561255f57506001600160a01b03841660009081526023602052604090205460ff16155b801561256d5750601c5460ff165b8015612588575060006015546010546125869190613b98565b115b156125b7576007805460ff60a01b1916600160a01b1790556125a982612bac565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526023602052604090205460ff600160a01b90920482161591168061260557506001600160a01b03851660009081526023602052604090205460ff165b1561260e575060005b80156127e0576001600160a01b038616600090815260246020526040812054819060ff1615612678576126586127106126526010548961201d90919063ffffffff16565b9061209c565b9150612675612710612652600f548961201d90919063ffffffff16565b90505b6001600160a01b03871660009081526024602052604090205460ff16156126d4576126b46127106126526015548961201d90919063ffffffff16565b91506126d16127106126526014548961201d90919063ffffffff16565b90505b6001600160a01b03881660009081526024602052604090205460ff168061271357506001600160a01b03871660009081526024602052604090205460ff165b1561279e57601f541561279e576000805b601f548110156127815760408051602081018390529081018990524260608201526080016040516020818303038152906040528051906020012060001c915061276f8a836001613208565b8061277981613c43565b915050612724565b50601f54612790906001613bd2565b61279a9088613bf1565b9650505b6127b26127ab8284613b98565b8790613311565b955080156127d2576019546127d29089906001600160a01b031683613208565b6127dd883084613208565b50505b6127eb868686613208565b6008546001600160a01b031663e30443bc8761280681611372565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561284c57600080fd5b505af192505050801561285d575060015b506008546001600160a01b031663e30443bc8661287981611372565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156128bf57600080fd5b505af19250505080156128d0575060015b50600754600160a01b900460ff166129ba57601b546008546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401606060405180830381600087803b15801561292e57600080fd5b505af192505050801561295e575060408051601f3d908101601f1916820190925261295b9181019061395c565b60015b612967576129b8565b60408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b505b505050505050565b600081848411156129e65760405162461bcd60e51b8152600401610da19190613a15565b5060006129f38486613bf1565b95945050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526024602052604090205460ff1615158115151415612ae35760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610da1565b6001600160a01b0382166000908152602460205260409020805460ff19168215801591909117909155612b705760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b158015612b5757600080fd5b505af1158015612b6b573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60006002601554601054612bc09190613b98565b601254600d54612bd09190613b98565b612bda9085613bd2565b612be49190613bb0565b612bee9190613bb0565b905060006002601254600d54612c049190613b98565b612c0e9190613bb0565b601554601054612c1e9190613b98565b612c289190613bf1565b9050612c3c612c378385613bf1565b613353565b6018546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612c8057600080fd5b505afa158015612c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb89190613943565b9050600082601354600e54612ccd9190613b98565b612cd79084613bd2565b612ce19190613bb0565b90508015612d8357601854604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015612d2f57600080fd5b505af1158015612d43573d6000803e3d6000fd5b50506016546040516001600160a01b03909116925083156108fc02915083906000818181858888f19350505050158015612d81573d6000803e3d6000fd5b505b8315612dc357612dc384846002601254600d54612da09190613b98565b612daa9087613bd2565b612db49190613bb0565b612dbe9190613bb0565b6135fd565b600083601154600c54612dd69190613b98565b612de09085613bd2565b612dea9190613bb0565b905080156129ba57600a546040805160028082526060820183526001600160a01b0390931692600092602083019080368337505060185482519293506001600160a01b031691839150600090612e4257612e42613c74565b6001600160a01b039283166020918202929092010152600a54825191169082906001908110612e7357612e73613c74565b6001600160a01b039283166020918202929092010152600654604051635c11d79560e01b8152911690635c11d79590612eb9908690600090869030904290600401613b27565b600060405180830381600087803b158015612ed357600080fd5b505af1925050508015612ee4575060015b612f12576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015612f5457600080fd5b505afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190613943565b9050600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612fdc57600080fd5b505afa158015612ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130149190613943565b6130a45760165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529084169063a9059cbb90604401602060405180830381600087803b15801561306657600080fd5b505af115801561307a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309e919061390d565b506131cf565b60085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009185169063a9059cbb90604401602060405180830381600087803b1580156130f457600080fd5b505af1158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c919061390d565b905080156131cd5760085460405163ba72a95560e01b8152600481018490526001600160a01b039091169063ba72a95590602401600060405180830381600087803b15801561317a57600080fd5b505af115801561318e573d6000803e3d6000fd5b5050604080518d8152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a15b505b505050505050505050565b600081836131fb5760405162461bcd60e51b8152600401610da19190613a15565b5060006129f38486613bb0565b6001600160a01b03831661322e5760405162461bcd60e51b8152600401610da190613ae2565b6001600160a01b0382166132545760405162461bcd60e51b8152600401610da190613a6a565b61329181604051806060016040528060268152602001613cae602691396001600160a01b03861660009081526020819052604090205491906129c2565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546132c09082611fb7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612293565b600061201683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c2565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061338857613388613c74565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156133dc57600080fd5b505afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061370f565b8160018151811061342757613427613c74565b6001600160a01b03928316602091820292909201015260065461344d913091168461217b565b600654600954604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261348a92879260009288929116904290600401613b27565b600060405180830381600087803b1580156134a457600080fd5b505af19250505080156134b5575060015b6134e3576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b6018546009546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240160206040518083038186803b15801561352f57600080fd5b505afa158015613543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135679190613943565b9050801561234b576018546009546040516323b872dd60e01b81526001600160a01b039182166004820152306024820152604481018490529116906323b872dd90606401602060405180830381600087803b1580156135c557600080fd5b505af11580156135d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611640919061390d565b6006546136159030906001600160a01b03168461217b565b60065460185460175460405162e8e33760e81b81526001600160a01b039283166004820152306024820152604481018590526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b15801561369157600080fd5b505af19250505080156136c1575060408051601f3d908101601f191682019092526136be9181019061395c565b60015b610f2a576040517f6c331c730efd7c7d973857825b7c7b2087a7dad2124068053cb23fb17801604990600090a15050565b60006020828403121561370457600080fd5b813561201681613c8a565b60006020828403121561372157600080fd5b815161201681613c8a565b6000806040838503121561373f57600080fd5b823561374a81613c8a565b9150602083013561375a81613c8a565b809150509250929050565b60008060006060848603121561377a57600080fd5b833561378581613c8a565b9250602084013561379581613c8a565b929592945050506040919091013590565b600080604083850312156137b957600080fd5b82356137c481613c8a565b9150602083013561375a81613c9f565b600080600080600080600080610100898b0312156137f157600080fd5b88516137fc81613c8a565b809850506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e089015190509295985092959890939650565b6000806040838503121561385157600080fd5b823561385c81613c8a565b946020939093013593505050565b60008060006040848603121561387f57600080fd5b833567ffffffffffffffff8082111561389757600080fd5b818601915086601f8301126138ab57600080fd5b8135818111156138ba57600080fd5b8760208260051b85010111156138cf57600080fd5b602092830195509350508401356138e581613c9f565b809150509250925092565b60006020828403121561390257600080fd5b813561201681613c9f565b60006020828403121561391f57600080fd5b815161201681613c9f565b60006020828403121561393c57600080fd5b5035919050565b60006020828403121561395557600080fd5b5051919050565b60008060006060848603121561397157600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156139a057600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b868110156139ff5782356139e281613c8a565b6001600160a01b03168252602092830192909101906001016139cf565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015613a4257858101830151858201604001528201613a26565b81811115613a54576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b775784516001600160a01b031683529383019391830191600101613b52565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613bab57613bab613c5e565b500190565b600082613bcd57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613bec57613bec613c5e565b500290565b600082821015613c0357613c03613c5e565b500390565b600181811c90821680613c1c57607f821691505b60208210811415613c3d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c5757613c57613c5e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461113257600080fd5b801515811461113257600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220adc0212ec7bba4289e29dc64dc78798f575f9b180f77c7c57e547e8cc5b5449f64736f6c63430008070033608060405234801561001057600080fd5b5060405161015638038061015683398101604081905261002f916100b7565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b390604401602060405180830381600087803b15801561007857600080fd5b505af115801561008c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b091906100e7565b5050610109565b6000602082840312156100c957600080fd5b81516001600160a01b03811681146100e057600080fd5b9392505050565b6000602082840312156100f957600080fd5b815180151581146100e057600080fd5b603f806101176000396000f3fe6080604052600080fdfea2646970667358221220ec062e04972ddae1b2faae8b9e2675b51ff862e3ed70d2161f15ede848b6be1b64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000094e6569726f4b696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094e6569726f4b696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000812ba41e071c7b7fa4ebcfb62df5f45f6fa853ee0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000044a67078d59fa69b66316114014f0527140f82b0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f70000000000000000000000009d5aa76bea985571d13203b839023bd619d244ed000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061f313f880000000000000000000000000000000000000000000295be96e64066972000000000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061044b5760003560e01c80638da5cb5b11610234578063c705c5691161012e578063e5c2b0a6116100b6578063f11a24d31161007a578063f11a24d314610ceb578063f27fd25414610d01578063f2fde38b14610d21578063f637434214610d41578063f7c618c114610d5757600080fd5b8063e5c2b0a614610c56578063e7841ec014610c76578063e98030c714610c8b578063ea10510e14610cab578063eb671e9114610ccb57600080fd5b8063d2a8b440116100fd578063d2a8b44014610baf578063dd62ed3e14610bc4578063e2f4560514610c0a578063e32759cf14610c20578063e4bf1bed14610c3657600080fd5b8063c705c56914610b30578063c7f063d314610b50578063c816841b14610b70578063c92d567e14610b9057600080fd5b8063a457c2d7116101bc578063b62496f511610180578063b62496f514610a8b578063bdd4f29f14610abb578063c024666814610ad0578063c492f04614610af0578063c49b9a8014610b1057600080fd5b8063a457c2d7146109a6578063a8b9d240146109c6578063a9059cbb146109e6578063ad56c13c14610a06578063afa4f3b214610a6b57600080fd5b80639a55fff0116102035780639a55fff0146109255780639a7a23d6146109455780639c1b8af5146109655780639d9241ec1461097b578063a26579ad1461099157600080fd5b80638da5cb5b146108c65780638de743b3146108e457806392136913146108fa57806395d89b411461091057600080fd5b80634144d9e4116103455780635d098b38116102cd57806370a082311161029157806370a082311461083b578063715018a61461085b5780637bce5a041461087057806385141a7714610886578063871c128d146108a657600080fd5b80635d098b38146107a657806361a60d57146107c657806364b0f653146107e65780636843cd84146107fb578063700bb1911461081b57600080fd5b80634fbee193116103145780634fbee1931461071857806354fd4d5014610751578063553193ca14610767578063557ed1ba1461077d57806359b107b91461079057600080fd5b80634144d9e4146106b357806341c0e1b5146106d35780634a74bb02146106e95780634e71d92d1461070357600080fd5b80631cdd3be3116103d3578063313ce56711610397578063313ce5671461062757806331e79db01461064357806335c9608914610663578063395093511461067d5780633df4ddf41461069d57600080fd5b80631cdd3be31461058c57806323b872dd146105bc57806324942a04146105dc5780632c1f5216146105f257806330bb4cff1461061257600080fd5b8063095ea7b31161041a578063095ea7b3146104cf5780630dcb2e89146104ff5780631694505e1461051f57806318160ddd1461055757806318a6bc321461056c57600080fd5b806301339c211461045757806302df64d61461046e57806306fdde031461049757806308b2a12c146104b957600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d77565b005b34801561047a57600080fd5b50610484600c5481565b6040519081526020015b60405180910390f35b3480156104a357600080fd5b506104ac610dfc565b60405161048e9190613a15565b3480156104c557600080fd5b5061048460115481565b3480156104db57600080fd5b506104ef6104ea36600461383e565b610e8e565b604051901515815260200161048e565b34801561050b57600080fd5b5061046c61051a36600461392a565b610ea5565b34801561052b57600080fd5b5060065461053f906001600160a01b031681565b6040516001600160a01b03909116815260200161048e565b34801561056357600080fd5b50600254610484565b34801561057857600080fd5b5060095461053f906001600160a01b031681565b34801561059857600080fd5b506104ef6105a73660046136f2565b601a6020526000908152604090205460ff1681565b3480156105c857600080fd5b506104ef6105d7366004613765565b610f31565b3480156105e857600080fd5b5061048460145481565b3480156105fe57600080fd5b5060085461053f906001600160a01b031681565b34801561061e57600080fd5b50610484610f9a565b34801561063357600080fd5b506040516012815260200161048e565b34801561064f57600080fd5b5061046c61065e3660046136f2565b61101c565b34801561066f57600080fd5b506020546104ef9060ff1681565b34801561068957600080fd5b506104ef61069836600461383e565b611078565b3480156106a957600080fd5b50610484601d5481565b3480156106bf57600080fd5b5060165461053f906001600160a01b031681565b3480156106df57600080fd5b50610484601e5481565b3480156106f557600080fd5b50601c546104ef9060ff1681565b34801561070f57600080fd5b5061046c6110ae565b34801561072457600080fd5b506104ef6107333660046136f2565b6001600160a01b031660009081526023602052604090205460ff1690565b34801561075d57600080fd5b5061048460225481565b34801561077357600080fd5b5061048460215481565b34801561078957600080fd5b5042610484565b34801561079c57600080fd5b5061048460105481565b3480156107b257600080fd5b5061046c6107c13660046136f2565b611135565b3480156107d257600080fd5b5061046c6107e13660046136f2565b611181565b3480156107f257600080fd5b506104846111cd565b34801561080757600080fd5b506104846108163660046136f2565b611212565b34801561082757600080fd5b5061046c61083636600461392a565b611291565b34801561084757600080fd5b506104846108563660046136f2565b611372565b34801561086757600080fd5b5061046c61141d565b34801561087c57600080fd5b50610484600e5481565b34801561089257600080fd5b5060195461053f906001600160a01b031681565b3480156108b257600080fd5b5061046c6108c136600461392a565b611453565b3480156108d257600080fd5b506005546001600160a01b031661053f565b3480156108f057600080fd5b50610484600f5481565b34801561090657600080fd5b5061048460135481565b34801561091c57600080fd5b506104ac611596565b34801561093157600080fd5b5061046c61094036600461386a565b6115a5565b34801561095157600080fd5b5061046c6109603660046137a6565b611646565b34801561097157600080fd5b50610484601b5481565b34801561098757600080fd5b5061048460155481565b34801561099d57600080fd5b50610484611710565b3480156109b257600080fd5b506104ef6109c136600461383e565b611755565b3480156109d257600080fd5b506104846109e13660046136f2565b6117a4565b3480156109f257600080fd5b506104ef610a0136600461383e565b6117d7565b348015610a1257600080fd5b50610a26610a213660046136f2565b6117e4565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161048e565b348015610a7757600080fd5b5061046c610a8636600461392a565b61188e565b348015610a9757600080fd5b506104ef610aa63660046136f2565b60246020526000908152604090205460ff1681565b348015610ac757600080fd5b506104846118bd565b348015610adc57600080fd5b5061046c610aeb3660046137a6565b611902565b348015610afc57600080fd5b5061046c610b0b36600461386a565b6119b1565b348015610b1c57600080fd5b5061046c610b2b3660046138f0565b611a8d565b348015610b3c57600080fd5b506104ef610b4b3660046136f2565b611aca565b348015610b5c57600080fd5b5061046c610b6b36600461392a565b611b48565b348015610b7c57600080fd5b5060075461053f906001600160a01b031681565b348015610b9c57600080fd5b506020546104ef90610100900460ff1681565b348015610bbb57600080fd5b5061046c611b77565b348015610bd057600080fd5b50610484610bdf36600461372c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c1657600080fd5b50610484600b5481565b348015610c2c57600080fd5b50610484601f5481565b348015610c4257600080fd5b5061046c610c5136600461398a565b611c1f565b348015610c6257600080fd5b5061046c610c7136600461392a565b611cd8565b348015610c8257600080fd5b50610484611d4d565b348015610c9757600080fd5b5061046c610ca636600461392a565b611d92565b348015610cb757600080fd5b5061046c610cc63660046138f0565b611ded565b348015610cd757600080fd5b5061046c610ce636600461398a565b611e2a565b348015610cf757600080fd5b50610484600d5481565b348015610d0d57600080fd5b50610a26610d1c36600461392a565b611edd565b348015610d2d57600080fd5b5061046c610d3c3660046136f2565b611f1f565b348015610d4d57600080fd5b5061048460125481565b348015610d6357600080fd5b50600a5461053f906001600160a01b031681565b6005546001600160a01b03163314610daa5760405162461bcd60e51b8152600401610da190613aad565b60405180910390fd5b60215415610dec5760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610da1565b436021556020805460ff19169055565b606060038054610e0b90613c08565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3790613c08565b8015610e845780601f10610e5957610100808354040283529160200191610e84565b820191906000526020600020905b815481529060010190602001808311610e6757829003601f168201915b5050505050905090565b6000610e9b33848461217b565b5060015b92915050565b6005546001600160a01b03163314610ecf5760405162461bcd60e51b8152600401610da190613aad565b600854604051630dcb2e8960e01b8152600481018390526001600160a01b0390911690630dcb2e89906024015b600060405180830381600087803b158015610f1657600080fd5b505af1158015610f2a573d6000803e3d6000fd5b5050505050565b6000610f3e8484846122a0565b610f908433610f8b85604051806060016040528060288152602001613cd4602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906129c2565b61217b565b5060019392505050565b600854604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015610fdf57600080fd5b505afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110179190613943565b905090565b6005546001600160a01b031633146110465760405162461bcd60e51b8152600401610da190613aad565b60085460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401610efc565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e9b918590610f8b9086611fb7565b60085460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b3790604401602060405180830381600087803b1580156110fa57600080fd5b505af115801561110e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611132919061390d565b50565b6005546001600160a01b0316331461115f5760405162461bcd60e51b8152600401610da190613aad565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610da190613aad565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015610fdf57600080fd5b6008546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b60206040518083038186803b15801561125957600080fd5b505afa15801561126d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f9190613943565b6008546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c47990602401606060405180830381600087803b1580156112df57600080fd5b505af11580156112f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611317919061395c565b604080518481526020810184905290810182905260608101889052929550909350915032906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b6007546000906001600160a01b03838116911614801561139c57506007546001600160a01b031633145b80156113aa575060205460ff165b156113ff576007546001600160a01b0316600090815260208190526040812054116113ff5760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610da1565b6001600160a01b038216600090815260208190526040902054610e9f565b6005546001600160a01b031633146114475760405162461bcd60e51b8152600401610da190613aad565b61145160006129fc565b565b6005546001600160a01b0316331461147d5760405162461bcd60e51b8152600401610da190613aad565b62030d40811015801561149357506207a1208111155b6114fc5760405162461bcd60e51b815260206004820152603460248201527f476173466f7250726f63657373696e67206d757374206265206265747765656e6044820152730203230302c30303020616e64203530302c3030360641b6064820152608401610da1565b601b548114156115635760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610da1565b601b5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601b55565b606060048054610e0b90613c08565b6005546001600160a01b031633146115cf5760405162461bcd60e51b8152600401610da190613aad565b60005b828110156116405781601a60008686858181106115f1576115f1613c74565b905060200201602081019061160691906136f2565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061163881613c43565b9150506115d2565b50505050565b6005546001600160a01b031633146116705760405162461bcd60e51b8152600401610da190613aad565b6007546001600160a01b03838116911614156117025760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610da1565b61170c8282612a4e565b5050565b60085460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015610fdf57600080fd5b6000610e9b3384610f8b85604051806060016040528060258152602001613cfc602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906129c2565b6008546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401611241565b6000610e9b3384846122a0565b60085460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283928392839283928392839291169063fbcbc0f1906024015b6101006040518083038186803b15801561183b57600080fd5b505afa15801561184f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187391906137d4565b97509750975097509750975097509750919395975091939597565b6005546001600160a01b031633146118b85760405162461bcd60e51b8152600401610da190613aad565b600b55565b60085460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015610fdf57600080fd5b6005546001600160a01b0316331461192c5760405162461bcd60e51b8152600401610da190613aad565b6001600160a01b03821660009081526023602052604090205460ff1615158115151461170c576001600160a01b038216600081815260236020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146119db5760405162461bcd60e51b8152600401610da190613aad565b60005b82811015611a4c5781602360008686858181106119fd576119fd613c74565b9050602002016020810190611a1291906136f2565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611a4481613c43565b9150506119de565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611a80939291906139bc565b60405180910390a1505050565b6005546001600160a01b03163314611ab75760405162461bcd60e51b8152600401610da190613aad565b601c805460ff1916911515919091179055565b60085460405163c705c56960e01b81526001600160a01b038381166004830152600092169063c705c5699060240160206040518083038186803b158015611b1057600080fd5b505afa158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f919061390d565b6005546001600160a01b03163314611b725760405162461bcd60e51b8152600401610da190613aad565b601e55565b6005546001600160a01b03163314611ba15760405162461bcd60e51b8152600401610da190613aad565b6000611bac30611372565b905060008111611bf35760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610da1565b6007805460ff60a01b1916600160a01b179055611c0f81612bac565b506007805460ff60a01b19169055565b6005546001600160a01b03163314611c495760405162461bcd60e51b8152600401610da190613aad565b6109c4611c6282611c5c8581888a611fb7565b90611fb7565b1115611cb05760405162461bcd60e51b815260206004820152601960248201527f546f74616c2062757920666565206973206f76657220323525000000000000006044820152606401610da1565b600c839055600d849055600e829055611ccd82611c5c8587611fb7565b601055600f55505050565b6005546001600160a01b03163314611d025760405162461bcd60e51b8152600401610da190613aad565b6003811115611d485760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610da1565b601f55565b6008546040805163039e107b60e61b815290516000926001600160a01b03169163e7841ec0916004808301926020929190829003018186803b158015610fdf57600080fd5b6005546001600160a01b03163314611dbc5760405162461bcd60e51b8152600401610da190613aad565b60085460405163e98030c760e01b8152600481018390526001600160a01b039091169063e98030c790602401610efc565b6005546001600160a01b03163314611e175760405162461bcd60e51b8152600401610da190613aad565b6020805460ff1916911515919091179055565b6005546001600160a01b03163314611e545760405162461bcd60e51b8152600401610da190613aad565b6109c4611e6782611c5c8581888a611fb7565b1115611eb55760405162461bcd60e51b815260206004820152601960248201527f546f74616c2073656c20666565206973206f76657220323525000000000000006044820152606401610da1565b601183905560128490556013829055611ed282611c5c8587611fb7565b601555601455505050565b600854604051635183d6fd60e01b81526004810183905260009182918291829182918291829182916001600160a01b0390911690635183d6fd90602401611822565b6005546001600160a01b03163314611f495760405162461bcd60e51b8152600401610da190613aad565b6001600160a01b038116611fae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610da1565b611132816129fc565b600080611fc48385613b98565b9050838110156120165760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610da1565b9392505050565b60008261202c57506000610e9f565b60006120388385613bd2565b9050826120458583613bb0565b146120165760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610da1565b600061201683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131da565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528260601b60148201526e5af43d82803e903d91602b57fd5bf360881b60288201526037816000f09150506001600160a01b0381166121765760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610da1565b919050565b6001600160a01b0383166121dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610da1565b6001600160a01b03821661223e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610da1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166122c65760405162461bcd60e51b8152600401610da190613ae2565b6001600160a01b0382166122ec5760405162461bcd60e51b8152600401610da190613a6a565b6001600160a01b0383166000908152601a602052604090205460ff161561233a5760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610da1565b806123505761234b83836000613208565b505050565b6001600160a01b03831660009081526024602052604090205460ff168061238f57506001600160a01b03821660009081526024602052604090205460ff165b156123fc576001600160a01b03831660009081526023602052604090205460ff161580156123d657506001600160a01b03821660009081526023602052604090205460ff16155b156123fc57602054610100900460ff1680156123f25750602154155b156123fc57600080fd5b6007546001600160a01b03838116911614801561242b5750600754612429906001600160a01b0316611372565b155b156124355743601d555b6001600160a01b03831660009081526023602052604090205460ff1615801561247757506001600160a01b03821660009081526023602052604090205460ff16155b156124c4576007546001600160a01b0384811691161480156124a75750601e54601d546124a49190613b98565b43105b156124c45760175461234b9084906001600160a01b031683613208565b60006124cf30611372565b600b54909150811080159081906124f05750600754600160a01b900460ff16155b801561251557506001600160a01b03851660009081526024602052604090205460ff16155b801561253a57506001600160a01b03851660009081526023602052604090205460ff16155b801561255f57506001600160a01b03841660009081526023602052604090205460ff16155b801561256d5750601c5460ff165b8015612588575060006015546010546125869190613b98565b115b156125b7576007805460ff60a01b1916600160a01b1790556125a982612bac565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526023602052604090205460ff600160a01b90920482161591168061260557506001600160a01b03851660009081526023602052604090205460ff165b1561260e575060005b80156127e0576001600160a01b038616600090815260246020526040812054819060ff1615612678576126586127106126526010548961201d90919063ffffffff16565b9061209c565b9150612675612710612652600f548961201d90919063ffffffff16565b90505b6001600160a01b03871660009081526024602052604090205460ff16156126d4576126b46127106126526015548961201d90919063ffffffff16565b91506126d16127106126526014548961201d90919063ffffffff16565b90505b6001600160a01b03881660009081526024602052604090205460ff168061271357506001600160a01b03871660009081526024602052604090205460ff165b1561279e57601f541561279e576000805b601f548110156127815760408051602081018390529081018990524260608201526080016040516020818303038152906040528051906020012060001c915061276f8a836001613208565b8061277981613c43565b915050612724565b50601f54612790906001613bd2565b61279a9088613bf1565b9650505b6127b26127ab8284613b98565b8790613311565b955080156127d2576019546127d29089906001600160a01b031683613208565b6127dd883084613208565b50505b6127eb868686613208565b6008546001600160a01b031663e30443bc8761280681611372565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561284c57600080fd5b505af192505050801561285d575060015b506008546001600160a01b031663e30443bc8661287981611372565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156128bf57600080fd5b505af19250505080156128d0575060015b50600754600160a01b900460ff166129ba57601b546008546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401606060405180830381600087803b15801561292e57600080fd5b505af192505050801561295e575060408051601f3d908101601f1916820190925261295b9181019061395c565b60015b612967576129b8565b60408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b505b505050505050565b600081848411156129e65760405162461bcd60e51b8152600401610da19190613a15565b5060006129f38486613bf1565b95945050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821660009081526024602052604090205460ff1615158115151415612ae35760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610da1565b6001600160a01b0382166000908152602460205260409020805460ff19168215801591909117909155612b705760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db090602401600060405180830381600087803b158015612b5757600080fd5b505af1158015612b6b573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b60006002601554601054612bc09190613b98565b601254600d54612bd09190613b98565b612bda9085613bd2565b612be49190613bb0565b612bee9190613bb0565b905060006002601254600d54612c049190613b98565b612c0e9190613bb0565b601554601054612c1e9190613b98565b612c289190613bf1565b9050612c3c612c378385613bf1565b613353565b6018546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015612c8057600080fd5b505afa158015612c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb89190613943565b9050600082601354600e54612ccd9190613b98565b612cd79084613bd2565b612ce19190613bb0565b90508015612d8357601854604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015612d2f57600080fd5b505af1158015612d43573d6000803e3d6000fd5b50506016546040516001600160a01b03909116925083156108fc02915083906000818181858888f19350505050158015612d81573d6000803e3d6000fd5b505b8315612dc357612dc384846002601254600d54612da09190613b98565b612daa9087613bd2565b612db49190613bb0565b612dbe9190613bb0565b6135fd565b600083601154600c54612dd69190613b98565b612de09085613bd2565b612dea9190613bb0565b905080156129ba57600a546040805160028082526060820183526001600160a01b0390931692600092602083019080368337505060185482519293506001600160a01b031691839150600090612e4257612e42613c74565b6001600160a01b039283166020918202929092010152600a54825191169082906001908110612e7357612e73613c74565b6001600160a01b039283166020918202929092010152600654604051635c11d79560e01b8152911690635c11d79590612eb9908690600090869030904290600401613b27565b600060405180830381600087803b158015612ed357600080fd5b505af1925050508015612ee4575060015b612f12576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015612f5457600080fd5b505afa158015612f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8c9190613943565b9050600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612fdc57600080fd5b505afa158015612ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130149190613943565b6130a45760165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529084169063a9059cbb90604401602060405180830381600087803b15801561306657600080fd5b505af115801561307a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309e919061390d565b506131cf565b60085460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009185169063a9059cbb90604401602060405180830381600087803b1580156130f457600080fd5b505af1158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c919061390d565b905080156131cd5760085460405163ba72a95560e01b8152600481018490526001600160a01b039091169063ba72a95590602401600060405180830381600087803b15801561317a57600080fd5b505af115801561318e573d6000803e3d6000fd5b5050604080518d8152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a15b505b505050505050505050565b600081836131fb5760405162461bcd60e51b8152600401610da19190613a15565b5060006129f38486613bb0565b6001600160a01b03831661322e5760405162461bcd60e51b8152600401610da190613ae2565b6001600160a01b0382166132545760405162461bcd60e51b8152600401610da190613a6a565b61329181604051806060016040528060268152602001613cae602691396001600160a01b03861660009081526020819052604090205491906129c2565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546132c09082611fb7565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612293565b600061201683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129c2565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061338857613388613c74565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156133dc57600080fd5b505afa1580156133f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613414919061370f565b8160018151811061342757613427613c74565b6001600160a01b03928316602091820292909201015260065461344d913091168461217b565b600654600954604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261348a92879260009288929116904290600401613b27565b600060405180830381600087803b1580156134a457600080fd5b505af19250505080156134b5575060015b6134e3576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b6018546009546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240160206040518083038186803b15801561352f57600080fd5b505afa158015613543573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135679190613943565b9050801561234b576018546009546040516323b872dd60e01b81526001600160a01b039182166004820152306024820152604481018490529116906323b872dd90606401602060405180830381600087803b1580156135c557600080fd5b505af11580156135d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611640919061390d565b6006546136159030906001600160a01b03168461217b565b60065460185460175460405162e8e33760e81b81526001600160a01b039283166004820152306024820152604481018590526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b15801561369157600080fd5b505af19250505080156136c1575060408051601f3d908101601f191682019092526136be9181019061395c565b60015b610f2a576040517f6c331c730efd7c7d973857825b7c7b2087a7dad2124068053cb23fb17801604990600090a15050565b60006020828403121561370457600080fd5b813561201681613c8a565b60006020828403121561372157600080fd5b815161201681613c8a565b6000806040838503121561373f57600080fd5b823561374a81613c8a565b9150602083013561375a81613c8a565b809150509250929050565b60008060006060848603121561377a57600080fd5b833561378581613c8a565b9250602084013561379581613c8a565b929592945050506040919091013590565b600080604083850312156137b957600080fd5b82356137c481613c8a565b9150602083013561375a81613c9f565b600080600080600080600080610100898b0312156137f157600080fd5b88516137fc81613c8a565b809850506020890151965060408901519550606089015194506080890151935060a0890151925060c0890151915060e089015190509295985092959890939650565b6000806040838503121561385157600080fd5b823561385c81613c8a565b946020939093013593505050565b60008060006040848603121561387f57600080fd5b833567ffffffffffffffff8082111561389757600080fd5b818601915086601f8301126138ab57600080fd5b8135818111156138ba57600080fd5b8760208260051b85010111156138cf57600080fd5b602092830195509350508401356138e581613c9f565b809150509250925092565b60006020828403121561390257600080fd5b813561201681613c9f565b60006020828403121561391f57600080fd5b815161201681613c9f565b60006020828403121561393c57600080fd5b5035919050565b60006020828403121561395557600080fd5b5051919050565b60008060006060848603121561397157600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156139a057600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b868110156139ff5782356139e281613c8a565b6001600160a01b03168252602092830192909101906001016139cf565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b81811015613a4257858101830151858201604001528201613a26565b81811115613a54576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b775784516001600160a01b031683529383019391830191600101613b52565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115613bab57613bab613c5e565b500190565b600082613bcd57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615613bec57613bec613c5e565b500290565b600082821015613c0357613c03613c5e565b500390565b600181811c90821680613c1c57607f821691505b60208210811415613c3d57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613c5757613c57613c5e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461113257600080fd5b801515811461113257600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220adc0212ec7bba4289e29dc64dc78798f575f9b180f77c7c57e547e8cc5b5449f64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000094e6569726f4b696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094e6569726f4b696e6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000812ba41e071c7b7fa4ebcfb62df5f45f6fa853ee0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000044a67078d59fa69b66316114014f0527140f82b0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f70000000000000000000000009d5aa76bea985571d13203b839023bd619d244ed000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061f313f880000000000000000000000000000000000000000000295be96e64066972000000000000000000000000000000000000000000000000000000006a94d74f430000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : stringParams (string[]): NeiroKing,NeiroKing
Arg [1] : addrs (address[]): 0x812Ba41e071C7b7fA4EBcFB62dF5F45f6fA853Ee,0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,0x044a67078d59Fa69b66316114014f0527140F82b,0x9bB69e4dDDA0a1865FEC3ba828787E6f886750F7,0x9d5Aa76beA985571D13203B839023BD619D244ED
Arg [2] : numberParams (uint256[]): 100,200,100,0,100,200,100,0,420690000000,50000000000000000000000000,30000000000000000
Arg [3] : boolParams (bool[]): True,False
-----Encoded View---------------
32 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [8] : 4e6569726f4b696e670000000000000000000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [10] : 4e6569726f4b696e670000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [12] : 000000000000000000000000812ba41e071c7b7fa4ebcfb62df5f45f6fa853ee
Arg [13] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [14] : 000000000000000000000000044a67078d59fa69b66316114014f0527140f82b
Arg [15] : 0000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7
Arg [16] : 0000000000000000000000009d5aa76bea985571d13203b839023bd619d244ed
Arg [17] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [19] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [23] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 00000000000000000000000000000000000000000000000000000061f313f880
Arg [27] : 000000000000000000000000000000000000000000295be96e64066972000000
Arg [28] : 000000000000000000000000000000000000000000000000006a94d74f430000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
37099:21063:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43316:172;;;;;;;;;;;;;:::i;:::-;;37470:33;;;;;;;;;;;;;;;;;;;18699:25:1;;;18687:2;18672:18;37470:33:0;;;;;;;;6516:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;37651:34::-;;;;;;;;;;;;;;;;7438:169;;;;;;;;;;-1:-1:-1;7438:169:0;;;;;:::i;:::-;;:::i;:::-;;;9574:14:1;;9567:22;9549:41;;9537:2;9522:18;7438:169:0;9409:187:1;42961:154:0;;;;;;;;;;-1:-1:-1;42961:154:0;;;;;:::i;:::-;;:::i;37178:41::-;;;;;;;;;;-1:-1:-1;37178:41:0;;;;-1:-1:-1;;;;;37178:41:0;;;;;;-1:-1:-1;;;;;5836:32:1;;;5818:51;;5806:2;5791:18;37178:41:0;5672:203:1;6839:108:0;;;;;;;;;;-1:-1:-1;6927:12:0;;6839:108;;37346:40;;;;;;;;;;-1:-1:-1;37346:40:0;;;;-1:-1:-1;;;;;37346:40:0;;;38029:46;;;;;;;;;;-1:-1:-1;38029:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7615:355;;;;;;;;;;-1:-1:-1;7615:355:0;;;;;:::i;:::-;;:::i;37768:26::-;;;;;;;;;;;;;;;;37292:47;;;;;;;;;;-1:-1:-1;37292:47:0;;;;-1:-1:-1;;;;;37292:47:0;;;46094:141;;;;;;;;;;;;;:::i;6736:93::-;;;;;;;;;;-1:-1:-1;6736:93:0;;6819:2;20511:36:1;;20499:2;20484:18;6736:93:0;20369:184:1;46682:129:0;;;;;;;;;;-1:-1:-1;46682:129:0;;;;;:::i;:::-;;:::i;38269:27::-;;;;;;;;;;-1:-1:-1;38269:27:0;;;;;;;;7978:218;;;;;;;;;;-1:-1:-1;7978:218:0;;;;;:::i;:::-;;:::i;38178:20::-;;;;;;;;;;;;;;;;37839:38;;;;;;;;;;-1:-1:-1;37839:38:0;;;;-1:-1:-1;;;;;37839:38:0;;;38205:23;;;;;;;;;;;;;;;;38131:40;;;;;;;;;;-1:-1:-1;38131:40:0;;;;;;;;47919:103;;;;;;;;;;;;;:::i;46243:125::-;;;;;;;;;;-1:-1:-1;46243:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;46332:28:0;46308:4;46332:28;;;:19;:28;;;;;;;;;46243:125;38373:30;;;;;;;;;;;;;;;;38336;;;;;;;;;;;;;;;;1090:90;;;;;;;;;;-1:-1:-1;1157:15:0;1090:90;;37616:26;;;;;;;;;;;;;;;;44650:121;;;;;;;;;;-1:-1:-1;44650:121:0;;;;;:::i;:::-;;:::i;48851:90::-;;;;;;;;;;-1:-1:-1;48851:90:0;;;;;:::i;:::-;;:::i;48167:141::-;;;;;;;;;;;;;:::i;46535:139::-;;;;;;;;;;-1:-1:-1;46535:139:0;;;;;:::i;:::-;;:::i;47640:271::-;;;;;;;;;;-1:-1:-1;47640:271:0;;;;;:::i;:::-;;:::i;42676:277::-;;;;;;;;;;-1:-1:-1;42676:277:0;;;;;:::i;:::-;;:::i;770:103::-;;;;;;;;;;;;;:::i;37547:30::-;;;;;;;;;;;;;;;;37952:70;;;;;;;;;;-1:-1:-1;37952:70:0;;;;-1:-1:-1;;;;;37952:70:0;;;45446:392;;;;;;;;;;-1:-1:-1;45446:392:0;;;;;:::i;:::-;;:::i;547:87::-;;;;;;;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;620:6:0;547:87;;37584:25;;;;;;;;;;;;;;;;37730:31;;;;;;;;;;;;;;;;6624:104;;;;;;;;;;;;;:::i;44420:222::-;;;;;;;;;;-1:-1:-1;44420:222:0;;;;;:::i;:::-;;:::i;44779:252::-;;;;;;;;;;-1:-1:-1;44779:252:0;;;;;:::i;:::-;;:::i;38082:40::-;;;;;;;;;;;;;;;;37801:27;;;;;;;;;;;;;;;;45978:108;;;;;;;;;;;;;:::i;8204:269::-;;;;;;;;;;-1:-1:-1;8204:269:0;;;;;:::i;:::-;;:::i;46376:151::-;;;;;;;;;;-1:-1:-1;46376:151:0;;;;;:::i;:::-;;:::i;7094:175::-;;;;;;;;;;-1:-1:-1;7094:175:0;;;;;:::i;:::-;;:::i;46978:318::-;;;;;;;;;;-1:-1:-1;46978:318:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;7982:32:1;;;7964:51;;8046:2;8031:18;;8024:34;;;;8074:18;;;8067:34;;;;8132:2;8117:18;;8110:34;;;;8175:3;8160:19;;8153:35;8002:3;8204:19;;8197:35;8263:3;8248:19;;8241:35;8307:3;8292:19;;8285:35;7951:3;7936:19;46978:318:0;7625:701:1;48733:110:0;;;;;;;;;;-1:-1:-1;48733:110:0;;;;;:::i;:::-;;:::i;38677:58::-;;;;;;;;;;-1:-1:-1;38677:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;43123:185;;;;;;;;;;;;;:::i;43587:256::-;;;;;;;;;;-1:-1:-1;43587:256:0;;;;;:::i;:::-;;:::i;43851:304::-;;;;;;;;;;-1:-1:-1;43851:304:0;;;;;:::i;:::-;;:::i;48608:117::-;;;;;;;;;;-1:-1:-1;48608:117:0;;;;;:::i;:::-;;:::i;46819:151::-;;;;;;;;;;-1:-1:-1;46819:151:0;;;;;:::i;:::-;;:::i;44328:86::-;;;;;;;;;;-1:-1:-1;44328:86:0;;;;;:::i;:::-;;:::i;37226:27::-;;;;;;;;;;-1:-1:-1;37226:27:0;;;;-1:-1:-1;;;;;37226:27:0;;;38303:26;;;;;;;;;;-1:-1:-1;38303:26:0;;;;;;;;;;;48316:284;;;;;;;;;;;;;:::i;7279:151::-;;;;;;;;;;-1:-1:-1;7279:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7395:18:0;;;7368:7;7395:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7279:151;37428:33;;;;;;;;;;;;;;;;38235:27;;;;;;;;;;;;;;;;48951:461;;;;;;;;;;-1:-1:-1;48951:461:0;;;;;:::i;:::-;;:::i;44163:157::-;;;;;;;;;;-1:-1:-1;44163:157:0;;;;;:::i;:::-;;:::i;48030:129::-;;;;;;;;;;;;;:::i;45846:124::-;;;;;;;;;;-1:-1:-1;45846:124:0;;;;;:::i;:::-;;:::i;43496:83::-;;;;;;;;;;-1:-1:-1;43496:83:0;;;;;:::i;:::-;;:::i;49420:464::-;;;;;;;;;;-1:-1:-1;49420:464:0;;;;;:::i;:::-;;:::i;37510:30::-;;;;;;;;;;;;;;;;47304:328;;;;;;;;;;-1:-1:-1;47304:328:0;;;;;:::i;:::-;;:::i;881:201::-;;;;;;;;;;-1:-1:-1;881:201:0;;;;;:::i;:::-;;:::i;37692:31::-;;;;;;;;;;;;;;;;37393:26;;;;;;;;;;-1:-1:-1;37393:26:0;;;;-1:-1:-1;;;;;37393:26:0;;;43316:172;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;;;;;;;;;43372:15:::1;::::0;:20;43364:48:::1;;;::::0;-1:-1:-1;;;43364:48:0;;15803:2:1;43364:48:0::1;::::0;::::1;15785:21:1::0;15842:2;15822:18;;;15815:30;-1:-1:-1;;;15861:18:1;;;15854:45;15916:18;;43364:48:0::1;15601:339:1::0;43364:48:0::1;43441:12;43423:15;:30:::0;43464:8:::1;:16:::0;;-1:-1:-1;;43464:16:0::1;::::0;;43316:172::o;6516:100::-;6570:13;6603:5;6596:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6516:100;:::o;7438:169::-;7521:4;7538:39;173:10;7561:7;7570:6;7538:8;:39::i;:::-;-1:-1:-1;7595:4:0;7438:169;;;;;:::o;42961:154::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;43049:15:::1;::::0;:58:::1;::::0;-1:-1:-1;;;43049:58:0;;::::1;::::0;::::1;18699:25:1::0;;;-1:-1:-1;;;;;43049:15:0;;::::1;::::0;:53:::1;::::0;18672:18:1;;43049:58:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;42961:154:::0;:::o;7615:355::-;7755:4;7772:36;7782:6;7790:9;7801:6;7772:9;:36::i;:::-;7819:121;7828:6;173:10;7850:89;7888:6;7850:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7850:19:0;;;;;;:11;:19;;;;;;;;173:10;7850:33;;;;;;;;;;:37;:89::i;:::-;7819:8;:121::i;:::-;-1:-1:-1;7958:4:0;7615:355;;;;;:::o;46094:141::-;46184:15;;:43;;;-1:-1:-1;;;46184:43:0;;;;46157:7;;-1:-1:-1;;;;;46184:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46177:50;;46094:141;:::o;46682:129::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;46758:15:::1;::::0;:45:::1;::::0;-1:-1:-1;;;46758:45:0;;-1:-1:-1;;;;;5836:32:1;;;46758:45:0::1;::::0;::::1;5818:51:1::0;46758:15:0;;::::1;::::0;:36:::1;::::0;5791:18:1;;46758:45:0::1;5672:203:1::0;7978:218:0;173:10;8066:4;8115:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8115:34:0;;;;;;;;;;8066:4;;8083:83;;8106:7;;8115:50;;8154:10;8115:38;:50::i;47919:103::-;47956:15;;:58;;-1:-1:-1;;;47956:58:0;;47995:10;47956:58;;;6064:51:1;47956:15:0;6131:18:1;;;6124:50;-1:-1:-1;;;;;47956:15:0;;;;:30;;6037:18:1;;47956:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47919:103::o;44650:121::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;44731:23:::1;:32:::0;;-1:-1:-1;;;;;;44731:32:0::1;-1:-1:-1::0;;;;;44731:32:0;;;::::1;::::0;;;::::1;::::0;;44650:121::o;48851:90::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;48916:10:::1;:17:::0;;-1:-1:-1;;;;;;48916:17:0::1;-1:-1:-1::0;;;;;48916:17:0;;;::::1;::::0;;;::::1;::::0;;48851:90::o;48167:141::-;48259:15;;:41;;;-1:-1:-1;;;48259:41:0;;;;48232:7;;-1:-1:-1;;;;;48259:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;46535:139;46632:15;;:34;;-1:-1:-1;;;46632:34:0;;-1:-1:-1;;;;;5836:32:1;;;46632:34:0;;;5818:51:1;46605:7:0;;46632:15;;:25;;5791:18:1;;46632:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;47640:271::-;47772:15;;:28;;-1:-1:-1;;;;;;47772:28:0;;;;;18699:25:1;;;47706:18:0;;;;;;-1:-1:-1;;;;;47772:15:0;;:23;;18672:18:1;;47772:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47816:87;;;20204:25:1;;;20260:2;20245:18;;20238:34;;;20288:18;;;20281:34;;;20346:2;20331:18;;20324:34;;;47705:95:0;;-1:-1:-1;47705:95:0;;-1:-1:-1;47705:95:0;-1:-1:-1;47893:9:0;;47881:5;;47816:87;;20191:3:1;20176:19;47816:87:0;;;;;;;47694:217;;;47640:271;:::o;42676:277::-;42777:11;;42742:7;;-1:-1:-1;;;;;42766:22:0;;;42777:11;;42766:22;:51;;;;-1:-1:-1;42806:11:0;;-1:-1:-1;;;;;42806:11:0;42792:10;:25;42766:51;:63;;;;-1:-1:-1;42821:8:0;;;;42766:63;42762:142;;;42866:11;;-1:-1:-1;;;;;42866:11:0;42881:1;7058:18;;;;;;;;;;;42850:32;42842:50;;;;-1:-1:-1;;;42842:50:0;;18422:2:1;42842:50:0;;;18404:21:1;18461:1;18441:18;;;18434:29;-1:-1:-1;;;18479:18:1;;;18472:35;18524:18;;42842:50:0;18220:328:1;42842:50:0;-1:-1:-1;;;;;7058:18:0;;7031:7;7058:18;;;;;;;;;;;42921:24;6957:127;770:103;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;835:30:::1;862:1;835:18;:30::i;:::-;770:103::o:0;45446:392::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;45544:6:::1;45532:8;:18;;:40;;;;;45566:6;45554:8;:18;;45532:40;45524:105;;;::::0;-1:-1:-1;;;45524:105:0;;12680:2:1;45524:105:0::1;::::0;::::1;12662:21:1::0;12719:2;12699:18;;;12692:30;12758:34;12738:18;;;12731:62;-1:-1:-1;;;12809:18:1;;;12802:50;12869:19;;45524:105:0::1;12478:416:1::0;45524:105:0::1;45660:16;;45648:8;:28;;45640:85;;;::::0;-1:-1:-1;;;45640:85:0;;14336:2:1;45640:85:0::1;::::0;::::1;14318:21:1::0;14375:2;14355:18;;;14348:30;14414:34;14394:18;;;14387:62;-1:-1:-1;;;14465:18:1;;;14458:42;14517:19;;45640:85:0::1;14134:408:1::0;45640:85:0::1;45775:16;::::0;45741:51:::1;::::0;45765:8;;45741:51:::1;::::0;;;::::1;45803:16;:27:::0;45446:392::o;6624:104::-;6680:13;6713:7;6706:14;;;;;:::i;44420:222::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;44529:9:::1;44524:111;44544:19:::0;;::::1;44524:111;;;44615:8;44585:14;:27;44600:8;;44609:1;44600:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44585:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;44585:27:0;:38;;-1:-1:-1;;44585:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44565:3;::::1;::::0;::::1;:::i;:::-;;;;44524:111;;;;44420:222:::0;;;:::o;44779:252::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;44886:11:::1;::::0;-1:-1:-1;;;;;44878:19:0;;::::1;44886:11:::0;::::1;44878:19;;44870:101;;;::::0;-1:-1:-1;;;44870:101:0;;11114:2:1;44870:101:0::1;::::0;::::1;11096:21:1::0;11153:2;11133:18;;;11126:30;11192:34;11172:18;;;11165:62;11263:34;11243:18;;;11236:62;-1:-1:-1;;;11314:19:1;;;11307:36;11360:19;;44870:101:0::1;10912:473:1::0;44870:101:0::1;44982:41;45011:4;45017:5;44982:28;:41::i;:::-;44779:252:::0;;:::o;45978:108::-;46051:15;;:27;;;-1:-1:-1;;;46051:27:0;;;;46024:7;;-1:-1:-1;;;;;46051:15:0;;:25;;:27;;;;;;;;;;;;;;:15;:27;;;;;;;;;;8204:269;8297:4;8314:129;173:10;8337:7;8346:96;8385:15;8346:96;;;;;;;;;;;;;;;;;173:10;8346:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8346:34:0;;;;;;;;;;;;:38;:96::i;46376:151::-;46472:15;;:47;;-1:-1:-1;;;46472:47:0;;-1:-1:-1;;;;;5836:32:1;;;46472:47:0;;;5818:51:1;46445:7:0;;46472:15;;:38;;5791:18:1;;46472:47:0;5672:203:1;7094:175:0;7180:4;7197:42;173:10;7221:9;7232:6;7197:9;:42::i;46978:318::-;47253:15;;:35;;-1:-1:-1;;;47253:35:0;;-1:-1:-1;;;;;5836:32:1;;;47253:35:0;;;5818:51:1;47074:7:0;;;;;;;;;;;;;;;;47253:15;;;:26;;5791:18:1;;47253:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47246:42;;;;;;;;;;;;;;;;46978:318;;;;;;;;;:::o;48733:110::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;48808:18:::1;:27:::0;48733:110::o;43123:185::-;43251:15;;:49;;;-1:-1:-1;;;43251:49:0;;;;43219:7;;-1:-1:-1;;;;;43251:15:0;;:47;;:49;;;;;;;;;;;;;;:15;:49;;;;;;;;;;43587:256;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;43675:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;43672:164;;-1:-1:-1::0;;;;;43731:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;43731:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43790:34;;9549:41:1;;;43790:34:0::1;::::0;9522:18:1;43790:34:0::1;;;;;;;43587:256:::0;;:::o;43851:304::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;43968:9:::1;43964:115;43983:19:::0;;::::1;43964:115;;;44059:8;44024:19;:32;44044:8;;44053:1;44044:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44024:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;44024:32:0;:43;;-1:-1:-1;;44024:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44004:3;::::1;::::0;::::1;:::i;:::-;;;;43964:115;;;;44096:51;44128:8;;44138;44096:51;;;;;;;;:::i;:::-;;;;;;;;43851:304:::0;;;:::o;48608:117::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;48685:21:::1;:32:::0;;-1:-1:-1;;48685:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;48608:117::o;46819:151::-;46914:15;;:48;;-1:-1:-1;;;46914:48:0;;-1:-1:-1;;;;;5836:32:1;;;46914:48:0;;;5818:51:1;46890:4:0;;46914:15;;:39;;5791:18:1;;46914:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;44328:86::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;44391:4:::1;:15:::0;44328:86::o;48316:284::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;48366:28:::1;48397:24;48415:4;48397:9;:24::i;:::-;48366:55;;48463:1;48440:20;:24;48432:56;;;::::0;-1:-1:-1;;;48432:56:0;;15456:2:1;48432:56:0::1;::::0;::::1;15438:21:1::0;15495:2;15475:18;;;15468:30;-1:-1:-1;;;15514:18:1;;;15507:48;15572:18;;48432:56:0::1;15254:342:1::0;48432:56:0::1;48499:8;:15:::0;;-1:-1:-1;;;;48499:15:0::1;-1:-1:-1::0;;;48499:15:0::1;::::0;;48525:40:::1;48544:20:::0;48525:18:::1;:40::i;:::-;-1:-1:-1::0;48576:8:0::1;:16:::0;;-1:-1:-1;;;;48576:16:0::1;::::0;;48316:284::o;48951:461::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;49148:4:::1;49088:56;49136:7:::0;49088:43:::1;49118:12:::0;49088:43;:10;49103:9;49088:14:::1;:25::i;:::-;:29:::0;::::1;:43::i;:56::-;:64;;49080:102;;;::::0;-1:-1:-1;;;49080:102:0;;12326:2:1;49080:102:0::1;::::0;::::1;12308:21:1::0;12365:2;12345:18;;;12338:30;12404:27;12384:18;;;12377:55;12449:18;;49080:102:0::1;12124:349:1::0;49080:102:0::1;49193:18;:31:::0;;;49235:15:::1;:27:::0;;;49273:15:::1;:30:::0;;;49328:43:::1;49291:12:::0;49328:25:::1;49214:10:::0;49253:9;49328:14:::1;:25::i;:43::-;49314:11;:57:::0;49382:10:::1;:20:::0;-1:-1:-1;;;48951:461:0:o;44163:157::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;44254:1:::1;44242:8;:13;;44234:44;;;::::0;-1:-1:-1;;;44234:44:0;;17316:2:1;44234:44:0::1;::::0;::::1;17298:21:1::0;17355:2;17335:18;;;17328:30;-1:-1:-1;;;17374:18:1;;;17367:48;17432:18;;44234:44:0::1;17114:342:1::0;44234:44:0::1;44289:12;:23:::0;44163:157::o;48030:129::-;48112:15;;:39;;;-1:-1:-1;;;48112:39:0;;;;48085:7;;-1:-1:-1;;;;;48112:15:0;;:37;;:39;;;;;;;;;;;;;;:15;:39;;;;;;;;;;45846:124;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;45920:15:::1;::::0;:42:::1;::::0;-1:-1:-1;;;45920:42:0;;::::1;::::0;::::1;18699:25:1::0;;;-1:-1:-1;;;;;45920:15:0;;::::1;::::0;:31:::1;::::0;18672:18:1;;45920:42:0::1;18553:177:1::0;43496:83:0;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;43559:8:::1;:12:::0;;-1:-1:-1;;43559:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43496:83::o;49420:464::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;49617:4:::1;49557:56;49605:7:::0;49557:43:::1;49587:12:::0;49557:43;:10;49572:9;49557:14:::1;:25::i;:56::-;:64;;49549:102;;;::::0;-1:-1:-1;;;49549:102:0;;18068:2:1;49549:102:0::1;::::0;::::1;18050:21:1::0;18107:2;18087:18;;;18080:30;18146:27;18126:18;;;18119:55;18191:18;;49549:102:0::1;17866:349:1::0;49549:102:0::1;49662:19;:32:::0;;;49705:16:::1;:28:::0;;;49744:16:::1;:31:::0;;;49801:43:::1;49763:12:::0;49801:25:::1;49684:10:::0;49724:9;49801:14:::1;:25::i;:43::-;49786:12;:58:::0;49855:11:::1;:21:::0;-1:-1:-1;;;49420:464:0:o;47304:328::-;47584:15;;:40;;-1:-1:-1;;;47584:40:0;;;;;18699:25:1;;;47405:7:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;47584:15:0;;;;:33;;18672:18:1;;47584:40:0;18553:177:1;881:201:0;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;970:22:0;::::1;962:73;;;::::0;-1:-1:-1;;;962:73:0;;13101:2:1;962:73:0::1;::::0;::::1;13083:21:1::0;13140:2;13120:18;;;13113:30;13179:34;13159:18;;;13152:62;-1:-1:-1;;;13230:18:1;;;13223:36;13276:19;;962:73:0::1;12899:402:1::0;962:73:0::1;1046:28;1065:8;1046:18;:28::i;2364:181::-:0;2422:7;;2454:5;2458:1;2454;:5;:::i;:::-;2442:17;;2483:1;2478;:6;;2470:46;;;;-1:-1:-1;;;2470:46:0;;14749:2:1;2470:46:0;;;14731:21:1;14788:2;14768:18;;;14761:30;14827:29;14807:18;;;14800:57;14874:18;;2470:46:0;14547:351:1;2470:46:0;2536:1;2364:181;-1:-1:-1;;;2364:181:0:o;2897:471::-;2955:7;3200:6;3196:47;;-1:-1:-1;3230:1:0;3223:8;;3196:47;3255:9;3267:5;3271:1;3267;:5;:::i;:::-;3255:17;-1:-1:-1;3300:1:0;3291:5;3295:1;3255:17;3291:5;:::i;:::-;:10;3283:56;;;;-1:-1:-1;;;3283:56:0;;16147:2:1;3283:56:0;;;16129:21:1;16186:2;16166:18;;;16159:30;16225:34;16205:18;;;16198:62;-1:-1:-1;;;16276:18:1;;;16269:31;16317:19;;3283:56:0;15945:397:1;3376:132:0;3434:7;3461:39;3465:1;3468;3461:39;;;;;;;;;;;;;;;;;:3;:39::i;13332:524::-;13389:16;13459:4;13453:11;-1:-1:-1;;;13485:3:0;13478:79;13604:14;13598:4;13594:25;13587:4;13582:3;13578:14;13571:49;-1:-1:-1;;;13650:4:0;13645:3;13641:14;13634:90;13765:4;13760:3;13757:1;13750:20;13738:32;-1:-1:-1;;;;;;;13799:22:0;;13791:57;;;;-1:-1:-1;;;13791:57:0;;15105:2:1;13791:57:0;;;15087:21:1;15144:2;15124:18;;;15117:30;-1:-1:-1;;;15163:18:1;;;15156:52;15225:18;;13791:57:0;14903:346:1;13791:57:0;13332:524;;;:::o;9874:380::-;-1:-1:-1;;;;;10010:19:0;;10002:68;;;;-1:-1:-1;;;10002:68:0;;17663:2:1;10002:68:0;;;17645:21:1;17702:2;17682:18;;;17675:30;17741:34;17721:18;;;17714:62;-1:-1:-1;;;17792:18:1;;;17785:34;17836:19;;10002:68:0;17461:400:1;10002:68:0;-1:-1:-1;;;;;10089:21:0;;10081:68;;;;-1:-1:-1;;;10081:68:0;;13508:2:1;10081:68:0;;;13490:21:1;13547:2;13527:18;;;13520:30;13586:34;13566:18;;;13559:62;-1:-1:-1;;;13637:18:1;;;13630:32;13679:19;;10081:68:0;13306:398:1;10081:68:0;-1:-1:-1;;;;;10162:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10214:32;;18699:25:1;;;10214:32:0;;18672:18:1;10214:32:0;;;;;;;;9874:380;;;:::o;49892:3614::-;-1:-1:-1;;;;;50024:18:0;;50016:68;;;;-1:-1:-1;;;50016:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50103:16:0;;50095:64;;;;-1:-1:-1;;;50095:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;50179:20:0;;;;;;:14;:20;;;;;;;;50178:21;50170:36;;;;-1:-1:-1;;;50170:36:0;;11996:2:1;50170:36:0;;;11978:21:1;12035:1;12015:18;;;12008:29;-1:-1:-1;;;12053:18:1;;;12046:32;12095:18;;50170:36:0;11794:325:1;50170:36:0;50220:11;50217:92;;50248:28;50264:4;50270:2;50274:1;50248:15;:28::i;:::-;49892:3614;;;:::o;50217:92::-;-1:-1:-1;;;;;50325:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;50360:29:0;;;;;;:25;:29;;;;;;;;50325:64;50321:291;;;-1:-1:-1;;;;;50411:25:0;;;;;;:19;:25;;;;;;;;50410:26;:54;;;;-1:-1:-1;;;;;;50441:23:0;;;;;;:19;:23;;;;;;;;50440:24;50410:54;50406:195;;;50489:14;;;;;;;:38;;;;-1:-1:-1;50512:15:0;;50507:20;50489:38;50485:101;;;50552:14;;;;50633:11;;-1:-1:-1;;;;;50627:17:0;;;50633:11;;50627:17;:57;;;;-1:-1:-1;50666:11:0;;50648:31;;-1:-1:-1;;;;;50666:11:0;50648:9;:31::i;:::-;:36;50627:57;50624:108;;;50708:12;50700:5;:20;50624:108;-1:-1:-1;;;;;50746:25:0;;;;;;:19;:25;;;;;;;;50745:26;:54;;;;-1:-1:-1;;;;;;50776:23:0;;;;;;:19;:23;;;;;;;;50775:24;50745:54;50742:225;;;50826:11;;-1:-1:-1;;;;;50818:19:0;;;50826:11;;50818:19;:50;;;;;50864:4;;50856:5;;:12;;;;:::i;:::-;50841;:27;50818:50;50815:141;;;50917:14;;50895:45;;50911:4;;-1:-1:-1;;;;;50917:14:0;50933:6;50895:15;:45::i;50815:141::-;50989:28;51020:24;51038:4;51020:9;:24::i;:::-;51094:18;;50989:55;;-1:-1:-1;51070:42:0;;;;;;;51129:33;;-1:-1:-1;51154:8:0;;-1:-1:-1;;;51154:8:0;;;;51153:9;51129:33;:82;;;;-1:-1:-1;;;;;;51180:31:0;;;;;;:25;:31;;;;;;;;51179:32;51129:82;:125;;;;-1:-1:-1;;;;;;51229:25:0;;;;;;:19;:25;;;;;;;;51228:26;51129:125;:166;;;;-1:-1:-1;;;;;;51272:23:0;;;;;;:19;:23;;;;;;;;51271:24;51129:166;:204;;;;-1:-1:-1;51312:21:0;;;;51129:204;:254;;;;;51382:1;51366:12;;51352:11;;:26;;;;:::i;:::-;51351:32;51129:254;51125:398;;;51410:8;:15;;-1:-1:-1;;;;51410:15:0;-1:-1:-1;;;51410:15:0;;;51440:40;51459:20;51440:18;:40::i;:::-;51495:8;:16;;-1:-1:-1;;;;51495:16:0;;;51125:398;51553:8;;-1:-1:-1;;;;;51662:25:0;;51537:12;51662:25;;;:19;:25;;;;;;51553:8;-1:-1:-1;;;51553:8:0;;;;;51552:9;;51662:25;;:52;;-1:-1:-1;;;;;;51691:23:0;;;;;;:19;:23;;;;;;;;51662:52;51659:99;;;-1:-1:-1;51741:5:0;51659:99;51773:7;51770:1148;;;-1:-1:-1;;;;;51862:31:0;;51797:12;51862:31;;;:25;:31;;;;;;51797:12;;51862:31;;51859:170;;;51920:34;51948:5;51920:23;51931:11;;51920:6;:10;;:23;;;;:::i;:::-;:27;;:34::i;:::-;51913:41;;51980:33;52007:5;51980:22;51991:10;;51980:6;:10;;:22;;;;:::i;:33::-;51973:40;;51859:170;-1:-1:-1;;;;;52046:29:0;;;;;;:25;:29;;;;;;;;52043:170;;;52102:35;52131:5;52102:24;52113:12;;52102:6;:10;;:24;;;;:::i;:35::-;52095:42;;52163:34;52191:5;52163:23;52174:11;;52163:6;:10;;:23;;;;:::i;:34::-;52156:41;;52043:170;-1:-1:-1;;;;;52254:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;52289:29:0;;;;;;:25;:29;;;;;;;;52254:64;52251:483;;;52342:12;;:16;52338:381;;52382:10;;52415:236;52439:12;;52435:1;:16;52415:236;;;52524:44;;;;;;5540:19:1;;;5575:12;;;5568:28;;;52552:15:0;5612:12:1;;;5605:28;5649:12;;52524:44:0;;;;;;;;;;;;52514:55;;;;;;52506:64;;52485:87;;52599:28;52615:4;52621:2;52625:1;52599:15;:28::i;:::-;52453:3;;;;:::i;:::-;;;;52415:236;;;-1:-1:-1;52683:12:0;;:16;;52698:1;52683:16;:::i;:::-;52673:26;;;;:::i;:::-;;;52359:360;52338:381;52759:21;52770:9;52775:4;52770;:9;:::i;:::-;52759:6;;:10;:21::i;:::-;52750:30;-1:-1:-1;52798:8:0;;52795:52;;52830:10;;52808:39;;52824:4;;-1:-1:-1;;;;;52830:10:0;52842:4;52808:15;:39::i;:::-;52862:42;52878:4;52892;52899;52862:15;:42::i;:::-;51782:1136;;51770:1148;52930:33;52946:4;52952:2;52956:6;52930:15;:33::i;:::-;52980:15;;-1:-1:-1;;;;;52980:15:0;:26;53015:4;53022:15;53015:4;53022:9;:15::i;:::-;52980:58;;-1:-1:-1;;;;;;52980:58:0;;;;;;;-1:-1:-1;;;;;6393:32:1;;;52980:58:0;;;6375:51:1;6442:18;;;6435:34;6348:18;;52980:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52976:74;53064:15;;-1:-1:-1;;;;;53064:15:0;:26;53099:2;53104:13;53099:2;53104:9;:13::i;:::-;53064:54;;-1:-1:-1;;;;;;53064:54:0;;;;;;;-1:-1:-1;;;;;6393:32:1;;;53064:54:0;;;6375:51:1;6442:18;;;6435:34;6348:18;;53064:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53060:70;53146:8;;-1:-1:-1;;;53146:8:0;;;;53142:357;;53185:16;;53222:15;;:28;;-1:-1:-1;;;;;;53222:28:0;;;;;18699:25:1;;;-1:-1:-1;;;;;53222:15:0;;;;:23;;18672:18:1;;53222:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;53222:28:0;;;;;;;;-1:-1:-1;;53222:28:0;;;;;;;;;;;;:::i;:::-;;;53218:270;;;;;53348:86;;;20204:25:1;;;20260:2;20245:18;;20238:34;;;20288:18;;;20281:34;;;20346:2;20331:18;;20324:34;;;53424:9:0;;53413:4;;53348:86;;20191:3:1;20176:19;53348:86:0;;;;;;;53251:199;;;53218:270;53156:343;53142:357;50005:3501;;;49892:3614;;;:::o;2697:192::-;2783:7;2819:12;2811:6;;;;2803:29;;;;-1:-1:-1;;;2803:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2843:9:0;2855:5;2859:1;2855;:5;:::i;:::-;2843:17;2697:192;-1:-1:-1;;;;;2697:192:0:o;1188:191::-;1281:6;;;-1:-1:-1;;;;;1298:17:0;;;-1:-1:-1;;;;;;1298:17:0;;;;;;;1331:40;;1281:6;;;1298:17;1281:6;;1331:40;;1262:16;;1331:40;1251:128;1188:191;:::o;45039:397::-;-1:-1:-1;;;;;45130:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;45122:109;;;;-1:-1:-1;;;45122:109:0;;13911:2:1;45122:109:0;;;13893:21:1;13950:2;13930:18;;;13923:30;13989:34;13969:18;;;13962:62;14060:26;14040:18;;;14033:54;14104:19;;45122:109:0;13709:420:1;45122:109:0;-1:-1:-1;;;;;45242:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;45242:39:0;;;;;;;;;;;;45294:79;;45319:15;;:42;;-1:-1:-1;;;45319:42:0;;-1:-1:-1;;;;;5836:32:1;;;45319:42:0;;;5818:51:1;45319:15:0;;;;:36;;5791:18:1;;45319:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45294:79;45388:40;;;;;;-1:-1:-1;;;;;45388:40:0;;;;;;;;45039:397;;:::o;53512:2749::-;53599:21;53748:1;53719:12;;53705:11;;:26;;;;:::i;:::-;53670:16;;53652:15;;:34;;;;:::i;:::-;53624:63;;:11;:63;:::i;:::-;53623:109;;;;:::i;:::-;:126;;;;:::i;:::-;53599:150;;53760:18;53876:1;53856:16;;53838:15;;:34;;;;:::i;:::-;53837:40;;;;:::i;:::-;53808:12;;53781:11;;:39;;;;:::i;:::-;:97;;;;:::i;:::-;53760:118;-1:-1:-1;53908:45:0;53925:27;53939:13;53925:11;:27;:::i;:::-;53908:16;:45::i;:::-;53993:8;;53986:41;;-1:-1:-1;;;53986:41:0;;54021:4;53986:41;;;5818:51:1;53964:19:0;;-1:-1:-1;;;;;53993:8:0;;53986:26;;5791:18:1;;53986:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53964:63;;54057:17;54145:10;54124:16;;54106:15;;:34;;;;:::i;:::-;54078:63;;:11;:63;:::i;:::-;54077:78;;;;:::i;:::-;54057:98;-1:-1:-1;54170:13:0;;54166:148;;54206:8;;54200:35;;-1:-1:-1;;;54200:35:0;;;;;18699:25:1;;;-1:-1:-1;;;;;54206:8:0;;;;54200:24;;18672:18:1;;54200:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;54258:23:0;;54250:52;;-1:-1:-1;;;;;54258:23:0;;;;-1:-1:-1;54250:52:0;;;;;-1:-1:-1;54292:9:0;;54258:23;54250:52;54258:23;54250:52;54292:9;54258:23;54250:52;;;;;;;;;;;;;;;;;;;;;54166:148;54344:17;;54340:243;;54378:193;54413:13;54546:10;54521:1;54479:16;;54461:15;;:34;;;;:::i;:::-;54446:50;;:11;:50;:::i;:::-;54445:77;;;;:::i;:::-;:111;;;;:::i;:::-;54378:16;:193::i;:::-;54616:23;54716:10;54692:19;;54671:18;;:40;;;;:::i;:::-;54643:69;;:11;:69;:::i;:::-;54642:84;;;;:::i;:::-;54616:110;-1:-1:-1;54741:19:0;;54737:1517;;54806:11;;54871:16;;;54885:1;54871:16;;;;;;;;-1:-1:-1;;;;;54806:11:0;;;;54777:19;;54871:16;;;;;;;;-1:-1:-1;;54934:8:0;;54902:21;;;;-1:-1:-1;;;;;;54934:8:0;;54902:21;;-1:-1:-1;54934:8:0;;54902:21;;;;:::i;:::-;-1:-1:-1;;;;;54902:41:0;;;:21;;;;;;;;;:41;54990:11;;54958:21;;54990:11;;;54958:18;;54990:11;;54958:21;;;;;;:::i;:::-;-1:-1:-1;;;;;54958:44:0;;;:21;;;;;;;;;:44;55038:15;;:311;;-1:-1:-1;;;55038:311:0;;:15;;;:91;;:311;;55156:15;;55038;;55226:18;;55279:4;;55311:15;;55038:311;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55017:457;;55396:62;;;;;;;55017:457;55519:37;;-1:-1:-1;;;55519:37:0;;55550:4;55519:37;;;5818:51:1;55488:28:0;;-1:-1:-1;;;;;55519:22:0;;;;;5791:18:1;;55519:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55488:68;;55589:15;;;;;;;;;-1:-1:-1;;;;;55589:15:0;-1:-1:-1;;;;;55589:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55585:658;;55696:23;;55644:138;;-1:-1:-1;;;55644:138:0;;-1:-1:-1;;;;;55696:23:0;;;55644:138;;;6375:51:1;6442:18;;;6435:34;;;55644:21:0;;;;;;6348:18:1;;55644:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;55585:658;;;55890:15;;55838:130;;-1:-1:-1;;;55838:130:0;;-1:-1:-1;;;;;55890:15:0;;;55838:130;;;6375:51:1;6442:18;;;6435:34;;;55823:12:0;;55838:21;;;;;6348:18:1;;55838:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55823:145;;55991:7;55987:241;;;56023:15;;:109;;-1:-1:-1;;;56023:109:0;;;;;18699:25:1;;;-1:-1:-1;;;;;56023:15:0;;;;:39;;18672:18:1;;56023:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;56160:48:0;;;19894:25:1;;;19950:2;19935:18;;19928:34;;;56160:48:0;;-1:-1:-1;19867:18:1;;-1:-1:-1;56160:48:0;;;;;;;55987:241;55804:439;55585:658;54762:1492;;;53569:2692;;;;;53512:2749;:::o;3516:278::-;3602:7;3637:12;3630:5;3622:28;;;;-1:-1:-1;;;3622:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3661:9:0;3673:5;3677:1;3673;:5;:::i;8481:573::-;-1:-1:-1;;;;;8621:20:0;;8613:70;;;;-1:-1:-1;;;8613:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8702:23:0;;8694:71;;;;-1:-1:-1;;;8694:71:0;;;;;;;:::i;:::-;8858;8880:6;8858:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8858:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;8838:17:0;;;:9;:17;;;;;;;;;;;:91;;;;8963:20;;;;;;;:32;;8988:6;8963:24;:32::i;:::-;-1:-1:-1;;;;;8940:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9011:35;18699:25:1;;;8940:20:0;;9011:35;;;;;;18672:18:1;9011:35:0;18553:177:1;2553:136:0;2611:7;2638:43;2642:1;2645;2638:43;;;;;;;;;;;;;;;;;:3;:43::i;56960:1012::-;57110:16;;;57124:1;57110:16;;;;;;;;57086:21;;57110:16;;;;;;;;;;-1:-1:-1;57110:16:0;57086:40;;57155:4;57137;57142:1;57137:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;57137:23:0;;;:7;;;;;;;;;;:23;;;;57181:15;;:22;;;-1:-1:-1;;;57181:22:0;;;;:15;;;;;:20;;:22;;;;;57137:7;;57181:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57171:4;57176:1;57171:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;57171:32:0;;;:7;;;;;;;;;:32;57248:15;;57216:62;;57233:4;;57248:15;57266:11;57216:8;:62::i;:::-;57334:15;;57531:16;;57334:263;;-1:-1:-1;;;57334:263:0;;-1:-1:-1;;;;;57334:15:0;;;;:69;;:263;;57422:11;;57334:15;;57500:4;;57531:16;;;57567:15;;57334:263;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;57317:393;;57636:62;;;;;;;57317:393;57751:8;;57793:16;;57744:77;;-1:-1:-1;;;57744:77:0;;-1:-1:-1;;;;;57793:16:0;;;57744:77;;;5818:51:1;57722:19:0;;57751:8;;;;;57744:26;;5791:18:1;;57744:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57722:99;-1:-1:-1;57836:16:0;;57832:131;;57876:8;;57907:16;;57869:82;;-1:-1:-1;;;57869:82:0;;-1:-1:-1;;;;;57907:16:0;;;57869:82;;;6720:34:1;57933:4:0;6770:18:1;;;6763:43;6822:18;;;6815:34;;;57876:8:0;;;57869:29;;6655:18:1;;57869:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;56269:683::-;56453:15;;56421:62;;56438:4;;-1:-1:-1;;;;;56453:15:0;56471:11;56421:8;:62::i;:::-;56541:15;;56596:8;;56808:14;;56541:330;;-1:-1:-1;;;56541:330:0;;-1:-1:-1;;;;;56596:8:0;;;56541:330;;;7257:34:1;56632:4:0;7307:18:1;;;7300:43;7359:18;;;7352:34;;;7402:18;;;7395:34;;;56541:15:0;7445:19:1;;;7438:35;;;7489:19;;;7482:35;56808:14:0;;;7533:19:1;;;7526:44;56841:15:0;7586:19:1;;;7579:35;56541:15:0;;;:28;;7191:19:1;;56541:330:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;56541:330:0;;;;;;;;-1:-1:-1;;56541:330:0;;;;;;;;;;;;:::i;:::-;;;56524:419;;56910:21;;;;;;;44779:252;;:::o;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;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;782:388::-;850:6;858;911:2;899:9;890:7;886:23;882:32;879:52;;;927:1;924;917:12;879:52;966:9;953:23;985:31;1010:5;985:31;:::i;:::-;1035:5;-1:-1:-1;1092:2:1;1077:18;;1064:32;1105:33;1064:32;1105:33;:::i;:::-;1157:7;1147:17;;;782:388;;;;;:::o;1175:456::-;1252:6;1260;1268;1321:2;1309:9;1300:7;1296:23;1292:32;1289:52;;;1337:1;1334;1327:12;1289:52;1376:9;1363:23;1395:31;1420:5;1395:31;:::i;:::-;1445:5;-1:-1:-1;1502:2:1;1487:18;;1474:32;1515:33;1474:32;1515:33;:::i;:::-;1175:456;;1567:7;;-1:-1:-1;;;1621:2:1;1606:18;;;;1593:32;;1175:456::o;1636:382::-;1701:6;1709;1762:2;1750:9;1741:7;1737:23;1733:32;1730:52;;;1778:1;1775;1768:12;1730:52;1817:9;1804:23;1836:31;1861:5;1836:31;:::i;:::-;1886:5;-1:-1:-1;1943:2:1;1928:18;;1915:32;1956:30;1915:32;1956:30;:::i;2023:681::-;2154:6;2162;2170;2178;2186;2194;2202;2210;2263:3;2251:9;2242:7;2238:23;2234:33;2231:53;;;2280:1;2277;2270:12;2231:53;2312:9;2306:16;2331:31;2356:5;2331:31;:::i;:::-;2381:5;2371:15;;;2426:2;2415:9;2411:18;2405:25;2395:35;;2470:2;2459:9;2455:18;2449:25;2439:35;;2514:2;2503:9;2499:18;2493:25;2483:35;;2558:3;2547:9;2543:19;2537:26;2527:36;;2603:3;2592:9;2588:19;2582:26;2572:36;;2648:3;2637:9;2633:19;2627:26;2617:36;;2693:3;2682:9;2678:19;2672:26;2662:36;;2023:681;;;;;;;;;;;:::o;2709:315::-;2777:6;2785;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;2893:9;2880:23;2912:31;2937:5;2912:31;:::i;:::-;2962:5;3014:2;2999:18;;;;2986:32;;-1:-1:-1;;;2709:315:1:o;3029:750::-;3121:6;3129;3137;3190:2;3178:9;3169:7;3165:23;3161:32;3158:52;;;3206:1;3203;3196:12;3158:52;3246:9;3233:23;3275:18;3316:2;3308:6;3305:14;3302:34;;;3332:1;3329;3322:12;3302:34;3370:6;3359:9;3355:22;3345:32;;3415:7;3408:4;3404:2;3400:13;3396:27;3386:55;;3437:1;3434;3427:12;3386:55;3477:2;3464:16;3503:2;3495:6;3492:14;3489:34;;;3519:1;3516;3509:12;3489:34;3574:7;3567:4;3557:6;3554:1;3550:14;3546:2;3542:23;3538:34;3535:47;3532:67;;;3595:1;3592;3585:12;3532:67;3626:4;3618:13;;;;-1:-1:-1;3650:6:1;-1:-1:-1;;3691:20:1;;3678:34;3721:28;3678:34;3721:28;:::i;:::-;3768:5;3758:15;;;3029:750;;;;;:::o;3784:241::-;3840:6;3893:2;3881:9;3872:7;3868:23;3864:32;3861:52;;;3909:1;3906;3899:12;3861:52;3948:9;3935:23;3967:28;3989:5;3967:28;:::i;4030:245::-;4097:6;4150:2;4138:9;4129:7;4125:23;4121:32;4118:52;;;4166:1;4163;4156:12;4118:52;4198:9;4192:16;4217:28;4239:5;4217:28;:::i;4280:180::-;4339:6;4392:2;4380:9;4371:7;4367:23;4363:32;4360:52;;;4408:1;4405;4398:12;4360:52;-1:-1:-1;4431:23:1;;4280:180;-1:-1:-1;4280:180:1:o;4465:184::-;4535:6;4588:2;4576:9;4567:7;4563:23;4559:32;4556:52;;;4604:1;4601;4594:12;4556:52;-1:-1:-1;4627:16:1;;4465:184;-1:-1:-1;4465:184:1:o;4654:306::-;4742:6;4750;4758;4811:2;4799:9;4790:7;4786:23;4782:32;4779:52;;;4827:1;4824;4817:12;4779:52;4856:9;4850:16;4840:26;;4906:2;4895:9;4891:18;4885:25;4875:35;;4950:2;4939:9;4935:18;4929:25;4919:35;;4654:306;;;;;:::o;4965:385::-;5051:6;5059;5067;5075;5128:3;5116:9;5107:7;5103:23;5099:33;5096:53;;;5145:1;5142;5135:12;5096:53;-1:-1:-1;;5168:23:1;;;5238:2;5223:18;;5210:32;;-1:-1:-1;5289:2:1;5274:18;;5261:32;;5340:2;5325:18;5312:32;;-1:-1:-1;4965:385:1;-1:-1:-1;4965:385:1:o;8610:794::-;8832:2;8844:21;;;8817:18;;8900:22;;;8784:4;8979:6;8953:2;8938:18;;8784:4;9013:304;9027:6;9024:1;9021:13;9013:304;;;9102:6;9089:20;9122:31;9147:5;9122:31;:::i;:::-;-1:-1:-1;;;;;9178:31:1;9166:44;;9233:4;9292:15;;;;9257:12;;;;9206:1;9042:9;9013:304;;;9017:3;9334;9326:11;;;;9389:6;9382:14;9375:22;9368:4;9357:9;9353:20;9346:52;8610:794;;;;;;:::o;10310:597::-;10422:4;10451:2;10480;10469:9;10462:21;10512:6;10506:13;10555:6;10550:2;10539:9;10535:18;10528:34;10580:1;10590:140;10604:6;10601:1;10598:13;10590:140;;;10699:14;;;10695:23;;10689:30;10665:17;;;10684:2;10661:26;10654:66;10619:10;;10590:140;;;10748:6;10745:1;10742:13;10739:91;;;10818:1;10813:2;10804:6;10793:9;10789:22;10785:31;10778:42;10739:91;-1:-1:-1;10891:2:1;10870:15;-1:-1:-1;;10866:29:1;10851:45;;;;10898:2;10847:54;;10310:597;-1:-1:-1;;;10310:597:1:o;11390:399::-;11592:2;11574:21;;;11631:2;11611:18;;;11604:30;11670:34;11665:2;11650:18;;11643:62;-1:-1:-1;;;11736:2:1;11721:18;;11714:33;11779:3;11764:19;;11390:399::o;16347:356::-;16549:2;16531:21;;;16568:18;;;16561:30;16627:34;16622:2;16607:18;;16600:62;16694:2;16679:18;;16347:356::o;16708:401::-;16910:2;16892:21;;;16949:2;16929:18;;;16922:30;16988:34;16983:2;16968:18;;16961:62;-1:-1:-1;;;17054:2:1;17039:18;;17032:35;17099:3;17084:19;;16708:401::o;18735:980::-;18997:4;19045:3;19034:9;19030:19;19076:6;19065:9;19058:25;19102:2;19140:6;19135:2;19124:9;19120:18;19113:34;19183:3;19178:2;19167:9;19163:18;19156:31;19207:6;19242;19236:13;19273:6;19265;19258:22;19311:3;19300:9;19296:19;19289:26;;19350:2;19342:6;19338:15;19324:29;;19371:1;19381:195;19395:6;19392:1;19389:13;19381:195;;;19460:13;;-1:-1:-1;;;;;19456:39:1;19444:52;;19551:15;;;;19516:12;;;;19492:1;19410:9;19381:195;;;-1:-1:-1;;;;;;;19632:32:1;;;;19627:2;19612:18;;19605:60;-1:-1:-1;;;19696:3:1;19681:19;19674:35;19593:3;18735:980;-1:-1:-1;;;18735:980:1:o;20558:128::-;20598:3;20629:1;20625:6;20622:1;20619:13;20616:39;;;20635:18;;:::i;:::-;-1:-1:-1;20671:9:1;;20558:128::o;20691:217::-;20731:1;20757;20747:132;;20801:10;20796:3;20792:20;20789:1;20782:31;20836:4;20833:1;20826:15;20864:4;20861:1;20854:15;20747:132;-1:-1:-1;20893:9:1;;20691:217::o;20913:168::-;20953:7;21019:1;21015;21011:6;21007:14;21004:1;21001:21;20996:1;20989:9;20982:17;20978:45;20975:71;;;21026:18;;:::i;:::-;-1:-1:-1;21066:9:1;;20913:168::o;21086:125::-;21126:4;21154:1;21151;21148:8;21145:34;;;21159:18;;:::i;:::-;-1:-1:-1;21196:9:1;;21086:125::o;21216:380::-;21295:1;21291:12;;;;21338;;;21359:61;;21413:4;21405:6;21401:17;21391:27;;21359:61;21466:2;21458:6;21455:14;21435:18;21432:38;21429:161;;;21512:10;21507:3;21503:20;21500:1;21493:31;21547:4;21544:1;21537:15;21575:4;21572:1;21565:15;21429:161;;21216:380;;;:::o;21601:135::-;21640:3;-1:-1:-1;;21661:17:1;;21658:43;;;21681:18;;:::i;:::-;-1:-1:-1;21728:1:1;21717:13;;21601:135::o;21741:127::-;21802:10;21797:3;21793:20;21790:1;21783:31;21833:4;21830:1;21823:15;21857:4;21854:1;21847:15;21873:127;21934:10;21929:3;21925:20;21922:1;21915:31;21965:4;21962:1;21955:15;21989:4;21986:1;21979:15;22137:131;-1:-1:-1;;;;;22212:31:1;;22202:42;;22192:70;;22258:1;22255;22248:12;22273:118;22359:5;22352:13;22345:21;22338:5;22335:32;22325:60;;22381:1;22378;22371:12
Swarm Source
ipfs://ec062e04972ddae1b2faae8b9e2675b51ff862e3ed70d2161f15ede848b6be1b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.