ERC-20
Overview
Max Total Supply
10,000,000,000 QUIP
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
79,757,510.713601243 QUIPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
quantContract
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-11-05 */ // SPDX-License-Identifier: MIT /** https://t.me/QuantumQuipChannel */ pragma solidity ^0.8.28; /** * Abstract contract to easily change things when deploying new projects. Saves me having to find it everywhere. */ abstract contract Project { address public marketingWallet = 0xe5B31DE648bb9A5dAC7589d1A7C59646f19FcbDc; address public devWallet = 0xe5B31DE648bb9A5dAC7589d1A7C59646f19FcbDc; string constant _name = "QuantumQuip"; string constant _symbol = "QUIP"; uint8 constant _decimals = 9; uint256 _totalSupply = 1 * 10**10 * 10**_decimals; uint256 public _maxTxAmount = (_totalSupply * 10) / 1000; // (_totalSupply * 10) / 1000 [this equals 1%] uint256 public _maxWalletToken = (_totalSupply * 10) / 1000; // uint256 public buyFee = 20; uint256 public buyTotalFee = buyFee; uint256 public swapLpFee = 20; uint256 public swapMarketing = 0; uint256 public swapTreasuryFee = 0; uint256 public swapTotalFee = swapMarketing + swapLpFee + swapTreasuryFee; uint256 public transFee = 0; uint256 public feeDenominator = 100; } /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } abstract contract Context { //function _msgSender() internal view virtual returns (address payable) { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function geUnlockTime() public view returns (uint256) { return _lockTime; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } 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); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } /** * MainContract */ contract quantContract is Project, IERC20, Ownable { using SafeMath for uint256; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) isMaxExempt; mapping (address => bool) isTimelockExempt; address public autoLiquidityReceiver; uint256 targetLiquidity = 20; uint256 targetLiquidityDenominator = 100; IUniswapV2Router02 public immutable contractRouter; address public immutable uniswapV2Pair; bool public tradingOpen = false; bool public buyCooldownEnabled = true; uint8 public cooldownTimerInterval = 10; mapping (address => uint) private cooldownTimer; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 30 / 10000; uint256 public swapAmount = _totalSupply * 30 / 10000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables contractRouter = _uniswapV2Router; _allowances[address(this)][address(contractRouter)] = type(uint256).max; isFeeExempt[msg.sender] = true; isTxLimitExempt[msg.sender] = true; isMaxExempt[msg.sender] = true; isTimelockExempt[msg.sender] = true; isTimelockExempt[DEAD] = true; isTimelockExempt[address(this)] = true; isFeeExempt[marketingWallet] = true; isMaxExempt[marketingWallet] = true; isTxLimitExempt[marketingWallet] = true; autoLiquidityReceiver = msg.sender; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner(); } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() { _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() { _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function setTxLimit(uint256 amount) external onlyOwner() { _maxTxAmount = amount; } // *** // Functions for the burning mechanism // *** /** * Burn an amount of tokens for the current wallet (if they have enough) */ function burnTokens(uint256 amount) external { // does this user have enough tokens to perform the burn if(_balances[msg.sender] > amount) { _basicTransfer(msg.sender, DEAD, amount); } } // *** // End functions for the burning mechanism // *** function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(sender != owner() && recipient != owner()){ require(tradingOpen,"Trading not open yet"); } bool inSell = (recipient == uniswapV2Pair); bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair); if (recipient != address(this) && recipient != address(DEAD) && recipient != uniswapV2Pair && recipient != marketingWallet && recipient != devWallet && recipient != autoLiquidityReceiver ){ uint256 heldTokens = balanceOf(recipient); if(!isMaxExempt[recipient]) { require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much."); } } if (sender == uniswapV2Pair && buyCooldownEnabled && !isTimelockExempt[recipient] ){ require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys"); cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval; } // Checks max transaction limit // but no point if the recipient is exempt // this check ensures that someone that is buying and is txnExempt then they are able to buy any amount if(!isTxLimitExempt[recipient]) { checkTxLimit(sender, amount); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = amount; // Do NOT take a fee if sender AND recipient are NOT the contract // i.e. you are doing a transfer if(inTransfer) { if(transFee > 0) { amountReceived = takeTransferFee(sender, amount); } } else { amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount; if(shouldSwapBack()){ swapBack(); } } _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } // *** // Handle Fees // *** function takeTransferFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeToTake = transFee; uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) { uint256 feeToTake = isSell ? swapTotalFee : buyTotalFee; uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } // *** // End Handle Fees // *** function shouldSwapBack() internal view returns (bool) { return msg.sender != uniswapV2Pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearStuckBalance(uint256 amountPercentage) external onlyOwner() { uint256 amountETH = address(this).balance; payable(marketingWallet).transfer(amountETH * amountPercentage / 100); } function clearStuckBalance_sender(uint256 amountPercentage) external onlyOwner() { uint256 amountETH = address(this).balance; payable(msg.sender).transfer(amountETH * amountPercentage / 100); } // switch Trading function tradingStatus(bool _status) public onlyOwner { tradingOpen = _status; } // enable cooldown between trades function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner { buyCooldownEnabled = _status; cooldownTimerInterval = _interval; } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee; uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2); uint256 amountToSwap = swapAmount.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = contractRouter.WETH(); uint256 balanceBefore = address(this).balance; contractRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee); uint256 amountETHTreasury = amountETH.mul(swapTreasuryFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}(""); (tmpSuccess,) = payable(devWallet).call{value: amountETHTreasury, gas: 30000}(""); // Supress warning msg tmpSuccess = false; if(amountToLiquify > 0){ contractRouter.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } // *** // Various exempt functions // *** function setIsFeeExempt(address holder, bool exempt) external onlyOwner() { isFeeExempt[holder] = exempt; } function setIsMaxExempt(address holder, bool exempt) external onlyOwner() { isMaxExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner() { isTxLimitExempt[holder] = exempt; } function setIsTimelockExempt(address holder, bool exempt) external onlyOwner() { isTimelockExempt[holder] = exempt; } // *** // End various exempt functions // *** // *** // Start fee things // *** function setTransFee(uint256 fee) external onlyOwner() { transFee = fee; } function setSwapFees(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _newSwapTreasuryFee, uint256 _feeDenominator) external onlyOwner() { swapLpFee = _newSwapLpFee; swapMarketing = _newSwapMarketingFee; swapTreasuryFee = _newSwapTreasuryFee; swapTotalFee = _newSwapLpFee.add(_newSwapMarketingFee).add(_newSwapTreasuryFee); feeDenominator = _feeDenominator; require(swapTotalFee < 90, "Fees cannot be that high"); } function setBuyFees(uint256 buyTax) external onlyOwner() { buyTotalFee = buyTax; } // *** // end fee stuff§2e sw. // *** function setTreasuryFeeReceiver(address _newWallet) external onlyOwner() { isFeeExempt[devWallet] = false; isFeeExempt[_newWallet] = true; devWallet = _newWallet; } function setMarketingWallet(address _newWallet) external onlyOwner() { isFeeExempt[marketingWallet] = false; isFeeExempt[_newWallet] = true; isMaxExempt[_newWallet] = true; marketingWallet = _newWallet; } function setFeeReceivers(address _autoLiquidityReceiver, address _newMarketingWallet, address _newdevWallet ) external onlyOwner() { isFeeExempt[devWallet] = false; isFeeExempt[_newdevWallet] = true; isFeeExempt[marketingWallet] = false; isFeeExempt[_newMarketingWallet] = true; isMaxExempt[_newMarketingWallet] = true; autoLiquidityReceiver = _autoLiquidityReceiver; marketingWallet = _newMarketingWallet; devWallet = _newdevWallet; } // *** // Swap settings // *** function setSwapThresholdAmount(uint256 _amount) external onlyOwner() { swapThreshold = _amount; } function setSwapAmount(uint256 _amount) external onlyOwner() { if(_amount > swapThreshold) { swapAmount = swapThreshold; } else { swapAmount = _amount; } } // *** // End Swap settings // *** function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } /* Airdrop */ function airDropCustom(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner { require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses"); require(addresses.length == tokens.length,"Mismatch between Address and token count"); uint256 SCCC = 0; for(uint i=0; i < addresses.length; i++){ SCCC = SCCC + tokens[i]; } require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens[i]); } } function airDropFixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner { require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses"); uint256 SCCC = tokens * addresses.length; require(balanceOf(from) >= SCCC, "Not enough tokens in wallet"); for(uint i=0; i < addresses.length; i++){ _basicTransfer(from,addresses[i],tokens); } } event AutoLiquify(uint256 amountETH, uint256 amountBOG); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airDropCustom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"airDropFixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_newMarketingWallet","type":"address"},{"internalType":"address","name":"_newdevWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTransFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setTreasuryFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transFee","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040525f805473e5b31de648bb9a5dac7589d1a7c59646f19fcbdc6001600160a01b031991821681179092556001805490911690911790556100456009600a61052e565b610054906402540be400610543565b6002556103e8600254600a6100699190610543565b610073919061055a565b6003556103e8600254600a6100889190610543565b610092919061055a565b600455601460055560055460065560146007555f6008555f6009556009546007546008546100c09190610579565b6100ca9190610579565b600a555f600b556064600c8190556010805461dead6001600160a01b0319918216179091556011805490911690556014601955601a55601b805462ffffff1916620a0100179055601d805460ff191660011790556002546127109061013090601e610543565b61013a919061055a565b601e55612710600254601e61014f9190610543565b610159919061055a565b601f55348015610167575f5ffd5b50600d80546001600160a01b0319163390811790915560405181905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610222919061058c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561026d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610291919061058c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ff919061058c565b6001600160a01b0390811660a0528181166080819052305f8181526013602090815260408083209483529381528382205f1990553380835260148083528584208054600160ff19918216811790925560158086528887208054831684179055601680875289882080548416851790556017875289882080548416851790556010548b1688528988208054841685179055978752888720805483168417905586548a168752928552878620805482168317905585548916865295845286852080548716821790558454909716845282528483208054909416909517909255601880546001600160a01b03191685179055600254848252601283528382208190559251928352917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506105b2565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156104845780850481111561046857610468610435565b600184161561047657908102905b60019390931c92800261044d565b935093915050565b5f8261049a57506001610528565b816104a657505f610528565b81600181146104bc57600281146104c6576104e2565b6001915050610528565b60ff8411156104d7576104d7610435565b50506001821b610528565b5060208310610133831016604e8410600b8410161715610505575081810a610528565b6105115f198484610449565b805f190482111561052457610524610435565b0290505b92915050565b5f61053c60ff84168361048c565b9392505050565b808202811582820484141761052857610528610435565b5f8261057457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561052857610528610435565b5f6020828403121561059c575f5ffd5b81516001600160a01b038116811461053c575f5ffd5b60805160a051612c726106125f395f81816106980152818161171701528181611b8d01528181611bc601528181611c2d01528181611d6401526122a101525f818161079c015281816123c00152818161247801526126680152612c725ff3fe6080604052600436106103b6575f3560e01c80636d1b229d116101e9578063b6c5232411610108578063dd62ed3e1161009d578063f2fde38b1161006d578063f2fde38b14610b16578063f53fd58414610b35578063f84ba65d14610b4a578063ffb54a9914610b69575f5ffd5b8063dd62ed3e14610a7f578063e53c30b014610ac3578063e632313c14610ad8578063ee9ef29e14610af7575f5ffd5b8063d7c01032116100d8578063d7c0103214610a03578063dcf7aef314610a22578063dd395c6314610a41578063dd46706414610a60575f5ffd5b8063b6c5232414610992578063bd9ab537146109a6578063ca33e64c146109c5578063d51ed1c8146109e4575f5ffd5b80637d1db4a51161017e5780638ea5220f1161014e5780638ea5220f1461091457806395d89b4114610933578063a69df4b51461095f578063a9059cbb14610973575f5ffd5b80637d1db4a5146108af5780638038cbd3146108c4578063893d20e8146108e35780638da5cb5b146108f7575f5ffd5b8063715018a6116101b9578063715018a614610849578063722b62ad1461085d57806375f0a8741461087c57806378109e541461089a575f5ffd5b80636d1b229d146107be5780636ddd1713146107dd57806370a08231146107f6578063713e4ae51461082a575f5ffd5b80632d594567116102d557806349bd5a5e1161026a5780635d098b381161023a5780635d098b381461072f578063617fe0ed1461074e578063658d4b7f1461076c57806367ac77b41461078b575f5ffd5b806349bd5a5e1461068757806350db71fb146106d2578063571ac8b0146106f15780635c85974f14610710575f5ffd5b8063442a583d116102a5578063442a583d1461061f57806344a33fd21461063e57806346e421a21461065d5780634706240214610672575f5ffd5b80632d594567146105b55780632e8fa821146105d4578063313ce567146105e95780633705b3921461060a575f5ffd5b806318160ddd1161034b578063201e79911161031b578063201e79911461054457806323b872dd1461056357806329e04b4a146105825780632b112e49146105a1575f5ffd5b806318160ddd146104dd5780631ad017b9146104f15780631da1db5e146105105780631e25dc541461052f575f5ffd5b8063095ea7b311610386578063095ea7b31461045b5780630d2959801461048a5780631161ae39146104a9578063180b0d7e146104c8575f5ffd5b8063026f7d15146103c15780630445b667146103e957806306fdde03146103fe57806309302dc61461043a575f5ffd5b366103bd57005b5f5ffd5b3480156103cc575f5ffd5b506103d660085481565b6040519081526020015b60405180910390f35b3480156103f4575f5ffd5b506103d6601e5481565b348015610409575f5ffd5b5060408051808201909152600b81526a05175616e74756d517569760ac1b60208201525b6040516103e0919061272b565b348015610445575f5ffd5b50610459610454366004612760565b610b82565b005b348015610466575f5ffd5b5061047a61047536600461278b565b610bd6565b60405190151581526020016103e0565b348015610495575f5ffd5b506104596104a43660046127c9565b610c42565b3480156104b4575f5ffd5b5061047a6104c33660046127e2565b610c7f565b3480156104d3575f5ffd5b506103d6600c5481565b3480156104e8575f5ffd5b506002546103d6565b3480156104fc575f5ffd5b5061045961050b366004612802565b610c92565b34801561051b575f5ffd5b5061045961052a366004612760565b610d0b565b34801561053a575f5ffd5b506103d6600b5481565b34801561054f575f5ffd5b5061045961055e3660046127e2565b610d85565b34801561056e575f5ffd5b5061047a61057d36600461281d565b610dba565b34801561058d575f5ffd5b5061045961059c366004612760565b610e78565b3480156105ac575f5ffd5b506103d6610ea7565b3480156105c0575f5ffd5b506104596105cf36600461285b565b610ef7565b3480156105df575f5ffd5b506103d6601f5481565b3480156105f4575f5ffd5b5060095b60405160ff90911681526020016103e0565b348015610615575f5ffd5b506103d660065481565b34801561062a575f5ffd5b506104596106393660046128dd565b610f52565b348015610649575f5ffd5b50610459610658366004612760565b6110a9565b348015610668575f5ffd5b506103d660075481565b34801561067d575f5ffd5b506103d660055481565b348015610692575f5ffd5b506106ba7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103e0565b3480156106dd575f5ffd5b506104596106ec366004612935565b6110e4565b3480156106fc575f5ffd5b5061047a61070b366004612802565b611138565b34801561071b575f5ffd5b5061045961072a366004612760565b611144565b34801561073a575f5ffd5b50610459610749366004612802565b611173565b348015610759575f5ffd5b50601b5461047a90610100900460ff1681565b348015610777575f5ffd5b50610459610786366004612935565b6111fe565b348015610796575f5ffd5b506106ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107c9575f5ffd5b506104596107d8366004612760565b611252565b3480156107e8575f5ffd5b50601d5461047a9060ff1681565b348015610801575f5ffd5b506103d6610810366004612802565b6001600160a01b03165f9081526012602052604090205490565b348015610835575f5ffd5b50610459610844366004612968565b611285565b348015610854575f5ffd5b50610459611482565b348015610868575f5ffd5b50601b546105f89062010000900460ff1681565b348015610887575f5ffd5b505f546106ba906001600160a01b031681565b3480156108a5575f5ffd5b506103d660045481565b3480156108ba575f5ffd5b506103d660035481565b3480156108cf575f5ffd5b506104596108de3660046129ea565b6114e2565b3480156108ee575f5ffd5b506106ba61158e565b348015610902575f5ffd5b50600d546001600160a01b03166106ba565b34801561091f575f5ffd5b506001546106ba906001600160a01b031681565b34801561093e575f5ffd5b506040805180820190915260048152630515549560e41b602082015261042d565b34801561096a575f5ffd5b506104596115a1565b34801561097e575f5ffd5b5061047a61098d36600461278b565b6116a7565b34801561099d575f5ffd5b50600f546103d6565b3480156109b1575f5ffd5b506104596109c0366004612760565b6116b3565b3480156109d0575f5ffd5b506018546106ba906001600160a01b031681565b3480156109ef575f5ffd5b506103d66109fe366004612760565b6116fe565b348015610a0e575f5ffd5b50610459610a1d366004612a19565b611763565b348015610a2d575f5ffd5b50610459610a3c366004612760565b611825565b348015610a4c575f5ffd5b50610459610a5b366004612935565b611854565b348015610a6b575f5ffd5b50610459610a7a366004612760565b6118a8565b348015610a8a575f5ffd5b506103d6610a99366004612a61565b6001600160a01b039182165f90815260136020908152604080832093909416825291909152205490565b348015610ace575f5ffd5b506103d6600a5481565b348015610ae3575f5ffd5b50610459610af2366004612760565b61192b565b348015610b02575f5ffd5b50610459610b11366004612760565b61196d565b348015610b21575f5ffd5b50610459610b30366004612802565b61199c565b348015610b40575f5ffd5b506103d660095481565b348015610b55575f5ffd5b50610459610b64366004612935565b611a73565b348015610b74575f5ffd5b50601b5461047a9060ff1681565b600d546001600160a01b03163314610bb55760405162461bcd60e51b8152600401610bac90612a8d565b60405180910390fd5b6103e881600254610bc69190612ad6565b610bd09190612aed565b60045550565b335f8181526013602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c309086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610bac90612a8d565b601b805460ff1916911515919091179055565b5f82610c8a836116fe565b119392505050565b600d546001600160a01b03163314610cbc5760405162461bcd60e51b8152600401610bac90612a8d565b600180546001600160a01b039081165f90815260146020526040808220805460ff19908116909155949092168082529190208054909316821790925580546001600160a01b0319169091179055565b600d546001600160a01b03163314610d355760405162461bcd60e51b8152600401610bac90612a8d565b5f5447906001600160a01b03166108fc6064610d518585612ad6565b610d5b9190612aed565b6040518115909202915f818181858888f19350505050158015610d80573d5f5f3e3d5ffd5b505050565b600d546001600160a01b03163314610daf5760405162461bcd60e51b8152600401610bac90612a8d565b601991909155601a55565b6001600160a01b0383165f9081526013602090815260408083203384529091528120545f1914610e63576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601382528381203382529091529190912054610e3f918490611ac7565b6001600160a01b0385165f9081526013602090815260408083203384529091529020555b610e6e848484611af2565b90505b9392505050565b600d546001600160a01b03163314610ea25760405162461bcd60e51b8152600401610bac90612a8d565b601e55565b6011546001600160a01b03165f90815260126020526040812054610ef2906010546001600160a01b03165f90815260126020526040902054610eec9060025490611fe8565b90611fe8565b905090565b600d546001600160a01b03163314610f215760405162461bcd60e51b8152600401610bac90612a8d565b601b805462ffff0019166101009315159390930262ff00001916929092176201000060ff9290921691909102179055565b600d546001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610bac90612a8d565b6103218210610fe35760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610bac565b5f610fee8383612ad6565b90508061100f866001600160a01b03165f9081526012602052604090205490565b101561105d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bac565b5f5b838110156110a1576110988686868481811061107d5761107d612b0c565b90506020020160208101906110929190612802565b85611ff3565b5060010161105f565b505050505050565b600d546001600160a01b031633146110d35760405162461bcd60e51b8152600401610bac90612a8d565b47336108fc6064610d518585612ad6565b600d546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f610c3c825f19610bd6565b600d546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610bac90612a8d565b600355565b600d546001600160a01b0316331461119d5760405162461bcd60e51b8152600401610bac90612a8d565b5f80546001600160a01b039081168252601460209081526040808420805460ff1990811690915594909216808452828420805486166001908117909155601690925291832080549094161790925580546001600160a01b0319169091179055565b600d546001600160a01b031633146112285760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b335f90815260126020526040902054811015611282576010546112809033906001600160a01b031683611ff3565b505b50565b600d546001600160a01b031633146112af5760405162461bcd60e51b8152600401610bac90612a8d565b6101f583106113165760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610bac565b8281146113765760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610bac565b5f805b848110156113af5783838281811061139357611393612b0c565b90506020020135826113a59190612b20565b9150600101611379565b50806113cf876001600160a01b03165f9081526012602052604090205490565b101561141d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bac565b5f5b84811015611479576114708787878481811061143d5761143d612b0c565b90506020020160208101906114529190612802565b86868581811061146457611464612b0c565b90506020020135611ff3565b5060010161141f565b50505050505050565b600d546001600160a01b031633146114ac5760405162461bcd60e51b8152600401610bac90612a8d565b600d546040515f916001600160a01b0316905f516020612bfd5f395f51905f52908390a3600d80546001600160a01b0319169055565b600d546001600160a01b0316331461150c5760405162461bcd60e51b8152600401610bac90612a8d565b60078490556008839055600982905561152f8261152986866120c3565b906120c3565b600a819055600c829055605a116115885760405162461bcd60e51b815260206004820152601860248201527f466565732063616e6e6f742062652074686174206869676800000000000000006044820152606401610bac565b50505050565b5f610ef2600d546001600160a01b031690565b600e546001600160a01b031633146116075760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610bac565b600f5442116116585760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610bac565b600e54600d546040516001600160a01b0392831692909116905f516020612bfd5f395f51905f52905f90a3600e54600d80546001600160a01b0319166001600160a01b03909216919091179055565b5f610e71338484611af2565b600d546001600160a01b031633146116dd5760405162461bcd60e51b8152600401610bac90612a8d565b6103e8816002546116ee9190612ad6565b6116f89190612aed565b60035550565b5f610c3c61170a610ea7565b61175d61175660026117507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526012602052604090205490565b906120ce565b85906120ce565b906120d9565b600d546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610bac90612a8d565b600180546001600160a01b039081165f908152601460209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601690925282208054909516841790945560188054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b600d546001600160a01b0316331461184f5760405162461bcd60e51b8152600401610bac90612a8d565b600655565b600d546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146118d25760405162461bcd60e51b8152600401610bac90612a8d565b600d8054600e80546001600160a01b03199081166001600160a01b038416179091551690556119018142612b20565b600f55600d546040515f916001600160a01b0316905f516020612bfd5f395f51905f52908390a350565b600d546001600160a01b031633146119555760405162461bcd60e51b8152600401610bac90612a8d565b601e5481111561196857601e54601f5550565b601f55565b600d546001600160a01b031633146119975760405162461bcd60e51b8152600401610bac90612a8d565b600b55565b600d546001600160a01b031633146119c65760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b038116611a2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bac565b600d546040516001600160a01b038084169216905f516020612bfd5f395f51905f52905f90a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314611a9d5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f8184841115611aea5760405162461bcd60e51b8152600401610bac919061272b565b505050900390565b6020545f9060ff1615611b1157611b0a848484611ff3565b9050610e71565b600d546001600160a01b03858116911614801590611b3d5750600d546001600160a01b03848116911614155b15611b8b57601b5460ff16611b8b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610bac565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416145f811582611bfb57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b0385163014801590611c2457506010546001600160a01b03868116911614155b8015611c6257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8015611c7b57505f546001600160a01b03868116911614155b8015611c9557506001546001600160a01b03868116911614155b8015611caf57506018546001600160a01b03868116911614155b15611d62576001600160a01b0385165f9081526012602090815260408083205460169092529091205460ff16611d6057600454611cec8683612b20565b1115611d605760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610bac565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316148015611daa5750601b54610100900460ff165b8015611dce57506001600160a01b0385165f9081526017602052604090205460ff16155b15611e76576001600160a01b0385165f908152601c60205260409020544211611e475760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610bac565b601b54611e5d9062010000900460ff1642612b20565b6001600160a01b0386165f908152601c60205260409020555b6001600160a01b0385165f9081526015602052604090205460ff16611e9f57611e9f86856120e4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260129091529190912054611ef0918690611ac7565b6001600160a01b0387165f90815260126020526040902055838115611f2957600b5415611f2457611f21878661214c565b90505b611f71565b6001600160a01b0387165f9081526014602052604090205460ff1615611f4f5784611f5a565b611f5a8786856121e9565b9050611f64612295565b15611f7157611f716122ff565b6001600160a01b0386165f90815260126020526040902054611f9390826120c3565b6001600160a01b038088165f8181526012602052604090819020939093559151908916905f516020612c1d5f395f51905f5290611fd39085815260200190565b60405180910390a35060019695505050505050565b5f610e718284612b33565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601290915291822054612043918490611ac7565b6001600160a01b038086165f90815260126020526040808220939093559085168152205461207190836120c3565b6001600160a01b038085165f8181526012602052604090819020939093559151908616905f516020612c1d5f395f51905f52906120b19086815260200190565b60405180910390a35060019392505050565b5f610e718284612b20565b5f610e718284612ad6565b5f610e718284612aed565b6003548111158061210c57506001600160a01b0382165f9081526015602052604090205460ff165b6112805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610bac565b5f5f600b5490505f612175600c5460646121669190612ad6565b61175d606461175088876120ce565b305f9081526012602052604090205490915061219190826120c3565b305f81815260126020526040908190209290925590516001600160a01b038716905f516020612c1d5f395f51905f52906121ce9085815260200190565b60405180910390a36121e08482611fe8565b95945050505050565b5f5f826121f8576006546121fc565b600a545b90505f612220600c5460646122119190612ad6565b61175d606461175089876120ce565b305f9081526012602052604090205490915061223c90826120c3565b305f81815260126020526040908190209290925590516001600160a01b038816905f516020612c1d5f395f51905f52906122799085815260200190565b60405180910390a361228b8582611fe8565b9695505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906122d2575060205460ff16155b80156122e05750601d5460ff165b8015610ef2575050601e54305f90815260126020526040902054101590565b6020805460ff19166001179055601954601a545f9161231d91610c7f565b6123295760075461232b565b5f5b90505f61234e600261175d600a5461175d86601f546120ce90919063ffffffff16565b90505f61236682601f54611fe890919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061239e5761239e612b0c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190612b46565b8160018151811061245157612451612b0c565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906124b59086905f90879030904290600401612b61565b5f604051808303815f87803b1580156124cc575f5ffd5b505af11580156124de573d5f5f3e3d5ffd5b505050505f6124f68247611fe890919063ffffffff16565b90505f6125106125078860026120d9565b600a5490611fe8565b90505f612531600261175d8461175d600754886120ce90919063ffffffff16565b90505f61254d8361175d600854876120ce90919063ffffffff16565b90505f6125698461175d600954886120ce90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f81146125bd576040519150601f19603f3d011682016040523d82523d5f602084013e6125c2565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114612614576040519150601f19603f3d011682016040523d82523d5f602084013e612619565b606091505b505f9250508a1590506127145760185460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990869060c40160606040518083038185885af11580156126b2573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126d79190612bd1565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff19169055505050505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215612770575f5ffd5b5035919050565b6001600160a01b0381168114611282575f5ffd5b5f5f6040838503121561279c575f5ffd5b82356127a781612777565b946020939093013593505050565b803580151581146127c4575f5ffd5b919050565b5f602082840312156127d9575f5ffd5b610e71826127b5565b5f5f604083850312156127f3575f5ffd5b50508035926020909101359150565b5f60208284031215612812575f5ffd5b8135610e7181612777565b5f5f5f6060848603121561282f575f5ffd5b833561283a81612777565b9250602084013561284a81612777565b929592945050506040919091013590565b5f5f6040838503121561286c575f5ffd5b612875836127b5565b9150602083013560ff8116811461288a575f5ffd5b809150509250929050565b5f5f83601f8401126128a5575f5ffd5b50813567ffffffffffffffff8111156128bc575f5ffd5b6020830191508360208260051b85010111156128d6575f5ffd5b9250929050565b5f5f5f5f606085870312156128f0575f5ffd5b84356128fb81612777565b9350602085013567ffffffffffffffff811115612916575f5ffd5b61292287828801612895565b9598909750949560400135949350505050565b5f5f60408385031215612946575f5ffd5b823561295181612777565b915061295f602084016127b5565b90509250929050565b5f5f5f5f5f6060868803121561297c575f5ffd5b853561298781612777565b9450602086013567ffffffffffffffff8111156129a2575f5ffd5b6129ae88828901612895565b909550935050604086013567ffffffffffffffff8111156129cd575f5ffd5b6129d988828901612895565b969995985093965092949392505050565b5f5f5f5f608085870312156129fd575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f5f60608486031215612a2b575f5ffd5b8335612a3681612777565b92506020840135612a4681612777565b91506040840135612a5681612777565b809150509250925092565b5f5f60408385031215612a72575f5ffd5b8235612a7d81612777565b9150602083013561288a81612777565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610c3c57610c3c612ac2565b5f82612b0757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610c3c57610c3c612ac2565b81810381811115610c3c57610c3c612ac2565b5f60208284031215612b56575f5ffd5b8151610e7181612777565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612bb15783516001600160a01b0316835260209384019390920191600101612b8a565b50506001600160a01b039590951660608401525050608001529392505050565b5f5f5f60608486031215612be3575f5ffd5b505081516020830151604090930151909492935091905056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205012bd9b5558a5444f37d6cec7d8061f050c7b3408b6e12868bd42c4b0b84ff664736f6c634300081c0033
Deployed Bytecode
0x6080604052600436106103b6575f3560e01c80636d1b229d116101e9578063b6c5232411610108578063dd62ed3e1161009d578063f2fde38b1161006d578063f2fde38b14610b16578063f53fd58414610b35578063f84ba65d14610b4a578063ffb54a9914610b69575f5ffd5b8063dd62ed3e14610a7f578063e53c30b014610ac3578063e632313c14610ad8578063ee9ef29e14610af7575f5ffd5b8063d7c01032116100d8578063d7c0103214610a03578063dcf7aef314610a22578063dd395c6314610a41578063dd46706414610a60575f5ffd5b8063b6c5232414610992578063bd9ab537146109a6578063ca33e64c146109c5578063d51ed1c8146109e4575f5ffd5b80637d1db4a51161017e5780638ea5220f1161014e5780638ea5220f1461091457806395d89b4114610933578063a69df4b51461095f578063a9059cbb14610973575f5ffd5b80637d1db4a5146108af5780638038cbd3146108c4578063893d20e8146108e35780638da5cb5b146108f7575f5ffd5b8063715018a6116101b9578063715018a614610849578063722b62ad1461085d57806375f0a8741461087c57806378109e541461089a575f5ffd5b80636d1b229d146107be5780636ddd1713146107dd57806370a08231146107f6578063713e4ae51461082a575f5ffd5b80632d594567116102d557806349bd5a5e1161026a5780635d098b381161023a5780635d098b381461072f578063617fe0ed1461074e578063658d4b7f1461076c57806367ac77b41461078b575f5ffd5b806349bd5a5e1461068757806350db71fb146106d2578063571ac8b0146106f15780635c85974f14610710575f5ffd5b8063442a583d116102a5578063442a583d1461061f57806344a33fd21461063e57806346e421a21461065d5780634706240214610672575f5ffd5b80632d594567146105b55780632e8fa821146105d4578063313ce567146105e95780633705b3921461060a575f5ffd5b806318160ddd1161034b578063201e79911161031b578063201e79911461054457806323b872dd1461056357806329e04b4a146105825780632b112e49146105a1575f5ffd5b806318160ddd146104dd5780631ad017b9146104f15780631da1db5e146105105780631e25dc541461052f575f5ffd5b8063095ea7b311610386578063095ea7b31461045b5780630d2959801461048a5780631161ae39146104a9578063180b0d7e146104c8575f5ffd5b8063026f7d15146103c15780630445b667146103e957806306fdde03146103fe57806309302dc61461043a575f5ffd5b366103bd57005b5f5ffd5b3480156103cc575f5ffd5b506103d660085481565b6040519081526020015b60405180910390f35b3480156103f4575f5ffd5b506103d6601e5481565b348015610409575f5ffd5b5060408051808201909152600b81526a05175616e74756d517569760ac1b60208201525b6040516103e0919061272b565b348015610445575f5ffd5b50610459610454366004612760565b610b82565b005b348015610466575f5ffd5b5061047a61047536600461278b565b610bd6565b60405190151581526020016103e0565b348015610495575f5ffd5b506104596104a43660046127c9565b610c42565b3480156104b4575f5ffd5b5061047a6104c33660046127e2565b610c7f565b3480156104d3575f5ffd5b506103d6600c5481565b3480156104e8575f5ffd5b506002546103d6565b3480156104fc575f5ffd5b5061045961050b366004612802565b610c92565b34801561051b575f5ffd5b5061045961052a366004612760565b610d0b565b34801561053a575f5ffd5b506103d6600b5481565b34801561054f575f5ffd5b5061045961055e3660046127e2565b610d85565b34801561056e575f5ffd5b5061047a61057d36600461281d565b610dba565b34801561058d575f5ffd5b5061045961059c366004612760565b610e78565b3480156105ac575f5ffd5b506103d6610ea7565b3480156105c0575f5ffd5b506104596105cf36600461285b565b610ef7565b3480156105df575f5ffd5b506103d6601f5481565b3480156105f4575f5ffd5b5060095b60405160ff90911681526020016103e0565b348015610615575f5ffd5b506103d660065481565b34801561062a575f5ffd5b506104596106393660046128dd565b610f52565b348015610649575f5ffd5b50610459610658366004612760565b6110a9565b348015610668575f5ffd5b506103d660075481565b34801561067d575f5ffd5b506103d660055481565b348015610692575f5ffd5b506106ba7f00000000000000000000000019be6725b072a026639a24507683979a8e808b5181565b6040516001600160a01b0390911681526020016103e0565b3480156106dd575f5ffd5b506104596106ec366004612935565b6110e4565b3480156106fc575f5ffd5b5061047a61070b366004612802565b611138565b34801561071b575f5ffd5b5061045961072a366004612760565b611144565b34801561073a575f5ffd5b50610459610749366004612802565b611173565b348015610759575f5ffd5b50601b5461047a90610100900460ff1681565b348015610777575f5ffd5b50610459610786366004612935565b6111fe565b348015610796575f5ffd5b506106ba7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156107c9575f5ffd5b506104596107d8366004612760565b611252565b3480156107e8575f5ffd5b50601d5461047a9060ff1681565b348015610801575f5ffd5b506103d6610810366004612802565b6001600160a01b03165f9081526012602052604090205490565b348015610835575f5ffd5b50610459610844366004612968565b611285565b348015610854575f5ffd5b50610459611482565b348015610868575f5ffd5b50601b546105f89062010000900460ff1681565b348015610887575f5ffd5b505f546106ba906001600160a01b031681565b3480156108a5575f5ffd5b506103d660045481565b3480156108ba575f5ffd5b506103d660035481565b3480156108cf575f5ffd5b506104596108de3660046129ea565b6114e2565b3480156108ee575f5ffd5b506106ba61158e565b348015610902575f5ffd5b50600d546001600160a01b03166106ba565b34801561091f575f5ffd5b506001546106ba906001600160a01b031681565b34801561093e575f5ffd5b506040805180820190915260048152630515549560e41b602082015261042d565b34801561096a575f5ffd5b506104596115a1565b34801561097e575f5ffd5b5061047a61098d36600461278b565b6116a7565b34801561099d575f5ffd5b50600f546103d6565b3480156109b1575f5ffd5b506104596109c0366004612760565b6116b3565b3480156109d0575f5ffd5b506018546106ba906001600160a01b031681565b3480156109ef575f5ffd5b506103d66109fe366004612760565b6116fe565b348015610a0e575f5ffd5b50610459610a1d366004612a19565b611763565b348015610a2d575f5ffd5b50610459610a3c366004612760565b611825565b348015610a4c575f5ffd5b50610459610a5b366004612935565b611854565b348015610a6b575f5ffd5b50610459610a7a366004612760565b6118a8565b348015610a8a575f5ffd5b506103d6610a99366004612a61565b6001600160a01b039182165f90815260136020908152604080832093909416825291909152205490565b348015610ace575f5ffd5b506103d6600a5481565b348015610ae3575f5ffd5b50610459610af2366004612760565b61192b565b348015610b02575f5ffd5b50610459610b11366004612760565b61196d565b348015610b21575f5ffd5b50610459610b30366004612802565b61199c565b348015610b40575f5ffd5b506103d660095481565b348015610b55575f5ffd5b50610459610b64366004612935565b611a73565b348015610b74575f5ffd5b50601b5461047a9060ff1681565b600d546001600160a01b03163314610bb55760405162461bcd60e51b8152600401610bac90612a8d565b60405180910390fd5b6103e881600254610bc69190612ad6565b610bd09190612aed565b60045550565b335f8181526013602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c309086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b03163314610c6c5760405162461bcd60e51b8152600401610bac90612a8d565b601b805460ff1916911515919091179055565b5f82610c8a836116fe565b119392505050565b600d546001600160a01b03163314610cbc5760405162461bcd60e51b8152600401610bac90612a8d565b600180546001600160a01b039081165f90815260146020526040808220805460ff19908116909155949092168082529190208054909316821790925580546001600160a01b0319169091179055565b600d546001600160a01b03163314610d355760405162461bcd60e51b8152600401610bac90612a8d565b5f5447906001600160a01b03166108fc6064610d518585612ad6565b610d5b9190612aed565b6040518115909202915f818181858888f19350505050158015610d80573d5f5f3e3d5ffd5b505050565b600d546001600160a01b03163314610daf5760405162461bcd60e51b8152600401610bac90612a8d565b601991909155601a55565b6001600160a01b0383165f9081526013602090815260408083203384529091528120545f1914610e63576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601382528381203382529091529190912054610e3f918490611ac7565b6001600160a01b0385165f9081526013602090815260408083203384529091529020555b610e6e848484611af2565b90505b9392505050565b600d546001600160a01b03163314610ea25760405162461bcd60e51b8152600401610bac90612a8d565b601e55565b6011546001600160a01b03165f90815260126020526040812054610ef2906010546001600160a01b03165f90815260126020526040902054610eec9060025490611fe8565b90611fe8565b905090565b600d546001600160a01b03163314610f215760405162461bcd60e51b8152600401610bac90612a8d565b601b805462ffff0019166101009315159390930262ff00001916929092176201000060ff9290921691909102179055565b600d546001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610bac90612a8d565b6103218210610fe35760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3830302061646472657373657360981b6064820152608401610bac565b5f610fee8383612ad6565b90508061100f866001600160a01b03165f9081526012602052604090205490565b101561105d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bac565b5f5b838110156110a1576110988686868481811061107d5761107d612b0c565b90506020020160208101906110929190612802565b85611ff3565b5060010161105f565b505050505050565b600d546001600160a01b031633146110d35760405162461bcd60e51b8152600401610bac90612a8d565b47336108fc6064610d518585612ad6565b600d546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b5f610c3c825f19610bd6565b600d546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610bac90612a8d565b600355565b600d546001600160a01b0316331461119d5760405162461bcd60e51b8152600401610bac90612a8d565b5f80546001600160a01b039081168252601460209081526040808420805460ff1990811690915594909216808452828420805486166001908117909155601690925291832080549094161790925580546001600160a01b0319169091179055565b600d546001600160a01b031633146112285760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b335f90815260126020526040902054811015611282576010546112809033906001600160a01b031683611ff3565b505b50565b600d546001600160a01b031633146112af5760405162461bcd60e51b8152600401610bac90612a8d565b6101f583106113165760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610bac565b8281146113765760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610bac565b5f805b848110156113af5783838281811061139357611393612b0c565b90506020020135826113a59190612b20565b9150600101611379565b50806113cf876001600160a01b03165f9081526012602052604090205490565b101561141d5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bac565b5f5b84811015611479576114708787878481811061143d5761143d612b0c565b90506020020160208101906114529190612802565b86868581811061146457611464612b0c565b90506020020135611ff3565b5060010161141f565b50505050505050565b600d546001600160a01b031633146114ac5760405162461bcd60e51b8152600401610bac90612a8d565b600d546040515f916001600160a01b0316905f516020612bfd5f395f51905f52908390a3600d80546001600160a01b0319169055565b600d546001600160a01b0316331461150c5760405162461bcd60e51b8152600401610bac90612a8d565b60078490556008839055600982905561152f8261152986866120c3565b906120c3565b600a819055600c829055605a116115885760405162461bcd60e51b815260206004820152601860248201527f466565732063616e6e6f742062652074686174206869676800000000000000006044820152606401610bac565b50505050565b5f610ef2600d546001600160a01b031690565b600e546001600160a01b031633146116075760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610bac565b600f5442116116585760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610bac565b600e54600d546040516001600160a01b0392831692909116905f516020612bfd5f395f51905f52905f90a3600e54600d80546001600160a01b0319166001600160a01b03909216919091179055565b5f610e71338484611af2565b600d546001600160a01b031633146116dd5760405162461bcd60e51b8152600401610bac90612a8d565b6103e8816002546116ee9190612ad6565b6116f89190612aed565b60035550565b5f610c3c61170a610ea7565b61175d61175660026117507f00000000000000000000000019be6725b072a026639a24507683979a8e808b516001600160a01b03165f9081526012602052604090205490565b906120ce565b85906120ce565b906120d9565b600d546001600160a01b0316331461178d5760405162461bcd60e51b8152600401610bac90612a8d565b600180546001600160a01b039081165f908152601460209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601690925282208054909516841790945560188054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b600d546001600160a01b0316331461184f5760405162461bcd60e51b8152600401610bac90612a8d565b600655565b600d546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601660205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146118d25760405162461bcd60e51b8152600401610bac90612a8d565b600d8054600e80546001600160a01b03199081166001600160a01b038416179091551690556119018142612b20565b600f55600d546040515f916001600160a01b0316905f516020612bfd5f395f51905f52908390a350565b600d546001600160a01b031633146119555760405162461bcd60e51b8152600401610bac90612a8d565b601e5481111561196857601e54601f5550565b601f55565b600d546001600160a01b031633146119975760405162461bcd60e51b8152600401610bac90612a8d565b600b55565b600d546001600160a01b031633146119c65760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b038116611a2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bac565b600d546040516001600160a01b038084169216905f516020612bfd5f395f51905f52905f90a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b03163314611a9d5760405162461bcd60e51b8152600401610bac90612a8d565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b5f8184841115611aea5760405162461bcd60e51b8152600401610bac919061272b565b505050900390565b6020545f9060ff1615611b1157611b0a848484611ff3565b9050610e71565b600d546001600160a01b03858116911614801590611b3d5750600d546001600160a01b03848116911614155b15611b8b57601b5460ff16611b8b5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610bac565b7f00000000000000000000000019be6725b072a026639a24507683979a8e808b516001600160a01b03908116908416145f811582611bfb57507f00000000000000000000000019be6725b072a026639a24507683979a8e808b516001600160a01b0316866001600160a01b031614155b90506001600160a01b0385163014801590611c2457506010546001600160a01b03868116911614155b8015611c6257507f00000000000000000000000019be6725b072a026639a24507683979a8e808b516001600160a01b0316856001600160a01b031614155b8015611c7b57505f546001600160a01b03868116911614155b8015611c9557506001546001600160a01b03868116911614155b8015611caf57506018546001600160a01b03868116911614155b15611d62576001600160a01b0385165f9081526012602090815260408083205460169092529091205460ff16611d6057600454611cec8683612b20565b1115611d605760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610bac565b505b7f00000000000000000000000019be6725b072a026639a24507683979a8e808b516001600160a01b0316866001600160a01b0316148015611daa5750601b54610100900460ff165b8015611dce57506001600160a01b0385165f9081526017602052604090205460ff16155b15611e76576001600160a01b0385165f908152601c60205260409020544211611e475760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610bac565b601b54611e5d9062010000900460ff1642612b20565b6001600160a01b0386165f908152601c60205260409020555b6001600160a01b0385165f9081526015602052604090205460ff16611e9f57611e9f86856120e4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260129091529190912054611ef0918690611ac7565b6001600160a01b0387165f90815260126020526040902055838115611f2957600b5415611f2457611f21878661214c565b90505b611f71565b6001600160a01b0387165f9081526014602052604090205460ff1615611f4f5784611f5a565b611f5a8786856121e9565b9050611f64612295565b15611f7157611f716122ff565b6001600160a01b0386165f90815260126020526040902054611f9390826120c3565b6001600160a01b038088165f8181526012602052604090819020939093559151908916905f516020612c1d5f395f51905f5290611fd39085815260200190565b60405180910390a35060019695505050505050565b5f610e718284612b33565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601290915291822054612043918490611ac7565b6001600160a01b038086165f90815260126020526040808220939093559085168152205461207190836120c3565b6001600160a01b038085165f8181526012602052604090819020939093559151908616905f516020612c1d5f395f51905f52906120b19086815260200190565b60405180910390a35060019392505050565b5f610e718284612b20565b5f610e718284612ad6565b5f610e718284612aed565b6003548111158061210c57506001600160a01b0382165f9081526015602052604090205460ff165b6112805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610bac565b5f5f600b5490505f612175600c5460646121669190612ad6565b61175d606461175088876120ce565b305f9081526012602052604090205490915061219190826120c3565b305f81815260126020526040908190209290925590516001600160a01b038716905f516020612c1d5f395f51905f52906121ce9085815260200190565b60405180910390a36121e08482611fe8565b95945050505050565b5f5f826121f8576006546121fc565b600a545b90505f612220600c5460646122119190612ad6565b61175d606461175089876120ce565b305f9081526012602052604090205490915061223c90826120c3565b305f81815260126020526040908190209290925590516001600160a01b038816905f516020612c1d5f395f51905f52906122799085815260200190565b60405180910390a361228b8582611fe8565b9695505050505050565b5f336001600160a01b037f00000000000000000000000019be6725b072a026639a24507683979a8e808b5116148015906122d2575060205460ff16155b80156122e05750601d5460ff165b8015610ef2575050601e54305f90815260126020526040902054101590565b6020805460ff19166001179055601954601a545f9161231d91610c7f565b6123295760075461232b565b5f5b90505f61234e600261175d600a5461175d86601f546120ce90919063ffffffff16565b90505f61236682601f54611fe890919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061239e5761239e612b0c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243e9190612b46565b8160018151811061245157612451612b0c565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906124b59086905f90879030904290600401612b61565b5f604051808303815f87803b1580156124cc575f5ffd5b505af11580156124de573d5f5f3e3d5ffd5b505050505f6124f68247611fe890919063ffffffff16565b90505f6125106125078860026120d9565b600a5490611fe8565b90505f612531600261175d8461175d600754886120ce90919063ffffffff16565b90505f61254d8361175d600854876120ce90919063ffffffff16565b90505f6125698461175d600954886120ce90919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f81146125bd576040519150601f19603f3d011682016040523d82523d5f602084013e6125c2565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114612614576040519150601f19603f3d011682016040523d82523d5f602084013e612619565b606091505b505f9250508a1590506127145760185460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990869060c40160606040518083038185885af11580156126b2573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906126d79190612bd1565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff19169055505050505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215612770575f5ffd5b5035919050565b6001600160a01b0381168114611282575f5ffd5b5f5f6040838503121561279c575f5ffd5b82356127a781612777565b946020939093013593505050565b803580151581146127c4575f5ffd5b919050565b5f602082840312156127d9575f5ffd5b610e71826127b5565b5f5f604083850312156127f3575f5ffd5b50508035926020909101359150565b5f60208284031215612812575f5ffd5b8135610e7181612777565b5f5f5f6060848603121561282f575f5ffd5b833561283a81612777565b9250602084013561284a81612777565b929592945050506040919091013590565b5f5f6040838503121561286c575f5ffd5b612875836127b5565b9150602083013560ff8116811461288a575f5ffd5b809150509250929050565b5f5f83601f8401126128a5575f5ffd5b50813567ffffffffffffffff8111156128bc575f5ffd5b6020830191508360208260051b85010111156128d6575f5ffd5b9250929050565b5f5f5f5f606085870312156128f0575f5ffd5b84356128fb81612777565b9350602085013567ffffffffffffffff811115612916575f5ffd5b61292287828801612895565b9598909750949560400135949350505050565b5f5f60408385031215612946575f5ffd5b823561295181612777565b915061295f602084016127b5565b90509250929050565b5f5f5f5f5f6060868803121561297c575f5ffd5b853561298781612777565b9450602086013567ffffffffffffffff8111156129a2575f5ffd5b6129ae88828901612895565b909550935050604086013567ffffffffffffffff8111156129cd575f5ffd5b6129d988828901612895565b969995985093965092949392505050565b5f5f5f5f608085870312156129fd575f5ffd5b5050823594602084013594506040840135936060013592509050565b5f5f5f60608486031215612a2b575f5ffd5b8335612a3681612777565b92506020840135612a4681612777565b91506040840135612a5681612777565b809150509250925092565b5f5f60408385031215612a72575f5ffd5b8235612a7d81612777565b9150602083013561288a81612777565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610c3c57610c3c612ac2565b5f82612b0757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b80820180821115610c3c57610c3c612ac2565b81810381811115610c3c57610c3c612ac2565b5f60208284031215612b56575f5ffd5b8151610e7181612777565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612bb15783516001600160a01b0316835260209384019390920191600101612b8a565b50506001600160a01b039590951660608401525050608001529392505050565b5f5f5f60608486031215612be3575f5ffd5b505081516020830151604090930151909492935091905056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205012bd9b5558a5444f37d6cec7d8061f050c7b3408b6e12868bd42c4b0b84ff664736f6c634300081c0033
Deployed Bytecode Sourcemap
18258:16302:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;929:37;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;929:37:0;;;;;;;;19239:56;;;;;;;;;;;;;;;;20863:80;;;;;;;;;;-1:-1:-1;20935:5:0;;;;;;;;;;;;-1:-1:-1;;;20935:5:0;;;;20863:80;;;;;;;:::i;22183:177::-;;;;;;;;;;-1:-1:-1;22183:177:0;;;;;:::i;:::-;;:::i;:::-;;21287:216;;;;;;;;;;-1:-1:-1;21287:216:0;;;;;:::i;:::-;;:::i;:::-;;;1523:14:1;;1516:22;1498:41;;1486:2;1471:18;21287:216:0;1358:187:1;27753:94:0;;;;;;;;;;-1:-1:-1;27753:94:0;;;;;:::i;:::-;;:::i;33209:150::-;;;;;;;;;;-1:-1:-1;33209:150:0;;;;;:::i;:::-;;:::i;1151:39::-;;;;;;;;;;;;;;;;20593:88;;;;;;;;;;-1:-1:-1;20666:12:0;;20593:88;;31271:196;;;;;;;;;;-1:-1:-1;31271:196:0;;;;;:::i;:::-;;:::i;27284:214::-;;;;;;;;;;-1:-1:-1;27284:214:0;;;;;:::i;:::-;;:::i;1105:37::-;;;;;;;;;;;;;;;;32683:184;;;;;;;;;;-1:-1:-1;32683:184:0;;;;;:::i;:::-;;:::i;21805:370::-;;;;;;;;;;-1:-1:-1;21805:370:0;;;;;:::i;:::-;;:::i;32294:112::-;;;;;;;;;;-1:-1:-1;32294:112:0;;;;;:::i;:::-;;:::i;32875:142::-;;;;;;;;;;;;;:::i;27894:164::-;;;;;;;;;;-1:-1:-1;27894:164:0;;;;;:::i;:::-;;:::i;19302:53::-;;;;;;;;;;;;;;;;20687:80;;;;;;;;;;-1:-1:-1;539:1:0;20687:80;;;3530:4:1;3518:17;;;3500:36;;3488:2;3473:18;20687:80:0;3358:184:1;833:42:0;;;;;;;;;;;;;;;;34042:449;;;;;;;;;;-1:-1:-1;34042:449:0;;;;;:::i;:::-;;:::i;27506:216::-;;;;;;;;;;-1:-1:-1;27506:216:0;;;;;:::i;:::-;;:::i;884:38::-;;;;;;;;;;;;;;;;788;;;;;;;;;;;;;;;;18969;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4780:32:1;;;4762:51;;4750:2;4735:18;18969:38:0;4616:203:1;30295:131:0;;;;;;;;;;-1:-1:-1;30295:131:0;;;;;:::i;:::-;;:::i;21511:122::-;;;;;;;;;;-1:-1:-1;21511:122:0;;;;;:::i;:::-;;:::i;22546:97::-;;;;;;;;;;-1:-1:-1;22546:97:0;;;;;:::i;:::-;;:::i;31475:249::-;;;;;;;;;;-1:-1:-1;31475:249:0;;;;;:::i;:::-;;:::i;19056:37::-;;;;;;;;;;-1:-1:-1;19056:37:0;;;;;;;;;;;29900:121;;;;;;;;;;-1:-1:-1;29900:121:0;;;;;:::i;:::-;;:::i;18912:50::-;;;;;;;;;;;;;;;22806:231;;;;;;;;;;-1:-1:-1;22806:231:0;;;;;:::i;:::-;;:::i;19202:30::-;;;;;;;;;;-1:-1:-1;19202:30:0;;;;;;;;21035:105;;;;;;;;;;-1:-1:-1;21035:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;21119:18:0;21101:7;21119:18;;;:9;:18;;;;;;;21035:105;33386:648;;;;;;;;;;-1:-1:-1;33386:648:0;;;;;:::i;:::-;;:::i;8918:148::-;;;;;;;;;;;;;:::i;19100:39::-;;;;;;;;;;-1:-1:-1;19100:39:0;;;;;;;;;;;269:75;;;;;;;;;;-1:-1:-1;269:75:0;;;;-1:-1:-1;;;;;269:75:0;;;717:59;;;;;;;;;;;;;;;;607:56;;;;;;;;;;;;;;;;30624:486;;;;;;;;;;-1:-1:-1;30624:486:0;;;;;:::i;:::-;;:::i;20949:80::-;;;;;;;;;;;;;:::i;8275:79::-;;;;;;;;;;-1:-1:-1;8340:6:0;;-1:-1:-1;;;;;8340:6:0;8275:79;;351:69;;;;;;;;;;-1:-1:-1;351:69:0;;;;-1:-1:-1;;;;;351:69:0;;;20773:84;;;;;;;;;;-1:-1:-1;20847:7:0;;;;;;;;;;;;-1:-1:-1;;;20847:7:0;;;;20773:84;;9940:305;;;;;;;;;;;;;:::i;21641:156::-;;;;;;;;;;-1:-1:-1;21641:156:0;;;;;:::i;:::-;;:::i;9473:89::-;;;;;;;;;;-1:-1:-1;9545:9:0;;9473:89;;22366:172;;;;;;;;;;-1:-1:-1;22366:172:0;;;;;:::i;:::-;;:::i;18783:36::-;;;;;;;;;;-1:-1:-1;18783:36:0;;;;-1:-1:-1;;;;;18783:36:0;;;33025:176;;;;;;;;;;-1:-1:-1;33025:176:0;;;;;:::i;:::-;;:::i;31732:518::-;;;;;;;;;;-1:-1:-1;31732:518:0;;;;;:::i;:::-;;:::i;31118:96::-;;;;;;;;;;-1:-1:-1;31118:96:0;;;;;:::i;:::-;;:::i;30029:121::-;;;;;;;;;;-1:-1:-1;30029:121:0;;;;;:::i;:::-;;:::i;9638:226::-;;;;;;;;;;-1:-1:-1;9638:226:0;;;;;:::i;:::-;;:::i;21146:133::-;;;;;;;;;;-1:-1:-1;21146:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;21248:19:0;;;21230:7;21248:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;21146:133;1017:79;;;;;;;;;;;;;;;;32414:221;;;;;;;;;;-1:-1:-1;32414:221:0;;;;;:::i;:::-;;:::i;30528:88::-;;;;;;;;;;-1:-1:-1;30528:88:0;;;;;:::i;:::-;;:::i;9221:244::-;;;;;;;;;;-1:-1:-1;9221:244:0;;;;;:::i;:::-;;:::i;973:37::-;;;;;;;;;;;;;;;;30158:129;;;;;;;;;;-1:-1:-1;30158:129:0;;;;;:::i;:::-;;:::i;19016:31::-;;;;;;;;;;-1:-1:-1;19016:31:0;;;;;;;;22183:177;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;;;;;;;;;22348:4:::1;22320:23;22305:12;;:38;;;;:::i;:::-;22304:48;;;;:::i;:::-;22286:15;:66:::0;-1:-1:-1;22183:177:0:o;21287:216::-;21391:10;21362:4;21379:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;21379:32:0;;;;;;;;;;:41;;;21436:37;21362:4;;21379:32;;21436:37;;;;21414:6;160:25:1;;148:2;133:18;;14:177;21436:37:0;;;;;;;;-1:-1:-1;21491:4:0;21287:216;;;;;:::o;27753:94::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;27818:11:::1;:21:::0;;-1:-1:-1;;27818:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27753:94::o;33209:150::-;33289:4;33345:6;33313:29;33333:8;33313:19;:29::i;:::-;:38;;33209:150;-1:-1:-1;;;33209:150:0:o;31271:196::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;31367:9:::1;::::0;;-1:-1:-1;;;;;31367:9:0;;::::1;31380:5;31355:22:::0;;;:11:::1;:22;::::0;;;;;:30;;-1:-1:-1;;31355:30:0;;::::1;::::0;;;31396:23;;;::::1;::::0;;;;;;:30;;;;::::1;::::0;::::1;::::0;;;31437:22;;-1:-1:-1;;;;;;31437:22:0::1;::::0;;::::1;::::0;;31271:196::o;27284:214::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;27369:17:::1;27429:15:::0;27389:21:::1;::::0;-1:-1:-1;;;;;27429:15:0::1;27421:69;27486:3;27455:28;27467:16:::0;27389:21;27455:28:::1;:::i;:::-;:34;;;;:::i;:::-;27421:69;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;;;;;;;;27358:140;27284:214:::0;:::o;32683:184::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;32782:15:::1;:25:::0;;;;32818:26:::1;:41:::0;32683:184::o;21805:370::-;-1:-1:-1;;;;;21925:19:0;;21905:4;21925:19;;;:11;:19;;;;;;;;21945:10;21925:31;;;;;;;;-1:-1:-1;;21925:52:0;21922:186;;22027:69;;;;;;;;;;;-1:-1:-1;;;22027:69:0;;;;;;;;-1:-1:-1;;;;;22027:19:0;;-1:-1:-1;22027:19:0;;;:11;:19;;;;;22047:10;22027:31;;;;;;;;;;:69;;22063:6;;22027:35;:69::i;:::-;-1:-1:-1;;;;;21993:19:0;;;;;;:11;:19;;;;;;;;22013:10;21993:31;;;;;;;:103;21922:186;22127:40;22141:6;22149:9;22160:6;22127:13;:40::i;:::-;22120:47;;21805:370;;;;;;:::o;32294:112::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;32375:13:::1;:23:::0;32294:112::o;32875:142::-;33003:4;;-1:-1:-1;;;;;33003:4:0;32928:7;21119:18;;;:9;:18;;;;;;32955:54;;32982:4;;-1:-1:-1;;;;;32982:4:0;21101:7;21119:18;;;:9;:18;;;;;;32955:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;32948:61;;32875:142;:::o;27894:164::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;27978:18:::1;:28:::0;;-1:-1:-1;;28017:33:0;27978:28:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;28017:33:0;;;;;;27978:28:::1;28017:33:::0;;;::::1;::::0;;;::::1;;::::0;;27894:164::o;34042:449::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;34183:3:::1;34164:22:::0;::::1;34156:79;;;::::0;-1:-1:-1;;;34156:79:0;;8896:2:1;34156:79:0::1;::::0;::::1;8878:21:1::0;8935:2;8915:18;;;8908:30;8974:34;8954:18;;;8947:62;-1:-1:-1;;;9025:18:1;;;9018:43;9078:19;;34156:79:0::1;8694:409:1::0;34156:79:0::1;34248:12;34263:25;34272:9:::0;34263:6;:25:::1;:::i;:::-;34248:40;;34328:4;34309:15;34319:4;-1:-1:-1::0;;;;;21119:18:0;21101:7;21119:18;;;:9;:18;;;;;;;21035:105;34309:15:::1;:23;;34301:63;;;::::0;-1:-1:-1;;;34301:63:0;;9310:2:1;34301:63:0::1;::::0;::::1;9292:21:1::0;9349:2;9329:18;;;9322:30;9388:29;9368:18;;;9361:57;9435:18;;34301:63:0::1;9108:351:1::0;34301:63:0::1;34381:6;34377:107;34391:20:::0;;::::1;34377:107;;;34432:40;34447:4;34452:9;;34462:1;34452:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;34465:6;34432:14;:40::i;:::-;-1:-1:-1::0;34413:3:0::1;;34377:107;;;;34143:348;34042:449:::0;;;;:::o;27506:216::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;27618:21:::1;27658:10;27650:64;27710:3;27679:28;27691:16:::0;27618:21;27679:28:::1;:::i;30295:131::-:0;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30385:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;30385:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30295:131::o;21511:122::-;21566:4;21590:35;21598:7;-1:-1:-1;;21590:7:0;:35::i;22546:97::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;22614:12:::1;:21:::0;22546:97::o;31475:249::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;31586:5:::1;31567:15:::0;;-1:-1:-1;;;;;31567:15:0;;::::1;31555:28:::0;;:11:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;31555:36:0;;::::1;::::0;;;31602:23;;;::::1;::::0;;;;;;:30;;;::::1;31567:15:::0;31602:30;;::::1;::::0;;;31645:11:::1;:23:::0;;;;;;:30;;;;::::1;;::::0;;;31688:28;;-1:-1:-1;;;;;;31688:28:0::1;::::0;;::::1;::::0;;31475:249::o;29900:121::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29985:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;29985:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29900:121::o;22806:231::-;22941:10;22931:21;;;;:9;:21;;;;;;:30;-1:-1:-1;22928:102:0;;;23005:4;;22978:40;;22993:10;;-1:-1:-1;;;;;23005:4:0;23011:6;22978:14;:40::i;:::-;;22928:102;22806:231;:::o;33386:648::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;33539:3:::1;33520:22:::0;::::1;33512:79;;;::::0;-1:-1:-1;;;33512:79:0;;9798:2:1;33512:79:0::1;::::0;::::1;9780:21:1::0;9837:2;9817:18;;;9810:30;9876:34;9856:18;;;9849:62;-1:-1:-1;;;9927:18:1;;;9920:43;9980:19;;33512:79:0::1;9596:409:1::0;33512:79:0::1;33610:33:::0;;::::1;33602:85;;;::::0;-1:-1:-1;;;33602:85:0;;10212:2:1;33602:85:0::1;::::0;::::1;10194:21:1::0;10251:2;10231:18;;;10224:30;10290:34;10270:18;;;10263:62;-1:-1:-1;;;10341:18:1;;;10334:38;10389:19;;33602:85:0::1;10010:404:1::0;33602:85:0::1;33700:12;::::0;33729:90:::1;33743:20:::0;;::::1;33729:90;;;33798:6;;33805:1;33798:9;;;;;;;:::i;:::-;;;;;;;33791:4;:16;;;;:::i;:::-;33784:23:::0;-1:-1:-1;33765:3:0::1;;33729:90;;;;33858:4;33839:15;33849:4;-1:-1:-1::0;;;;;21119:18:0;21101:7;21119:18;;;:9;:18;;;;;;;21035:105;33839:15:::1;:23;;33831:63;;;::::0;-1:-1:-1;;;33831:63:0;;9310:2:1;33831:63:0::1;::::0;::::1;9292:21:1::0;9349:2;9329:18;;;9322:30;9388:29;9368:18;;;9361:57;9435:18;;33831:63:0::1;9108:351:1::0;33831:63:0::1;33911:6;33907:110;33921:20:::0;;::::1;33907:110;;;33962:43;33977:4;33982:9;;33992:1;33982:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;33995:6;;34002:1;33995:9;;;;;;;:::i;:::-;;;;;;;33962:14;:43::i;:::-;-1:-1:-1::0;33943:3:0::1;;33907:110;;;;33499:535;33386:648:::0;;;;;:::o;8918:148::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;9009:6:::1;::::0;8988:40:::1;::::0;9025:1:::1;::::0;-1:-1:-1;;;;;9009:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;8988:40:0;9025:1;;8988:40:::1;9039:6;:19:::0;;-1:-1:-1;;;;;;9039:19:0::1;::::0;;8918:148::o;30624:486::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;30784:9:::1;:25:::0;;;30820:13:::1;:36:::0;;;30867:15:::1;:37:::0;;;30930:64:::1;30885:19:::0;30930:39:::1;30796:13:::0;30836:20;30930:17:::1;:39::i;:::-;:43:::0;::::1;:64::i;:::-;30915:12;:79:::0;;;31005:14:::1;:32:::0;;;31071:2:::1;-1:-1:-1::0;31048:54:0::1;;;::::0;-1:-1:-1;;;31048:54:0;;10751:2:1;31048:54:0::1;::::0;::::1;10733:21:1::0;10790:2;10770:18;;;10763:30;10829:26;10809:18;;;10802:54;10873:18;;31048:54:0::1;10549:348:1::0;31048:54:0::1;30624:486:::0;;;;:::o;20949:80::-;21001:7;21019;8340:6;;-1:-1:-1;;;;;8340:6:0;;8275:79;9940:305;9992:14;;-1:-1:-1;;;;;9992:14:0;10010:10;9992:28;9984:76;;;;-1:-1:-1;;;9984:76:0;;11104:2:1;9984:76:0;;;11086:21:1;11143:2;11123:18;;;11116:30;11182:34;11162:18;;;11155:62;-1:-1:-1;;;11233:18:1;;;11226:33;11276:19;;9984:76:0;10902:399:1;9984:76:0;10097:9;;10079:15;:27;10071:72;;;;-1:-1:-1;;;10071:72:0;;11508:2:1;10071:72:0;;;11490:21:1;11547:2;11527:18;;;11520:30;11586:33;11566:18;;;11559:61;11637:18;;10071:72:0;11306:355:1;10071:72:0;10188:14;;10180:6;;10159:44;;-1:-1:-1;;;;;10188:14:0;;;;10180:6;;;;-1:-1:-1;;;;;;;;;;;10159:44:0;10188:14;;10159:44;10223:14;;10214:6;:23;;-1:-1:-1;;;;;;10214:23:0;-1:-1:-1;;;;;10223:14:0;;;10214:23;;;;;;9940:305::o;21641:156::-;21721:4;21745:44;21759:10;21771:9;21782:6;21745:13;:44::i;22366:172::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;22526:4:::1;22497:24;22482:12;;:39;;;;:::i;:::-;22481:49;;;;:::i;:::-;22466:12;:64:::0;-1:-1:-1;22366:172:0:o;33025:176::-;33093:7;33120:73;33170:22;:20;:22::i;:::-;33120:45;33133:31;33162:1;33133:24;33143:13;-1:-1:-1;;;;;21119:18:0;21101:7;21119:18;;;:9;:18;;;;;;;21035:105;33133:24;:28;;:31::i;:::-;33120:8;;:12;:45::i;:::-;:49;;:73::i;31732:518::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;31888:9:::1;::::0;;-1:-1:-1;;;;;31888:9:0;;::::1;31901:5;31876:22:::0;;;:11:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;31876:30:0;;::::1;::::0;;;31917:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;31973:15;;;::::1;31961:28:::0;;;;;:36;;;::::1;::::0;;32008:32;;::::1;::::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;32060:11:::1;:32:::0;;;;;:39;;;;::::1;::::0;::::1;::::0;;;32112:21:::1;:46:::0;;;;;::::1;-1:-1:-1::0;;;;;;32112:46:0;;::::1;;::::0;;;32169:37;;;::::1;::::0;;::::1;::::0;;;32217:25;;;;::::1;;::::0;;31732:518::o;31118:96::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;31186:11:::1;:20:::0;31118:96::o;30029:121::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30114:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;30114:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30029:121::o;9638:226::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;9719:6:::1;::::0;;9702:14:::1;:23:::0;;-1:-1:-1;;;;;;9702:23:0;;::::1;-1:-1:-1::0;;;;;9719:6:0;::::1;9702:23;::::0;;;9736:19:::1;::::0;;9778:22:::1;9796:4:::0;9778:15:::1;:22;:::i;:::-;9766:9;:34:::0;9837:6:::1;::::0;9816:40:::1;::::0;9853:1:::1;::::0;-1:-1:-1;;;;;9837:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;9816:40:0;9853:1;;9816:40:::1;9638:226:::0;:::o;32414:221::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;32499:13:::1;;32489:7;:23;32486:134;;;32542:13;::::0;32529:10:::1;:26:::0;22806:231;:::o;32486:134::-:1;32588:10;:20:::0;32414:221::o;30528:88::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;30594:8:::1;:14:::0;30528:88::o;9221:244::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9310:22:0;::::1;9302:73;;;::::0;-1:-1:-1;;;9302:73:0;;11868:2:1;9302:73:0::1;::::0;::::1;11850:21:1::0;11907:2;11887:18;;;11880:30;11946:34;11926:18;;;11919:62;-1:-1:-1;;;11997:18:1;;;11990:36;12043:19;;9302:73:0::1;11666:402:1::0;9302:73:0::1;9412:6;::::0;9391:38:::1;::::0;-1:-1:-1;;;;;9391:38:0;;::::1;::::0;9412:6:::1;::::0;-1:-1:-1;;;;;;;;;;;9391:38:0;9412:6:::1;::::0;9391:38:::1;9440:6;:17:::0;;-1:-1:-1;;;;;;9440:17:0::1;-1:-1:-1::0;;;;;9440:17:0;;;::::1;::::0;;;::::1;::::0;;9221:244::o;30158:129::-;8487:6;;-1:-1:-1;;;;;8487:6:0;6939:10;8487:22;8479:67;;;;-1:-1:-1;;;8479:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30247:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;30247:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30158:129::o;3947:240::-;4067:7;4128:12;4120:6;;;;4112:29;;;;-1:-1:-1;;;4112:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;4163:5:0;;;3947:240::o;23112:2380::-;23224:6;;23204:4;;23224:6;;23221:63;;;23240:41;23255:6;23263:9;23274:6;23240:14;:41::i;:::-;23233:48;;;;23221:63;8340:6;;-1:-1:-1;;;;;23299:17:0;;;8340:6;;23299:17;;;;:41;;-1:-1:-1;8340:6:0;;-1:-1:-1;;;;;23320:20:0;;;8340:6;;23320:20;;23299:41;23296:115;;;23364:11;;;;23356:43;;;;-1:-1:-1;;;23356:43:0;;12275:2:1;23356:43:0;;;12257:21:1;12314:2;12294:18;;;12287:30;-1:-1:-1;;;12333:18:1;;;12326:50;12393:18;;23356:43:0;12073:344:1;23356:43:0;23451:13;-1:-1:-1;;;;;23438:26:0;;;;;;;23423:11;23495:26;;23438;23495:53;;;23535:13;-1:-1:-1;;;;;23525:23:0;:6;-1:-1:-1;;;;;23525:23:0;;;23495:53;23476:73;-1:-1:-1;;;;;;23566:26:0;;23587:4;23566:26;;;;:70;;-1:-1:-1;23631:4:0;;-1:-1:-1;;;;;23610:26:0;;;23631:4;;23610:26;;23566:70;:114;;;;;23667:13;-1:-1:-1;;;;;23654:26:0;:9;-1:-1:-1;;;;;23654:26:0;;;23566:114;:160;;;;-1:-1:-1;23711:15:0;;-1:-1:-1;;;;;23698:28:0;;;23711:15;;23698:28;;23566:160;:200;;;;-1:-1:-1;23757:9:0;;-1:-1:-1;;;;;23744:22:0;;;23757:9;;23744:22;;23566:200;:252;;;;-1:-1:-1;23797:21:0;;-1:-1:-1;;;;;23784:34:0;;;23797:21;;23784:34;;23566:252;23562:526;;;-1:-1:-1;;;;;21119:18:0;;23844;21119;;;:9;:18;;;;;;;;;23904:11;:22;;;;;;;;;23900:177;;23980:15;;23956:19;23969:6;23956:10;:19;:::i;:::-;23955:40;;23947:114;;;;-1:-1:-1;;;23947:114:0;;12624:2:1;23947:114:0;;;12606:21:1;12663:2;12643:18;;;12636:30;12702:34;12682:18;;;12675:62;12773:32;12753:18;;;12746:60;12823:19;;23947:114:0;12422:426:1;23947:114:0;23829:259;23562:526;24114:13;-1:-1:-1;;;;;24104:23:0;:6;-1:-1:-1;;;;;24104:23:0;;:58;;;;-1:-1:-1;24144:18:0;;;;;;;24104:58;:103;;;;-1:-1:-1;;;;;;24180:27:0;;;;;;:16;:27;;;;;;;;24179:28;24104:103;24100:317;;;-1:-1:-1;;;;;24241:24:0;;;;;;:13;:24;;;;;;24268:15;-1:-1:-1;24233:91:0;;;;-1:-1:-1;;;24233:91:0;;13055:2:1;24233:91:0;;;13037:21:1;13094:2;13074:18;;;13067:30;13133:34;13113:18;;;13106:62;-1:-1:-1;;;13184:18:1;;;13177:35;13229:19;;24233:91:0;12853:401:1;24233:91:0;24384:21;;24366:39;;24384:21;;;;;24366:15;:39;:::i;:::-;-1:-1:-1;;;;;24339:24:0;;;;;;:13;:24;;;;;:66;24100:317;-1:-1:-1;;;;;24639:26:0;;;;;;:15;:26;;;;;;;;24635:87;;24682:28;24695:6;24703;24682:12;:28::i;:::-;24781:53;;;;;;;;;;;-1:-1:-1;;;24781:53:0;;;;;;;;-1:-1:-1;;;;;24781:17:0;;-1:-1:-1;24781:17:0;;;:9;:17;;;;;;;;:53;;24803:6;;24781:21;:53::i;:::-;-1:-1:-1;;;;;24761:17:0;;;;;;:9;:17;;;;;:73;24872:6;25008:318;;;;25041:8;;:12;25038:100;;25091:31;25107:6;25115;25091:15;:31::i;:::-;25074:48;;25038:100;25008:318;;;-1:-1:-1;;;;;26099:19:0;;26074:4;26099:19;;;:11;:19;;;;;;;;26098:20;25187:64;;25245:6;25187:64;;;25211:31;25219:6;25227;25235;25211:7;:31::i;:::-;25170:81;;25283:16;:14;:16::i;:::-;25280:35;;;25302:10;:8;:10::i;:::-;-1:-1:-1;;;;;25361:20:0;;;;;;:9;:20;;;;;;:40;;25386:14;25361:24;:40::i;:::-;-1:-1:-1;;;;;25338:20:0;;;;;;;:9;:20;;;;;;;:63;;;;25419:43;;;;;;-1:-1:-1;;;;;;;;;;;25419:43:0;;;25447:14;160:25:1;;148:2;133:18;;14:177;25419:43:0;;;;;;;;-1:-1:-1;25480:4:0;;23112:2380;-1:-1:-1;;;;;;23112:2380:0:o;2049:98::-;2107:7;2134:5;2138:1;2134;:5;:::i;25500:330::-;25630:53;;;;;;;;;;;-1:-1:-1;;;25630:53:0;;;;;;;;-1:-1:-1;;;;;25630:17:0;;25593:4;25630:17;;;:9;:17;;;;;;;:53;;25652:6;;25630:21;:53::i;:::-;-1:-1:-1;;;;;25610:17:0;;;;;;;:9;:17;;;;;;:73;;;;25717:20;;;;;;;:32;;25742:6;25717:24;:32::i;:::-;-1:-1:-1;;;;;25694:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25765:35;;;;;;-1:-1:-1;;;;;;;;;;;25765:35:0;;;25793:6;160:25:1;;148:2;133:18;;14:177;25765:35:0;;;;;;;;-1:-1:-1;25818:4:0;25500:330;;;;;:::o;1668:98::-;1726:7;1753:5;1757:1;1753;:5;:::i;2406:98::-;2464:7;2491:5;2495:1;2491;:5;:::i;2805:98::-;2863:7;2890:5;2894:1;2890;:5;:::i;25838:166::-;25935:12;;25925:6;:22;;:49;;;-1:-1:-1;;;;;;25951:23:0;;;;;;:15;:23;;;;;;;;25925:49;25917:79;;;;-1:-1:-1;;;25917:79:0;;13594:2:1;25917:79:0;;;13576:21:1;13633:2;13613:18;;;13606:30;-1:-1:-1;;;13652:18:1;;;13645:47;13709:18;;25917:79:0;13392:341:1;26170:406:0;26245:7;26267:17;26287:8;;26267:28;;26306:17;26326:56;26361:14;;26378:3;26361:20;;;;:::i;:::-;26326:30;26352:3;26326:21;:6;26337:9;26326:10;:21::i;:56::-;26448:4;26430:24;;;;:9;:24;;;;;;26306:76;;-1:-1:-1;26430:39:0;;26306:76;26430:28;:39::i;:::-;26421:4;26403:24;;;;:9;:24;;;;;;;:66;;;;26485:42;;-1:-1:-1;;;;;26485:42:0;;;-1:-1:-1;;;;;;;;;;;26485:42:0;;;26517:9;160:25:1;;148:2;133:18;;14:177;26485:42:0;;;;;;;;26547:21;:6;26558:9;26547:10;:21::i;:::-;26540:28;26170:406;-1:-1:-1;;;;;26170:406:0:o;26584:438::-;26664:7;26686:17;26706:6;:35;;26730:11;;26706:35;;;26715:12;;26706:35;26686:55;;26752:17;26772:56;26807:14;;26824:3;26807:20;;;;:::i;:::-;26772:30;26798:3;26772:21;:6;26783:9;26772:10;:21::i;:56::-;26894:4;26876:24;;;;:9;:24;;;;;;26752:76;;-1:-1:-1;26876:39:0;;26752:76;26876:28;:39::i;:::-;26867:4;26849:24;;;;:9;:24;;;;;;;:66;;;;26931:42;;-1:-1:-1;;;;;26931:42:0;;;-1:-1:-1;;;;;;;;;;;26931:42:0;;;26963:9;160:25:1;;148:2;133:18;;14:177;26931:42:0;;;;;;;;26993:21;:6;27004:9;26993:10;:21::i;:::-;26986:28;26584:438;-1:-1:-1;;;;;;26584:438:0:o;27070:206::-;27119:4;27143:10;-1:-1:-1;;;;;27157:13:0;27143:27;;;;;:47;;-1:-1:-1;27184:6:0;;;;27183:7;27143:47;:71;;;;-1:-1:-1;27203:11:0;;;;27143:71;:125;;;;-1:-1:-1;;27255:13:0;;27245:4;27227:24;;;;:9;:24;;;;;;:41;;;27070:206::o;28066:1777::-;19404:6;:13;;-1:-1:-1;;19404:13:0;19413:4;19404:13;;;28161:15:::1;::::0;28178:26:::1;::::0;19404:6;;28145:60:::1;::::0;:15:::1;:60::i;:::-;:76;;28212:9;;28145:76;;;28208:1;28145:76;28115:106;;28232:23;28258:60;28316:1;28258:53;28298:12;;28258:35;28273:19;28258:10;;:14;;:35;;;;:::i;:60::-;28232:86;;28329:20;28352:31;28367:15;28352:10;;:14;;:31;;;;:::i;:::-;28420:16;::::0;;28434:1:::1;28420:16:::0;;;;;::::1;::::0;;28329:54;;-1:-1:-1;28396:21:0::1;::::0;28420:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;28420:16:0::1;28396:40;;28465:4;28447;28452:1;28447:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;28447:23:0::1;;;-1:-1:-1::0;;;;;28447:23:0::1;;;::::0;::::1;28491:14;-1:-1:-1::0;;;;;28491:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28481:4;28486:1;28481:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28481:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;28583:196:::1;::::0;-1:-1:-1;;;28583:196:0;;28549:21:::1;::::0;28583:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;28663:12;;28525:21:::1;::::0;28706:4;;28733::::1;::::0;28753:15:::1;::::0;28583:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28792:17;28812:40;28838:13;28812:21;:25;;:40;;;;:::i;:::-;28792:60:::0;-1:-1:-1;28865:19:0::1;28887:44;28904:26;:19:::0;28928:1:::1;28904:23;:26::i;:::-;28887:12;::::0;;:16:::1;:44::i;:::-;28865:66;;28944:26;28973:48;29019:1;28973:41;29002:11;28973:24;28987:9;;28973;:13;;:24;;;;:::i;:48::-;28944:77;;29032:26;29061:45;29094:11;29061:28;29075:13;;29061:9;:13;;:28;;;;:::i;:45::-;29032:74;;29117:25;29145:47;29180:11;29145:30;29159:15;;29145:9;:13;;:30;;;;:::i;:47::-;29206:15;29234::::0;;29226:72:::1;::::0;29117:75;;-1:-1:-1;29206:15:0;;-1:-1:-1;;;;;29234:15:0;;::::1;::::0;29288:5:::1;::::0;29263:18;;29206:15;29226:72;29206:15;29226:72;29263:18;29234:15;29288:5;29226:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;29333:9:0::1;::::0;29325:65:::1;::::0;29205:93;;-1:-1:-1;;;;;;29333:9:0::1;::::0;29380:5:::1;::::0;29356:17;;29325:65:::1;::::0;;;29356:17;29333:9;29380:5;29325:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29448:5:0::1;::::0;-1:-1:-1;;29469:19:0;;;-1:-1:-1;29466:370:0::1;;29686:21;::::0;29504:252:::1;::::0;-1:-1:-1;;;29504:252:0;;29588:4:::1;29504:252;::::0;::::1;15603:51:1::0;15670:18;;;15663:34;;;-1:-1:-1;15713:18:1;;;15706:34;;;15756:18;;;15749:34;-1:-1:-1;;;;;29686:21:0;;::::1;15799:19:1::0;;;15792:61;29726:15:0::1;15869:19:1::0;;;15862:35;29504:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;29542:18;;15575:19:1;;29504:252:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29776:48:0::1;::::0;;16543:25:1;;;16599:2;16584:18;;16577:34;;;29776:48:0::1;::::0;-1:-1:-1;16516:18:1;29776:48:0::1;;;;;;;29466:370;-1:-1:-1::0;;19422:6:0;:14;;-1:-1:-1;;19422:14:0;;;-1:-1:-1;;;;;;;;;28066:1777:0:o;196:418:1:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:226::-;678:6;731:2;719:9;710:7;706:23;702:32;699:52;;;747:1;744;737:12;699:52;-1:-1:-1;792:23:1;;619:226;-1:-1:-1;619:226:1:o;850:131::-;-1:-1:-1;;;;;925:31:1;;915:42;;905:70;;971:1;968;961:12;986:367;1054:6;1062;1115:2;1103:9;1094:7;1090:23;1086:32;1083:52;;;1131:1;1128;1121:12;1083:52;1170:9;1157:23;1189:31;1214:5;1189:31;:::i;:::-;1239:5;1317:2;1302:18;;;;1289:32;;-1:-1:-1;;;986:367:1:o;1550:160::-;1615:20;;1671:13;;1664:21;1654:32;;1644:60;;1700:1;1697;1690:12;1644:60;1550:160;;;:::o;1715:180::-;1771:6;1824:2;1812:9;1803:7;1799:23;1795:32;1792:52;;;1840:1;1837;1830:12;1792:52;1863:26;1879:9;1863:26;:::i;1900:346::-;1968:6;1976;2029:2;2017:9;2008:7;2004:23;2000:32;1997:52;;;2045:1;2042;2035:12;1997:52;-1:-1:-1;;2090:23:1;;;2210:2;2195:18;;;2182:32;;-1:-1:-1;1900:346:1:o;2251:247::-;2310:6;2363:2;2351:9;2342:7;2338:23;2334:32;2331:52;;;2379:1;2376;2369:12;2331:52;2418:9;2405:23;2437:31;2462:5;2437:31;:::i;2503:508::-;2580:6;2588;2596;2649:2;2637:9;2628:7;2624:23;2620:32;2617:52;;;2665:1;2662;2655:12;2617:52;2704:9;2691:23;2723:31;2748:5;2723:31;:::i;:::-;2773:5;-1:-1:-1;2830:2:1;2815:18;;2802:32;2843:33;2802:32;2843:33;:::i;:::-;2503:508;;2895:7;;-1:-1:-1;;;2975:2:1;2960:18;;;;2947:32;;2503:508::o;3016:337::-;3079:6;3087;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;3179:26;3195:9;3179:26;:::i;:::-;3169:36;;3255:2;3244:9;3240:18;3227:32;3299:4;3292:5;3288:16;3281:5;3278:27;3268:55;;3319:1;3316;3309:12;3268:55;3342:5;3332:15;;;3016:337;;;;;:::o;3547:367::-;3610:8;3620:6;3674:3;3667:4;3659:6;3655:17;3651:27;3641:55;;3692:1;3689;3682:12;3641:55;-1:-1:-1;3715:20:1;;3758:18;3747:30;;3744:50;;;3790:1;3787;3780:12;3744:50;3827:4;3819:6;3815:17;3803:29;;3887:3;3880:4;3870:6;3867:1;3863:14;3855:6;3851:27;3847:38;3844:47;3841:67;;;3904:1;3901;3894:12;3841:67;3547:367;;;;;:::o;3919:692::-;4023:6;4031;4039;4047;4100:2;4088:9;4079:7;4075:23;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4155:9;4142:23;4174:31;4199:5;4174:31;:::i;:::-;4224:5;-1:-1:-1;4280:2:1;4265:18;;4252:32;4307:18;4296:30;;4293:50;;;4339:1;4336;4329:12;4293:50;4378:70;4440:7;4431:6;4420:9;4416:22;4378:70;:::i;:::-;3919:692;;4467:8;;-1:-1:-1;4352:96:1;;4575:2;4560:18;4547:32;;3919:692;-1:-1:-1;;;;3919:692:1:o;4824:315::-;4889:6;4897;4950:2;4938:9;4929:7;4925:23;4921:32;4918:52;;;4966:1;4963;4956:12;4918:52;5005:9;4992:23;5024:31;5049:5;5024:31;:::i;:::-;5074:5;-1:-1:-1;5098:35:1;5129:2;5114:18;;5098:35;:::i;:::-;5088:45;;4824:315;;;;;:::o;5379:903::-;5510:6;5518;5526;5534;5542;5595:2;5583:9;5574:7;5570:23;5566:32;5563:52;;;5611:1;5608;5601:12;5563:52;5650:9;5637:23;5669:31;5694:5;5669:31;:::i;:::-;5719:5;-1:-1:-1;5775:2:1;5760:18;;5747:32;5802:18;5791:30;;5788:50;;;5834:1;5831;5824:12;5788:50;5873:70;5935:7;5926:6;5915:9;5911:22;5873:70;:::i;:::-;5962:8;;-1:-1:-1;5847:96:1;-1:-1:-1;;6050:2:1;6035:18;;6022:32;6079:18;6066:32;;6063:52;;;6111:1;6108;6101:12;6063:52;6150:72;6214:7;6203:8;6192:9;6188:24;6150:72;:::i;:::-;5379:903;;;;-1:-1:-1;5379:903:1;;-1:-1:-1;6241:8:1;;6124:98;5379:903;-1:-1:-1;;;5379:903:1:o;6287:587::-;6373:6;6381;6389;6397;6450:3;6438:9;6429:7;6425:23;6421:33;6418:53;;;6467:1;6464;6457:12;6418:53;-1:-1:-1;;6512:23:1;;;6632:2;6617:18;;6604:32;;-1:-1:-1;6735:2:1;6720:18;;6707:32;;6838:2;6823:18;6810:32;;-1:-1:-1;6287:587:1;-1:-1:-1;6287:587:1:o;6879:529::-;6956:6;6964;6972;7025:2;7013:9;7004:7;7000:23;6996:32;6993:52;;;7041:1;7038;7031:12;6993:52;7080:9;7067:23;7099:31;7124:5;7099:31;:::i;:::-;7149:5;-1:-1:-1;7206:2:1;7191:18;;7178:32;7219:33;7178:32;7219:33;:::i;:::-;7271:7;-1:-1:-1;7330:2:1;7315:18;;7302:32;7343:33;7302:32;7343:33;:::i;:::-;7395:7;7385:17;;;6879:529;;;;;:::o;7413:388::-;7481:6;7489;7542:2;7530:9;7521:7;7517:23;7513:32;7510:52;;;7558:1;7555;7548:12;7510:52;7597:9;7584:23;7616:31;7641:5;7616:31;:::i;:::-;7666:5;-1:-1:-1;7723:2:1;7708:18;;7695:32;7736:33;7695:32;7736:33;:::i;7806:356::-;8008:2;7990:21;;;8027:18;;;8020:30;8086:34;8081:2;8066:18;;8059:62;8153:2;8138:18;;7806:356::o;8167:127::-;8228:10;8223:3;8219:20;8216:1;8209:31;8259:4;8256:1;8249:15;8283:4;8280:1;8273:15;8299:168;8372:9;;;8403;;8420:15;;;8414:22;;8400:37;8390:71;;8441:18;;:::i;8472:217::-;8512:1;8538;8528:132;;8582:10;8577:3;8573:20;8570:1;8563:31;8617:4;8614:1;8607:15;8645:4;8642:1;8635:15;8528:132;-1:-1:-1;8674:9:1;;8472:217::o;9464:127::-;9525:10;9520:3;9516:20;9513:1;9506:31;9556:4;9553:1;9546:15;9580:4;9577:1;9570:15;10419:125;10484:9;;;10505:10;;;10502:36;;;10518:18;;:::i;13259:128::-;13326:9;;;13347:11;;;13344:37;;;13361:18;;:::i;13870:251::-;13940:6;13993:2;13981:9;13972:7;13968:23;13964:32;13961:52;;;14009:1;14006;13999:12;13961:52;14041:9;14035:16;14060:31;14085:5;14060:31;:::i;14126:959::-;14388:4;14436:3;14425:9;14421:19;14467:6;14456:9;14449:25;14510:6;14505:2;14494:9;14490:18;14483:34;14553:3;14548:2;14537:9;14533:18;14526:31;14577:6;14612;14606:13;14643:6;14635;14628:22;14681:3;14670:9;14666:19;14659:26;;14720:2;14712:6;14708:15;14694:29;;14741:1;14751:195;14765:6;14762:1;14759:13;14751:195;;;14830:13;;-1:-1:-1;;;;;14826:39:1;14814:52;;14895:2;14921:15;;;;14886:12;;;;14862:1;14780:9;14751:195;;;-1:-1:-1;;;;;;;15002:32:1;;;;14997:2;14982:18;;14975:60;-1:-1:-1;;15066:3:1;15051:19;15044:35;14963:3;14126:959;-1:-1:-1;;;14126:959:1:o;15908:456::-;15996:6;16004;16012;16065:2;16053:9;16044:7;16040:23;16036:32;16033:52;;;16081:1;16078;16071:12;16033:52;-1:-1:-1;;16126:16:1;;16232:2;16217:18;;16211:25;16328:2;16313:18;;;16307:25;16126:16;;16211:25;;-1:-1:-1;16307:25:1;15908:456;-1:-1:-1;15908:456:1:o
Swarm Source
ipfs://5012bd9b5558a5444f37d6cec7d8061f050c7b3408b6e12868bd42c4b0b84ff6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.