ERC-20
Overview
Max Total Supply
1,000,000,000 DCA
Holders
43
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.913924284737831164 DCAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DCA
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-18 */ /** Twitter: https://twitter.com/DiCaprioClubErc/ Telegram: https://t.me/DiCaprioPortal */ pragma solidity >=0.8.10 >=0.8.0 <0.9.0; // SPDX-License-Identifier: UNLICENSED abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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 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 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 IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { 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; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } 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; } contract DCA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Fees distribution uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // Bots Map mapping (address => bool) private _bots; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("DiCaprio's Club", "DCA") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 4; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 4; uint256 _sellDevFee = 0; buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; uint256 totalSupply = 1_000_000_000 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 30 / 1000; // 3% maxWallet swapTokensAtAmount = (totalSupply * 1) / 1000; // 0.1% swap wallet marketingWallet = address(0x7869B909d3bAA0B18710878eD0384B5e693A2586); // set as marketing wallet devWallet = address(0x7869B909d3bAA0B18710878eD0384B5e693A2586); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingWallet, true); excludeFromFees(devWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(marketingWallet, true); excludeFromMaxTransaction(devWallet, true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; launchedAt = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _buyMarketingFee, uint256 _buyDevFee ) external onlyOwner { require(_buyMarketingFee + _buyDevFee <= 15, "Must keep fees at 15% or less"); buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; } function updateSellFees( uint256 _sellMarketingFee, uint256 _sellDevFee ) external onlyOwner { require(_sellMarketingFee + _sellDevFee <= 15, "Must keep fees at 15% or less"); sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function addBots(address[] memory accounts) public onlyOwner { for (uint i = 0; i < accounts.length; i++) { _bots[accounts[i]] = true; } } function removeBots(address[] memory accounts) public onlyOwner { for (uint i = 0; i < accounts.length; i++) { _bots[accounts[i]] = false; } } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_bots[to] && !_bots[from], "You have been blacklisted from transfering tokens"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && from != marketingWallet && to != marketingWallet && from != devWallet && to != devWallet && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } //Convert token fees into ETH function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance - ethForMarketing; tokensForMarketing = 0; tokensForDev = 0; (success,) = address(devWallet).call{value: ethForDev}(""); (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805462ffffff191660011790553480156200002057600080fd5b506040518060400160405280600f81526020016e2234a1b0b83934b793b99021b63ab160891b8152506040518060400160405280600381526020016244434160e81b8152508160039081620000769190620007e5565b506004620000858282620007e5565b50505060006200009a6200045860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d6200010a8160016200045c565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017b9190620008b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ef9190620008b1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002639190620008b1565b6001600160a01b031660a08190526200027e9060016200045c565b60a0516200028e906001620004d6565b6004600d8190556000600e8190558181620002aa8183620008f2565b600c5560108290556011819055620002c38183620008f2565b600f556b033b2e3c9fd0803ce80000006103e8620002e382601462000908565b620002ef919062000922565b6008556103e86200030282601e62000908565b6200030e919062000922565b600a556103e86200032182600162000908565b6200032d919062000922565b60095560068054737869b909d3baa0b18710878ed0384b5e693a25866001600160a01b03199182168117909255600780549091169091179055620003856200037d6005546001600160a01b031690565b60016200052a565b620003923060016200052a565b620003a161dead60016200052a565b600654620003ba906001600160a01b031660016200052a565b600754620003d3906001600160a01b031660016200052a565b620003f2620003ea6005546001600160a01b031690565b60016200045c565b620003ff3060016200045c565b6200040e61dead60016200045c565b60065462000427906001600160a01b031660016200045c565b60075462000440906001600160a01b031660016200045c565b6200044c3382620005d4565b50505050505062000945565b3390565b6005546001600160a01b03163314620004ab5760405162461bcd60e51b81526020600482018190526024820152600080516020620031ce83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005755760405162461bcd60e51b81526020600482018190526024820152600080516020620031ce8339815191526044820152606401620004a2565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200062c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004a2565b6200064881600254620006d560201b620013931790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200067b91839062001393620006d5821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b600080620006e48385620008f2565b905083811015620007385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004a2565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200076c57607f821691505b6020821081036200078d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006d057600081815260208120601f850160051c81016020861015620007bc5750805b601f850160051c820191505b81811015620007dd57828155600101620007c8565b505050505050565b81516001600160401b0381111562000801576200080162000741565b620008198162000812845462000757565b8462000793565b602080601f831160018114620008515760008415620008385750858301515b600019600386901b1c1916600185901b178555620007dd565b600085815260208120601f198616915b82811015620008825788860151825594840194600190910190840162000861565b5085821015620008a15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008c457600080fd5b81516001600160a01b03811681146200073857600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156200073b576200073b620008dc565b80820281158282048414176200073b576200073b620008dc565b6000826200094057634e487b7160e01b600052601260045260246000fd5b500490565b60805160a051612847620009876000396000818161046a0152610e62015260008181610357015281816120f2015281816121ab01526121e701526128476000f3fe60806040526004361061028c5760003560e01c80637bce5a041161015a578063b62496f5116100c1578063d34628cc1161007a578063d34628cc146107d0578063d85ba063146107f0578063dd62ed3e14610806578063e2f456051461084c578063f2fde38b14610862578063f8b45b051461088257600080fd5b8063b62496f51461070b578063bbc0c7421461073b578063c02466681461075a578063c18bc1951461077a578063c8c8ebe41461079a578063d257b34f146107b057600080fd5b80639a7a23d6116101135780639a7a23d6146106695780639c3b4fdc146106895780639fccce321461069f578063a0d82dc5146106b5578063a457c2d7146106cb578063a9059cbb146106eb57600080fd5b80637bce5a04146105d55780638a8c523c146105eb5780638da5cb5b14610600578063921369131461061e578063924de9b71461063457806395d89b411461065457600080fd5b806339509351116101fe5780636c3bbfd7116101b75780636c3bbfd7146105155780636ddd17131461053557806370a0823114610555578063715018a61461058b578063751039fc146105a05780637571336a146105b557600080fd5b8063395093511461043857806349bd5a5e146104585780634a62bb651461048c5780634fbee193146104a657806366ca9b83146104df5780636a486a8e146104ff57600080fd5b806318160ddd1161025057806318160ddd146103915780631f3fed8f146103b0578063203e727e146103c657806323b872dd146103e657806327c8f83514610406578063313ce5671461041c57600080fd5b806302dbd8f81461029857806306fdde03146102ba578063095ea7b3146102e557806310d5de53146103155780631694505e1461034557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b33660046122cb565b610898565b005b3480156102c657600080fd5b506102cf610940565b6040516102dc91906122ed565b60405180910390f35b3480156102f157600080fd5b5061030561030036600461235e565b6109d2565b60405190151581526020016102dc565b34801561032157600080fd5b5061030561033036600461238a565b60166020526000908152604090205460ff1681565b34801561035157600080fd5b506103797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102dc565b34801561039d57600080fd5b506002545b6040519081526020016102dc565b3480156103bc57600080fd5b506103a260125481565b3480156103d257600080fd5b506102b86103e13660046123a7565b6109e9565b3480156103f257600080fd5b506103056104013660046123c0565b610ac6565b34801561041257600080fd5b5061037961dead81565b34801561042857600080fd5b50604051601281526020016102dc565b34801561044457600080fd5b5061030561045336600461235e565b610b2f565b34801561046457600080fd5b506103797f000000000000000000000000000000000000000000000000000000000000000081565b34801561049857600080fd5b50600b546103059060ff1681565b3480156104b257600080fd5b506103056104c136600461238a565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156104eb57600080fd5b506102b86104fa3660046122cb565b610b65565b34801561050b57600080fd5b506103a2600f5481565b34801561052157600080fd5b506102b8610530366004612417565b610c04565b34801561054157600080fd5b50600b546103059062010000900460ff1681565b34801561056157600080fd5b506103a261057036600461238a565b6001600160a01b031660009081526020819052604090205490565b34801561059757600080fd5b506102b8610c9a565b3480156105ac57600080fd5b50610305610d0e565b3480156105c157600080fd5b506102b86105d03660046124ec565b610d4b565b3480156105e157600080fd5b506103a2600d5481565b3480156105f757600080fd5b506102b8610da0565b34801561060c57600080fd5b506005546001600160a01b0316610379565b34801561062a57600080fd5b506103a260105481565b34801561064057600080fd5b506102b861064f366004612521565b610de1565b34801561066057600080fd5b506102cf610e27565b34801561067557600080fd5b506102b86106843660046124ec565b610e36565b34801561069557600080fd5b506103a2600e5481565b3480156106ab57600080fd5b506103a260135481565b3480156106c157600080fd5b506103a260115481565b3480156106d757600080fd5b506103056106e636600461235e565b610f09565b3480156106f757600080fd5b5061030561070636600461235e565b610f58565b34801561071757600080fd5b5061030561072636600461238a565b60186020526000908152604090205460ff1681565b34801561074757600080fd5b50600b5461030590610100900460ff1681565b34801561076657600080fd5b506102b86107753660046124ec565b610f65565b34801561078657600080fd5b506102b86107953660046123a7565b610fee565b3480156107a657600080fd5b506103a260085481565b3480156107bc57600080fd5b506103056107cb3660046123a7565b6110bf565b3480156107dc57600080fd5b506102b86107eb366004612417565b611216565b3480156107fc57600080fd5b506103a2600c5481565b34801561081257600080fd5b506103a261082136600461253c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561085857600080fd5b506103a260095481565b34801561086e57600080fd5b506102b861087d36600461238a565b6112a8565b34801561088e57600080fd5b506103a2600a5481565b6005546001600160a01b031633146108cb5760405162461bcd60e51b81526004016108c290612575565b60405180910390fd5b600f6108d782846125c0565b11156109255760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c65737300000060448201526064016108c2565b6010829055601181905561093981836125c0565b600f555050565b60606003805461094f906125d3565b80601f016020809104026020016040519081016040528092919081815260200182805461097b906125d3565b80156109c85780601f1061099d576101008083540402835291602001916109c8565b820191906000526020600020905b8154815290600101906020018083116109ab57829003601f168201915b5050505050905090565b60006109df3384846113f9565b5060015b92915050565b6005546001600160a01b03163314610a135760405162461bcd60e51b81526004016108c290612575565b670de0b6b3a76400006103e8610a2860025490565b610a3390600161260d565b610a3d9190612624565b610a479190612624565b811015610aae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016108c2565b610ac081670de0b6b3a764000061260d565b60085550565b6000610ad384848461151e565b610b258433610b20856040518060600160405280602881526020016127c5602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611cde565b6113f9565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109df918590610b209086611393565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b81526004016108c290612575565b600f610b9b82846125c0565b1115610be95760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c65737300000060448201526064016108c2565b600d829055600e819055610bfd81836125c0565b600c555050565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b81526004016108c290612575565b60005b8151811015610c9657600060176000848481518110610c5257610c52612646565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c8e8161265c565b915050610c31565b5050565b6005546001600160a01b03163314610cc45760405162461bcd60e51b81526004016108c290612575565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610d3b5760405162461bcd60e51b81526004016108c290612575565b50600b805460ff19169055600190565b6005546001600160a01b03163314610d755760405162461bcd60e51b81526004016108c290612575565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dca5760405162461bcd60e51b81526004016108c290612575565b600b805462ffff0019166201010017905543601455565b6005546001600160a01b03163314610e0b5760405162461bcd60e51b81526004016108c290612575565b600b8054911515620100000262ff000019909216919091179055565b60606004805461094f906125d3565b6005546001600160a01b03163314610e605760405162461bcd60e51b81526004016108c290612575565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610eff5760405162461bcd60e51b815260206004820152603560248201527f706169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6044820152746d617465644d61726b65744d616b6572506169727360581b60648201526084016108c2565b610c968282611d18565b60006109df3384610b20856040518060600160405280602581526020016127ed602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611cde565b60006109df33848461151e565b6005546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016108c290612575565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110185760405162461bcd60e51b81526004016108c290612575565b670de0b6b3a76400006103e861102d60025490565b61103890600561260d565b6110429190612624565b61104c9190612624565b8110156110a75760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016108c2565b6110b981670de0b6b3a764000061260d565b600a5550565b6005546000906001600160a01b031633146110ec5760405162461bcd60e51b81526004016108c290612575565b620186a06110f960025490565b61110490600161260d565b61110e9190612624565b82101561117b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108c2565b6103e861118760025490565b61119290600561260d565b61119c9190612624565b8211156112085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108c2565b50600981905560015b919050565b6005546001600160a01b031633146112405760405162461bcd60e51b81526004016108c290612575565b60005b8151811015610c965760016017600084848151811061126457611264612646565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806112a08161265c565b915050611243565b6005546001600160a01b031633146112d25760405162461bcd60e51b81526004016108c290612575565b6001600160a01b0381166113375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c2565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113a083856125c0565b9050838110156113f25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c2565b9392505050565b6001600160a01b03831661145b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c2565b6001600160a01b0382166114bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115445760405162461bcd60e51b81526004016108c290612675565b6001600160a01b03821661156a5760405162461bcd60e51b81526004016108c2906126ba565b6001600160a01b03821660009081526017602052604090205460ff161580156115ac57506001600160a01b03831660009081526017602052604090205460ff16155b6116125760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b60648201526084016108c2565b8060000361162b5761162683836000611d6c565b505050565b600b5460ff1615611a09576005546001600160a01b0384811691161480159061166257506005546001600160a01b03838116911614155b801561167c57506006546001600160a01b03848116911614155b801561169657506006546001600160a01b03838116911614155b80156116b057506007546001600160a01b03848116911614155b80156116ca57506007546001600160a01b03838116911614155b80156116de57506001600160a01b03821615155b80156116f557506001600160a01b03821661dead14155b801561170b5750600554600160a01b900460ff16155b15611a0957600b54610100900460ff166117a3576001600160a01b03831660009081526015602052604090205460ff168061175e57506001600160a01b03821660009081526015602052604090205460ff165b6117a35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108c2565b6001600160a01b03831660009081526018602052604090205460ff1680156117e457506001600160a01b03821660009081526016602052604090205460ff16155b156118c8576008548111156118595760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016108c2565b600a546001600160a01b03831660009081526020819052604090205461187f90836125c0565b11156118c35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c2565b611a09565b6001600160a01b03821660009081526018602052604090205460ff16801561190957506001600160a01b03831660009081526016602052604090205460ff16155b1561197f576008548111156118c35760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016108c2565b6001600160a01b03821660009081526016602052604090205460ff16611a0957600a546001600160a01b0383166000908152602081905260409020546119c590836125c0565b1115611a095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c2565b3060009081526020819052604090205460095481108015908190611a355750600b5462010000900460ff165b8015611a4b5750600554600160a01b900460ff16155b8015611a7057506001600160a01b03851660009081526018602052604090205460ff16155b8015611a9557506001600160a01b03851660009081526015602052604090205460ff16155b8015611aba57506001600160a01b03841660009081526015602052604090205460ff16155b15611ae8576005805460ff60a01b1916600160a01b179055611ada611e75565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526015602052604090205460ff600160a01b909204821615911680611b3657506001600160a01b03851660009081526015602052604090205460ff165b15611b3f575060005b60008115611cca576001600160a01b03861660009081526018602052604090205460ff168015611b7157506000600f54115b15611bff57611b966064611b90600f5488611fd790919063ffffffff16565b90612059565b9050600f5460115482611ba9919061260d565b611bb39190612624565b60136000828254611bc491906125c0565b9091555050600f54601054611bd9908361260d565b611be39190612624565b60126000828254611bf491906125c0565b90915550611cac9050565b6001600160a01b03871660009081526018602052604090205460ff168015611c2957506000600c54115b15611cac57611c486064611b90600c5488611fd790919063ffffffff16565b9050600c54600e5482611c5b919061260d565b611c659190612624565b60136000828254611c7691906125c0565b9091555050600c54600d54611c8b908361260d565b611c959190612624565b60126000828254611ca691906125c0565b90915550505b8015611cbd57611cbd873083611d6c565b611cc781866126fd565b94505b611cd5878787611d6c565b50505050505050565b60008184841115611d025760405162461bcd60e51b81526004016108c291906122ed565b506000611d0f84866126fd565b95945050505050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d925760405162461bcd60e51b81526004016108c290612675565b6001600160a01b038216611db85760405162461bcd60e51b81526004016108c2906126ba565b611df58160405180606001604052806026815260200161279f602691396001600160a01b0386166000908152602081905260409020549190611cde565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e249082611393565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611511565b3060009081526020819052604081205490506000601354601254611e9991906125c0565b90506000821580611ea8575081155b15611eb257505050565b600954611ec090601461260d565b831115611ed857600954611ed590601461260d565b92505b47611ee28461209b565b6000611eee478361225b565b90506000611f0b85611b9060125485611fd790919063ffffffff16565b90506000611f1982846126fd565b6000601281905560138190556007546040519293506001600160a01b031691839181818185875af1925050503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b50506006546040519196506001600160a01b0316904790600081818185875af1925050503d8060008114611fc6576040519150601f19603f3d011682016040523d82523d6000602084013e611fcb565b606091505b50505050505050505050565b600082600003611fe9575060006109e3565b6000611ff5838561260d565b9050826120028583612624565b146113f25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c2565b60006113f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120d0576120d0612646565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121729190612710565b8160018151811061218557612185612646565b60200260200101906001600160a01b031690816001600160a01b0316815250506121d0307f0000000000000000000000000000000000000000000000000000000000000000846113f9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061222590859060009086903090429060040161272d565b600060405180830381600087803b15801561223f57600080fd5b505af1158015612253573d6000803e3d6000fd5b505050505050565b60006113f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cde565b600081836122be5760405162461bcd60e51b81526004016108c291906122ed565b506000611d0f8486612624565b600080604083850312156122de57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561231a578581018301518582016040015282016122fe565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461235057600080fd5b50565b80356112118161233b565b6000806040838503121561237157600080fd5b823561237c8161233b565b946020939093013593505050565b60006020828403121561239c57600080fd5b81356113f28161233b565b6000602082840312156123b957600080fd5b5035919050565b6000806000606084860312156123d557600080fd5b83356123e08161233b565b925060208401356123f08161233b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561242a57600080fd5b823567ffffffffffffffff8082111561244257600080fd5b818501915085601f83011261245657600080fd5b81358181111561246857612468612401565b8060051b604051601f19603f8301168101818110858211171561248d5761248d612401565b6040529182528482019250838101850191888311156124ab57600080fd5b938501935b828510156124d0576124c185612353565b845293850193928501926124b0565b98975050505050505050565b8035801515811461121157600080fd5b600080604083850312156124ff57600080fd5b823561250a8161233b565b9150612518602084016124dc565b90509250929050565b60006020828403121561253357600080fd5b6113f2826124dc565b6000806040838503121561254f57600080fd5b823561255a8161233b565b9150602083013561256a8161233b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109e3576109e36125aa565b600181811c908216806125e757607f821691505b60208210810361260757634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176109e3576109e36125aa565b60008261264157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161266e5761266e6125aa565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109e3576109e36125aa565b60006020828403121561272257600080fd5b81516113f28161233b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561277d5784516001600160a01b031683529383019391830191600101612758565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220126171a44f4b9c5f9868cceb76424c3e68d84c41da7bc86ea96389d6272abeec64736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061028c5760003560e01c80637bce5a041161015a578063b62496f5116100c1578063d34628cc1161007a578063d34628cc146107d0578063d85ba063146107f0578063dd62ed3e14610806578063e2f456051461084c578063f2fde38b14610862578063f8b45b051461088257600080fd5b8063b62496f51461070b578063bbc0c7421461073b578063c02466681461075a578063c18bc1951461077a578063c8c8ebe41461079a578063d257b34f146107b057600080fd5b80639a7a23d6116101135780639a7a23d6146106695780639c3b4fdc146106895780639fccce321461069f578063a0d82dc5146106b5578063a457c2d7146106cb578063a9059cbb146106eb57600080fd5b80637bce5a04146105d55780638a8c523c146105eb5780638da5cb5b14610600578063921369131461061e578063924de9b71461063457806395d89b411461065457600080fd5b806339509351116101fe5780636c3bbfd7116101b75780636c3bbfd7146105155780636ddd17131461053557806370a0823114610555578063715018a61461058b578063751039fc146105a05780637571336a146105b557600080fd5b8063395093511461043857806349bd5a5e146104585780634a62bb651461048c5780634fbee193146104a657806366ca9b83146104df5780636a486a8e146104ff57600080fd5b806318160ddd1161025057806318160ddd146103915780631f3fed8f146103b0578063203e727e146103c657806323b872dd146103e657806327c8f83514610406578063313ce5671461041c57600080fd5b806302dbd8f81461029857806306fdde03146102ba578063095ea7b3146102e557806310d5de53146103155780631694505e1461034557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b33660046122cb565b610898565b005b3480156102c657600080fd5b506102cf610940565b6040516102dc91906122ed565b60405180910390f35b3480156102f157600080fd5b5061030561030036600461235e565b6109d2565b60405190151581526020016102dc565b34801561032157600080fd5b5061030561033036600461238a565b60166020526000908152604090205460ff1681565b34801561035157600080fd5b506103797f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102dc565b34801561039d57600080fd5b506002545b6040519081526020016102dc565b3480156103bc57600080fd5b506103a260125481565b3480156103d257600080fd5b506102b86103e13660046123a7565b6109e9565b3480156103f257600080fd5b506103056104013660046123c0565b610ac6565b34801561041257600080fd5b5061037961dead81565b34801561042857600080fd5b50604051601281526020016102dc565b34801561044457600080fd5b5061030561045336600461235e565b610b2f565b34801561046457600080fd5b506103797f000000000000000000000000b2d768e13a415330cd37899648e99ce1c7dd9d4b81565b34801561049857600080fd5b50600b546103059060ff1681565b3480156104b257600080fd5b506103056104c136600461238a565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156104eb57600080fd5b506102b86104fa3660046122cb565b610b65565b34801561050b57600080fd5b506103a2600f5481565b34801561052157600080fd5b506102b8610530366004612417565b610c04565b34801561054157600080fd5b50600b546103059062010000900460ff1681565b34801561056157600080fd5b506103a261057036600461238a565b6001600160a01b031660009081526020819052604090205490565b34801561059757600080fd5b506102b8610c9a565b3480156105ac57600080fd5b50610305610d0e565b3480156105c157600080fd5b506102b86105d03660046124ec565b610d4b565b3480156105e157600080fd5b506103a2600d5481565b3480156105f757600080fd5b506102b8610da0565b34801561060c57600080fd5b506005546001600160a01b0316610379565b34801561062a57600080fd5b506103a260105481565b34801561064057600080fd5b506102b861064f366004612521565b610de1565b34801561066057600080fd5b506102cf610e27565b34801561067557600080fd5b506102b86106843660046124ec565b610e36565b34801561069557600080fd5b506103a2600e5481565b3480156106ab57600080fd5b506103a260135481565b3480156106c157600080fd5b506103a260115481565b3480156106d757600080fd5b506103056106e636600461235e565b610f09565b3480156106f757600080fd5b5061030561070636600461235e565b610f58565b34801561071757600080fd5b5061030561072636600461238a565b60186020526000908152604090205460ff1681565b34801561074757600080fd5b50600b5461030590610100900460ff1681565b34801561076657600080fd5b506102b86107753660046124ec565b610f65565b34801561078657600080fd5b506102b86107953660046123a7565b610fee565b3480156107a657600080fd5b506103a260085481565b3480156107bc57600080fd5b506103056107cb3660046123a7565b6110bf565b3480156107dc57600080fd5b506102b86107eb366004612417565b611216565b3480156107fc57600080fd5b506103a2600c5481565b34801561081257600080fd5b506103a261082136600461253c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561085857600080fd5b506103a260095481565b34801561086e57600080fd5b506102b861087d36600461238a565b6112a8565b34801561088e57600080fd5b506103a2600a5481565b6005546001600160a01b031633146108cb5760405162461bcd60e51b81526004016108c290612575565b60405180910390fd5b600f6108d782846125c0565b11156109255760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c65737300000060448201526064016108c2565b6010829055601181905561093981836125c0565b600f555050565b60606003805461094f906125d3565b80601f016020809104026020016040519081016040528092919081815260200182805461097b906125d3565b80156109c85780601f1061099d576101008083540402835291602001916109c8565b820191906000526020600020905b8154815290600101906020018083116109ab57829003601f168201915b5050505050905090565b60006109df3384846113f9565b5060015b92915050565b6005546001600160a01b03163314610a135760405162461bcd60e51b81526004016108c290612575565b670de0b6b3a76400006103e8610a2860025490565b610a3390600161260d565b610a3d9190612624565b610a479190612624565b811015610aae5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016108c2565b610ac081670de0b6b3a764000061260d565b60085550565b6000610ad384848461151e565b610b258433610b20856040518060600160405280602881526020016127c5602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611cde565b6113f9565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109df918590610b209086611393565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b81526004016108c290612575565b600f610b9b82846125c0565b1115610be95760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c65737300000060448201526064016108c2565b600d829055600e819055610bfd81836125c0565b600c555050565b6005546001600160a01b03163314610c2e5760405162461bcd60e51b81526004016108c290612575565b60005b8151811015610c9657600060176000848481518110610c5257610c52612646565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c8e8161265c565b915050610c31565b5050565b6005546001600160a01b03163314610cc45760405162461bcd60e51b81526004016108c290612575565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610d3b5760405162461bcd60e51b81526004016108c290612575565b50600b805460ff19169055600190565b6005546001600160a01b03163314610d755760405162461bcd60e51b81526004016108c290612575565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dca5760405162461bcd60e51b81526004016108c290612575565b600b805462ffff0019166201010017905543601455565b6005546001600160a01b03163314610e0b5760405162461bcd60e51b81526004016108c290612575565b600b8054911515620100000262ff000019909216919091179055565b60606004805461094f906125d3565b6005546001600160a01b03163314610e605760405162461bcd60e51b81526004016108c290612575565b7f000000000000000000000000b2d768e13a415330cd37899648e99ce1c7dd9d4b6001600160a01b0316826001600160a01b031603610eff5760405162461bcd60e51b815260206004820152603560248201527f706169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6044820152746d617465644d61726b65744d616b6572506169727360581b60648201526084016108c2565b610c968282611d18565b60006109df3384610b20856040518060600160405280602581526020016127ed602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611cde565b60006109df33848461151e565b6005546001600160a01b03163314610f8f5760405162461bcd60e51b81526004016108c290612575565b6001600160a01b038216600081815260156020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146110185760405162461bcd60e51b81526004016108c290612575565b670de0b6b3a76400006103e861102d60025490565b61103890600561260d565b6110429190612624565b61104c9190612624565b8110156110a75760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016108c2565b6110b981670de0b6b3a764000061260d565b600a5550565b6005546000906001600160a01b031633146110ec5760405162461bcd60e51b81526004016108c290612575565b620186a06110f960025490565b61110490600161260d565b61110e9190612624565b82101561117b5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108c2565b6103e861118760025490565b61119290600561260d565b61119c9190612624565b8211156112085760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108c2565b50600981905560015b919050565b6005546001600160a01b031633146112405760405162461bcd60e51b81526004016108c290612575565b60005b8151811015610c965760016017600084848151811061126457611264612646565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806112a08161265c565b915050611243565b6005546001600160a01b031633146112d25760405162461bcd60e51b81526004016108c290612575565b6001600160a01b0381166113375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108c2565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000806113a083856125c0565b9050838110156113f25760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016108c2565b9392505050565b6001600160a01b03831661145b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108c2565b6001600160a01b0382166114bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108c2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115445760405162461bcd60e51b81526004016108c290612675565b6001600160a01b03821661156a5760405162461bcd60e51b81526004016108c2906126ba565b6001600160a01b03821660009081526017602052604090205460ff161580156115ac57506001600160a01b03831660009081526017602052604090205460ff16155b6116125760405162461bcd60e51b815260206004820152603160248201527f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460448201527072616e73666572696e6720746f6b656e7360781b60648201526084016108c2565b8060000361162b5761162683836000611d6c565b505050565b600b5460ff1615611a09576005546001600160a01b0384811691161480159061166257506005546001600160a01b03838116911614155b801561167c57506006546001600160a01b03848116911614155b801561169657506006546001600160a01b03838116911614155b80156116b057506007546001600160a01b03848116911614155b80156116ca57506007546001600160a01b03838116911614155b80156116de57506001600160a01b03821615155b80156116f557506001600160a01b03821661dead14155b801561170b5750600554600160a01b900460ff16155b15611a0957600b54610100900460ff166117a3576001600160a01b03831660009081526015602052604090205460ff168061175e57506001600160a01b03821660009081526015602052604090205460ff165b6117a35760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108c2565b6001600160a01b03831660009081526018602052604090205460ff1680156117e457506001600160a01b03821660009081526016602052604090205460ff16155b156118c8576008548111156118595760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016108c2565b600a546001600160a01b03831660009081526020819052604090205461187f90836125c0565b11156118c35760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c2565b611a09565b6001600160a01b03821660009081526018602052604090205460ff16801561190957506001600160a01b03831660009081526016602052604090205460ff16155b1561197f576008548111156118c35760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016108c2565b6001600160a01b03821660009081526016602052604090205460ff16611a0957600a546001600160a01b0383166000908152602081905260409020546119c590836125c0565b1115611a095760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108c2565b3060009081526020819052604090205460095481108015908190611a355750600b5462010000900460ff165b8015611a4b5750600554600160a01b900460ff16155b8015611a7057506001600160a01b03851660009081526018602052604090205460ff16155b8015611a9557506001600160a01b03851660009081526015602052604090205460ff16155b8015611aba57506001600160a01b03841660009081526015602052604090205460ff16155b15611ae8576005805460ff60a01b1916600160a01b179055611ada611e75565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526015602052604090205460ff600160a01b909204821615911680611b3657506001600160a01b03851660009081526015602052604090205460ff165b15611b3f575060005b60008115611cca576001600160a01b03861660009081526018602052604090205460ff168015611b7157506000600f54115b15611bff57611b966064611b90600f5488611fd790919063ffffffff16565b90612059565b9050600f5460115482611ba9919061260d565b611bb39190612624565b60136000828254611bc491906125c0565b9091555050600f54601054611bd9908361260d565b611be39190612624565b60126000828254611bf491906125c0565b90915550611cac9050565b6001600160a01b03871660009081526018602052604090205460ff168015611c2957506000600c54115b15611cac57611c486064611b90600c5488611fd790919063ffffffff16565b9050600c54600e5482611c5b919061260d565b611c659190612624565b60136000828254611c7691906125c0565b9091555050600c54600d54611c8b908361260d565b611c959190612624565b60126000828254611ca691906125c0565b90915550505b8015611cbd57611cbd873083611d6c565b611cc781866126fd565b94505b611cd5878787611d6c565b50505050505050565b60008184841115611d025760405162461bcd60e51b81526004016108c291906122ed565b506000611d0f84866126fd565b95945050505050565b6001600160a01b038216600081815260186020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d925760405162461bcd60e51b81526004016108c290612675565b6001600160a01b038216611db85760405162461bcd60e51b81526004016108c2906126ba565b611df58160405180606001604052806026815260200161279f602691396001600160a01b0386166000908152602081905260409020549190611cde565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e249082611393565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611511565b3060009081526020819052604081205490506000601354601254611e9991906125c0565b90506000821580611ea8575081155b15611eb257505050565b600954611ec090601461260d565b831115611ed857600954611ed590601461260d565b92505b47611ee28461209b565b6000611eee478361225b565b90506000611f0b85611b9060125485611fd790919063ffffffff16565b90506000611f1982846126fd565b6000601281905560138190556007546040519293506001600160a01b031691839181818185875af1925050503d8060008114611f71576040519150601f19603f3d011682016040523d82523d6000602084013e611f76565b606091505b50506006546040519196506001600160a01b0316904790600081818185875af1925050503d8060008114611fc6576040519150601f19603f3d011682016040523d82523d6000602084013e611fcb565b606091505b50505050505050505050565b600082600003611fe9575060006109e3565b6000611ff5838561260d565b9050826120028583612624565b146113f25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016108c2565b60006113f283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061229d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120d0576120d0612646565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121729190612710565b8160018151811061218557612185612646565b60200260200101906001600160a01b031690816001600160a01b0316815250506121d0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846113f9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061222590859060009086903090429060040161272d565b600060405180830381600087803b15801561223f57600080fd5b505af1158015612253573d6000803e3d6000fd5b505050505050565b60006113f283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cde565b600081836122be5760405162461bcd60e51b81526004016108c291906122ed565b506000611d0f8486612624565b600080604083850312156122de57600080fd5b50508035926020909101359150565b600060208083528351808285015260005b8181101561231a578581018301518582016040015282016122fe565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461235057600080fd5b50565b80356112118161233b565b6000806040838503121561237157600080fd5b823561237c8161233b565b946020939093013593505050565b60006020828403121561239c57600080fd5b81356113f28161233b565b6000602082840312156123b957600080fd5b5035919050565b6000806000606084860312156123d557600080fd5b83356123e08161233b565b925060208401356123f08161233b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561242a57600080fd5b823567ffffffffffffffff8082111561244257600080fd5b818501915085601f83011261245657600080fd5b81358181111561246857612468612401565b8060051b604051601f19603f8301168101818110858211171561248d5761248d612401565b6040529182528482019250838101850191888311156124ab57600080fd5b938501935b828510156124d0576124c185612353565b845293850193928501926124b0565b98975050505050505050565b8035801515811461121157600080fd5b600080604083850312156124ff57600080fd5b823561250a8161233b565b9150612518602084016124dc565b90509250929050565b60006020828403121561253357600080fd5b6113f2826124dc565b6000806040838503121561254f57600080fd5b823561255a8161233b565b9150602083013561256a8161233b565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109e3576109e36125aa565b600181811c908216806125e757607f821691505b60208210810361260757634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176109e3576109e36125aa565b60008261264157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161266e5761266e6125aa565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109e3576109e36125aa565b60006020828403121561272257600080fd5b81516113f28161233b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561277d5784516001600160a01b031683529383019391830191600101612758565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220126171a44f4b9c5f9868cceb76424c3e68d84c41da7bc86ea96389d6272abeec64736f6c63430008110033
Deployed Bytecode Sourcemap
29426:13768:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36030:345;;;;;;;;;;-1:-1:-1;36030:345:0;;;;;:::i;:::-;;:::i;:::-;;7525:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9699:169;;;;;;;;;;-1:-1:-1;9699:169:0;;;;;:::i;:::-;;:::i;:::-;;;1580:14:1;;1573:22;1555:41;;1543:2;1528:18;9699:169:0;1415:187:1;30522:63:0;;;;;;;;;;-1:-1:-1;30522:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29499:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2050:32:1;;;2032:51;;2020:2;2005:18;29499:51:0;1859:230:1;8648:108:0;;;;;;;;;;-1:-1:-1;8736:12:0;;8648:108;;;2240:25:1;;;2228:2;2213:18;8648:108:0;2094:177:1;30240:33:0;;;;;;;;;;;;;;;;34771:275;;;;;;;;;;-1:-1:-1;34771:275:0;;;;;:::i;:::-;;:::i;10351:355::-;;;;;;;;;;-1:-1:-1;10351:355:0;;;;;:::i;:::-;;:::i;29602:53::-;;;;;;;;;;;;29648:6;29602:53;;8489:93;;;;;;;;;;-1:-1:-1;8489:93:0;;8572:2;3272:36:1;;3260:2;3245:18;8489:93:0;3130:184:1;11116:218:0;;;;;;;;;;-1:-1:-1;11116:218:0;;;;;:::i;:::-;;:::i;29557:38::-;;;;;;;;;;;;;;;29881:33;;;;;;;;;;-1:-1:-1;29881:33:0;;;;;;;;37445:126;;;;;;;;;;-1:-1:-1;37445:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;37535:28:0;37511:4;37535:28;;;:19;:28;;;;;;;;;37445:126;35689:333;;;;;;;;;;-1:-1:-1;35689:333:0;;;;;:::i;:::-;;:::i;30132:28::-;;;;;;;;;;;;;;;;36755:178;;;;;;;;;;-1:-1:-1;36755:178:0;;;;;:::i;:::-;;:::i;29961:31::-;;;;;;;;;;-1:-1:-1;29961:31:0;;;;;;;;;;;8820:127;;;;;;;;;;-1:-1:-1;8820:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8921:18:0;8894:7;8921:18;;;;;;;;;;;;8820:127;22027:148;;;;;;;;;;;;;:::i;34075:121::-;;;;;;;;;;;;;:::i;35318:167::-;;;;;;;;;;-1:-1:-1;35318:167:0;;;;;:::i;:::-;;:::i;30061:30::-;;;;;;;;;;;;;;;;33875:148;;;;;;;;;;;;;:::i;21383:79::-;;;;;;;;;;-1:-1:-1;21448:6:0;;-1:-1:-1;;;;;21448:6:0;21383:79;;30167:31;;;;;;;;;;;;;;;;35581:100;;;;;;;;;;-1:-1:-1;35581:100:0;;;;;:::i;:::-;;:::i;7745:104::-;;;;;;;;;;;;;:::i;36941:300::-;;;;;;;;;;-1:-1:-1;36941:300:0;;;;;:::i;:::-;;:::i;30098:24::-;;;;;;;;;;;;;;;;30280:27;;;;;;;;;;;;;;;;30205:25;;;;;;;;;;;;;;;;11838:269;;;;;;;;;;-1:-1:-1;11838:269:0;;;;;:::i;:::-;;:::i;9161:175::-;;;;;;;;;;-1:-1:-1;9161:175:0;;;;;:::i;:::-;;:::i;30808:57::-;;;;;;;;;;-1:-1:-1;30808:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29921:33;;;;;;;;;;-1:-1:-1;29921:33:0;;;;;;;;;;;36383:182;;;;;;;;;;-1:-1:-1;36383:182:0;;;;;:::i;:::-;;:::i;35054:256::-;;;;;;;;;;-1:-1:-1;35054:256:0;;;;;:::i;:::-;;:::i;29766:35::-;;;;;;;;;;;;;;;;34266:497;;;;;;;;;;-1:-1:-1;34266:497:0;;;;;:::i;:::-;;:::i;36573:174::-;;;;;;;;;;-1:-1:-1;36573:174:0;;;;;:::i;:::-;;:::i;30027:27::-;;;;;;;;;;;;;;;;9400:151;;;;;;;;;;-1:-1:-1;9400:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;9516:18:0;;;9489:7;9516:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9400:151;29808:33;;;;;;;;;;;;;;;;22331:244;;;;;;;;;;-1:-1:-1;22331:244:0;;;;;:::i;:::-;;:::i;29848:24::-;;;;;;;;;;;;;;;;36030:345;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;;;;;;;;;36191:2:::1;36156:31;36176:11:::0;36156:17;:31:::1;:::i;:::-;:37;;36148:79;;;::::0;-1:-1:-1;;;36148:79:0;;6465:2:1;36148:79:0::1;::::0;::::1;6447:21:1::0;6504:2;6484:18;;;6477:30;6543:31;6523:18;;;6516:59;6592:18;;36148:79:0::1;6263:353:1::0;36148:79:0::1;36240:16;:36:::0;;;36287:10:::1;:24:::0;;;36338:29:::1;36300:11:::0;36259:17;36338:29:::1;:::i;:::-;36322:13;:45:::0;-1:-1:-1;;36030:345:0:o;7525:100::-;7579:13;7612:5;7605:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7525:100;:::o;9699:169::-;9782:4;9799:39;296:10;9822:7;9831:6;9799:8;:39::i;:::-;-1:-1:-1;9856:4:0;9699:169;;;;;:::o;34771:275::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;34908:4:::1;34900;34879:13;8736:12:::0;;;8648:108;34879:13:::1;:17;::::0;34895:1:::1;34879:17;:::i;:::-;34878:26;;;;:::i;:::-;34877:35;;;;:::i;:::-;34867:6;:45;;34845:142;;;::::0;-1:-1:-1;;;34845:142:0;;7603:2:1;34845:142:0::1;::::0;::::1;7585:21:1::0;7642:2;7622:18;;;7615:30;7681:34;7661:18;;;7654:62;-1:-1:-1;;;7732:18:1;;;7725:45;7787:19;;34845:142:0::1;7401:411:1::0;34845:142:0::1;35021:17;:6:::0;35031::::1;35021:17;:::i;:::-;34998:20;:40:::0;-1:-1:-1;34771:275:0:o;10351:355::-;10491:4;10508:36;10518:6;10526:9;10537:6;10508:9;:36::i;:::-;10555:121;10564:6;296:10;10586:89;10624:6;10586:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10586:19:0;;;;;;:11;:19;;;;;;;;296:10;10586:33;;;;;;;;;;:37;:89::i;:::-;10555:8;:121::i;:::-;-1:-1:-1;10694:4:0;10351:355;;;;;:::o;11116:218::-;296:10;11204:4;11253:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11253:34:0;;;;;;;;;;11204:4;;11221:83;;11244:7;;11253:50;;11292:10;11253:38;:50::i;35689:333::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;35845:2:::1;35812:29;35831:10:::0;35812:16;:29:::1;:::i;:::-;:35;;35804:77;;;::::0;-1:-1:-1;;;35804:77:0;;6465:2:1;35804:77:0::1;::::0;::::1;6447:21:1::0;6504:2;6484:18;;;6477:30;6543:31;6523:18;;;6516:59;6592:18;;35804:77:0::1;6263:353:1::0;35804:77:0::1;35894:15;:34:::0;;;35939:9:::1;:22:::0;;;35987:27:::1;35951:10:::0;35912:16;35987:27:::1;:::i;:::-;35972:12;:42:::0;-1:-1:-1;;35689:333:0:o;36755:178::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;36835:6:::1;36830:96;36851:8;:15;36847:1;:19;36830:96;;;36909:5;36888;:18;36894:8;36903:1;36894:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;36888:18:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;36888:18:0;:26;;-1:-1:-1;;36888:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36868:3;::::1;::::0;::::1;:::i;:::-;;;;36830:96;;;;36755:178:::0;:::o;22027:148::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;22118:6:::1;::::0;22097:40:::1;::::0;22134:1:::1;::::0;-1:-1:-1;;;;;22118:6:0::1;::::0;22097:40:::1;::::0;22134:1;;22097:40:::1;22148:6;:19:::0;;-1:-1:-1;;;;;;22148:19:0::1;::::0;;22027:148::o;34075:121::-;21596:6;;34127:4;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;-1:-1:-1;34144:14:0::1;:22:::0;;-1:-1:-1;;34144:22:0::1;::::0;;;34075:121;:::o;35318:167::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35431:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;35431:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35318:167::o;33875:148::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;33930:13:::1;:20:::0;;-1:-1:-1;;33961:18:0;;;;;34003:12:::1;33990:10;:25:::0;33875:148::o;35581:100::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;35652:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;35652:21:0;;::::1;::::0;;;::::1;::::0;;35581:100::o;7745:104::-;7801:13;7834:7;7827:14;;;;;:::i;36941:300::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;37085:13:::1;-1:-1:-1::0;;;;;37077:21:0::1;:4;-1:-1:-1::0;;;;;37077:21:0::1;::::0;37055:124:::1;;;::::0;-1:-1:-1;;;37055:124:0;;8291:2:1;37055:124:0::1;::::0;::::1;8273:21:1::0;8330:2;8310:18;;;8303:30;8369:34;8349:18;;;8342:62;-1:-1:-1;;;8420:18:1;;;8413:51;8481:19;;37055:124:0::1;8089:417:1::0;37055:124:0::1;37192:41;37221:4;37227:5;37192:28;:41::i;11838:269::-:0;11931:4;11948:129;296:10;11971:7;11980:96;12019:15;11980:96;;;;;;;;;;;;;;;;;296:10;11980:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11980:34:0;;;;;;;;;;;;:38;:96::i;9161:175::-;9247:4;9264:42;296:10;9288:9;9299:6;9264:9;:42::i;36383:182::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36468:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;36468:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;36523:34;;1555:41:1;;;36523:34:0::1;::::0;1528:18:1;36523:34:0::1;;;;;;;36383:182:::0;;:::o;35054:256::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;35194:4:::1;35186;35165:13;8736:12:::0;;;8648:108;35165:13:::1;:17;::::0;35181:1:::1;35165:17;:::i;:::-;35164:26;;;;:::i;:::-;35163:35;;;;:::i;:::-;35153:6;:45;;35131:131;;;::::0;-1:-1:-1;;;35131:131:0;;8713:2:1;35131:131:0::1;::::0;::::1;8695:21:1::0;8752:2;8732:18;;;8725:30;8791:34;8771:18;;;8764:62;-1:-1:-1;;;8842:18:1;;;8835:34;8886:19;;35131:131:0::1;8511:400:1::0;35131:131:0::1;35285:17;:6:::0;35295::::1;35285:17;:::i;:::-;35273:9;:29:::0;-1:-1:-1;35054:256:0:o;34266:497::-;21596:6;;34374:4;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;34453:6:::1;34432:13;8736:12:::0;;;8648:108;34432:13:::1;:17;::::0;34448:1:::1;34432:17;:::i;:::-;34431:28;;;;:::i;:::-;34418:9;:41;;34396:144;;;::::0;-1:-1:-1;;;34396:144:0;;9118:2:1;34396:144:0::1;::::0;::::1;9100:21:1::0;9157:2;9137:18;;;9130:30;9196:34;9176:18;;;9169:62;-1:-1:-1;;;9247:18:1;;;9240:51;9308:19;;34396:144:0::1;8916:417:1::0;34396:144:0::1;34608:4;34587:13;8736:12:::0;;;8648:108;34587:13:::1;:17;::::0;34603:1:::1;34587:17;:::i;:::-;34586:26;;;;:::i;:::-;34573:9;:39;;34551:141;;;::::0;-1:-1:-1;;;34551:141:0;;9540:2:1;34551:141:0::1;::::0;::::1;9522:21:1::0;9579:2;9559:18;;;9552:30;9618:34;9598:18;;;9591:62;-1:-1:-1;;;9669:18:1;;;9662:50;9729:19;;34551:141:0::1;9338:416:1::0;34551:141:0::1;-1:-1:-1::0;34703:18:0::1;:30:::0;;;34751:4:::1;21666:1;34266:497:::0;;;:::o;36573:174::-;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;36650:6:::1;36645:95;36666:8;:15;36662:1;:19;36645:95;;;36724:4;36703:5;:18;36709:8;36718:1;36709:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;36703:18:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;36703:18:0;:25;;-1:-1:-1;;36703:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36683:3;::::1;::::0;::::1;:::i;:::-;;;;36645:95;;22331:244:::0;21596:6;;-1:-1:-1;;;;;21596:6:0;296:10;21596:22;21588:67;;;;-1:-1:-1;;;21588:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22420:22:0;::::1;22412:73;;;::::0;-1:-1:-1;;;22412:73:0;;9961:2:1;22412:73:0::1;::::0;::::1;9943:21:1::0;10000:2;9980:18;;;9973:30;10039:34;10019:18;;;10012:62;-1:-1:-1;;;10090:18:1;;;10083:36;10136:19;;22412:73:0::1;9759:402:1::0;22412:73:0::1;22522:6;::::0;22501:38:::1;::::0;-1:-1:-1;;;;;22501:38:0;;::::1;::::0;22522:6:::1;::::0;22501:38:::1;::::0;22522:6:::1;::::0;22501:38:::1;22550:6;:17:::0;;-1:-1:-1;;;;;;22550:17:0::1;-1:-1:-1::0;;;;;22550:17:0;;;::::1;::::0;;;::::1;::::0;;22331:244::o;16415:182::-;16473:7;;16505:5;16509:1;16505;:5;:::i;:::-;16493:17;;16534:1;16529;:6;;16521:46;;;;-1:-1:-1;;;16521:46:0;;10368:2:1;16521:46:0;;;10350:21:1;10407:2;10387:18;;;10380:30;10446:29;10426:18;;;10419:57;10493:18;;16521:46:0;10166:351:1;16521:46:0;16588:1;16415:182;-1:-1:-1;;;16415:182:0:o;15034:381::-;-1:-1:-1;;;;;15170:19:0;;15162:68;;;;-1:-1:-1;;;15162:68:0;;10724:2:1;15162:68:0;;;10706:21:1;10763:2;10743:18;;;10736:30;10802:34;10782:18;;;10775:62;-1:-1:-1;;;10853:18:1;;;10846:34;10897:19;;15162:68:0;10522:400:1;15162:68:0;-1:-1:-1;;;;;15249:21:0;;15241:68;;;;-1:-1:-1;;;15241:68:0;;11129:2:1;15241:68:0;;;11111:21:1;11168:2;11148:18;;;11141:30;11207:34;11187:18;;;11180:62;-1:-1:-1;;;11258:18:1;;;11251:32;11300:19;;15241:68:0;10927:398:1;15241:68:0;-1:-1:-1;;;;;15323:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15375:32;;2240:25:1;;;15375:32:0;;2213:18:1;15375:32:0;;;;;;;;15034:381;;;:::o;37579:4013::-;-1:-1:-1;;;;;37711:18:0;;37703:68;;;;-1:-1:-1;;;37703:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37790:16:0;;37782:64;;;;-1:-1:-1;;;37782:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37866:9:0;;;;;;:5;:9;;;;;;;;37865:10;:26;;;;-1:-1:-1;;;;;;37880:11:0;;;;;;:5;:11;;;;;;;;37879:12;37865:26;37857:88;;;;-1:-1:-1;;;37857:88:0;;12342:2:1;37857:88:0;;;12324:21:1;12381:2;12361:18;;;12354:30;12420:34;12400:18;;;12393:62;-1:-1:-1;;;12471:18:1;;;12464:47;12528:19;;37857:88:0;12140:413:1;37857:88:0;37962:6;37972:1;37962:11;37958:93;;37990:28;38006:4;38012:2;38016:1;37990:15;:28::i;:::-;37579:4013;;;:::o;37958:93::-;38067:14;;;;38063:1854;;;21448:6;;-1:-1:-1;;;;;38120:15:0;;;21448:6;;38120:15;;;;:49;;-1:-1:-1;21448:6:0;;-1:-1:-1;;;;;38156:13:0;;;21448:6;;38156:13;;38120:49;:93;;;;-1:-1:-1;38198:15:0;;-1:-1:-1;;;;;38190:23:0;;;38198:15;;38190:23;;38120:93;:135;;;;-1:-1:-1;38240:15:0;;-1:-1:-1;;;;;38234:21:0;;;38240:15;;38234:21;;38120:135;:173;;;;-1:-1:-1;38284:9:0;;-1:-1:-1;;;;;38276:17:0;;;38284:9;;38276:17;;38120:173;:209;;;;-1:-1:-1;38320:9:0;;-1:-1:-1;;;;;38314:15:0;;;38320:9;;38314:15;;38120:209;:246;;;;-1:-1:-1;;;;;;38350:16:0;;;;38120:246;:288;;;;-1:-1:-1;;;;;;38387:21:0;;38401:6;38387:21;;38120:288;:318;;;;-1:-1:-1;38430:8:0;;-1:-1:-1;;;38430:8:0;;;;38429:9;38120:318;38098:1808;;;38478:13;;;;;;;38473:223;;-1:-1:-1;;;;;38550:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;38579:23:0;;;;;;:19;:23;;;;;;;;38550:52;38516:160;;;;-1:-1:-1;;;38516:160:0;;12760:2:1;38516:160:0;;;12742:21:1;12799:2;12779:18;;;12772:30;-1:-1:-1;;;12818:18:1;;;12811:52;12880:18;;38516:160:0;12558:346:1;38516:160:0;-1:-1:-1;;;;;38770:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;38827:35:0;;;;;;:31;:35;;;;;;;;38826:36;38770:92;38744:1147;;;38949:20;;38939:6;:30;;38905:169;;;;-1:-1:-1;;;38905:169:0;;13111:2:1;38905:169:0;;;13093:21:1;13150:2;13130:18;;;13123:30;13189:34;13169:18;;;13162:62;-1:-1:-1;;;13240:18:1;;;13233:51;13301:19;;38905:169:0;12909:417:1;38905:169:0;39157:9;;-1:-1:-1;;;;;8921:18:0;;8894:7;8921:18;;;;;;;;;;;39131:22;;:6;:22;:::i;:::-;:35;;39097:140;;;;-1:-1:-1;;;39097:140:0;;13533:2:1;39097:140:0;;;13515:21:1;13572:2;13552:18;;;13545:30;-1:-1:-1;;;13591:18:1;;;13584:49;13650:18;;39097:140:0;13331:343:1;39097:140:0;38744:1147;;;-1:-1:-1;;;;;39335:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;39390:37:0;;;;;;:31;:37;;;;;;;;39389:38;39335:92;39309:582;;;39514:20;;39504:6;:30;;39470:170;;;;-1:-1:-1;;;39470:170:0;;13881:2:1;39470:170:0;;;13863:21:1;13920:2;13900:18;;;13893:30;13959:34;13939:18;;;13932:62;-1:-1:-1;;;14010:18:1;;;14003:52;14072:19;;39470:170:0;13679:418:1;39309:582:0;-1:-1:-1;;;;;39671:35:0;;;;;;:31;:35;;;;;;;;39666:225;;39791:9;;-1:-1:-1;;;;;8921:18:0;;8894:7;8921:18;;;;;;;;;;;39765:22;;:6;:22;:::i;:::-;:35;;39731:140;;;;-1:-1:-1;;;39731:140:0;;13533:2:1;39731:140:0;;;13515:21:1;13572:2;13552:18;;;13545:30;-1:-1:-1;;;13591:18:1;;;13584:49;13650:18;;39731:140:0;13331:343:1;39731:140:0;39978:4;39929:28;8921:18;;;;;;;;;;;40036;;40012:42;;;;;;;40085:35;;-1:-1:-1;40109:11:0;;;;;;;40085:35;:61;;;;-1:-1:-1;40138:8:0;;-1:-1:-1;;;40138:8:0;;;;40137:9;40085:61;:110;;;;-1:-1:-1;;;;;;40164:31:0;;;;;;:25;:31;;;;;;;;40163:32;40085:110;:153;;;;-1:-1:-1;;;;;;40213:25:0;;;;;;:19;:25;;;;;;;;40212:26;40085:153;:194;;;;-1:-1:-1;;;;;;40256:23:0;;;;;;:19;:23;;;;;;;;40255:24;40085:194;40067:326;;;40306:8;:15;;-1:-1:-1;;;;40306:15:0;-1:-1:-1;;;40306:15:0;;;40338:10;:8;:10::i;:::-;40365:8;:16;;-1:-1:-1;;;;40365:16:0;;;40067:326;40421:8;;-1:-1:-1;;;;;40531:25:0;;40405:12;40531:25;;;:19;:25;;;;;;40421:8;-1:-1:-1;;;40421:8:0;;;;;40420:9;;40531:25;;:52;;-1:-1:-1;;;;;;40560:23:0;;;;;;:19;:23;;;;;;;;40531:52;40527:100;;;-1:-1:-1;40610:5:0;40527:100;40639:12;40744:7;40740:799;;;-1:-1:-1;;;;;40796:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;40845:1;40829:13;;:17;40796:50;40792:598;;;40874:34;40904:3;40874:25;40885:13;;40874:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;40867:41;;40963:13;;40950:10;;40943:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;40927:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;41043:13:0;;41024:16;;41017:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;40995:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;40792:598:0;;-1:-1:-1;40792:598:0;;-1:-1:-1;;;;;41118:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;41168:1;41153:12;;:16;41118:51;41114:276;;;41197:33;41226:3;41197:24;41208:12;;41197:6;:10;;:24;;;;:::i;:33::-;41190:40;;41284:12;;41272:9;;41265:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;41249:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;41362:12:0;;41344:15;;41337:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;41315:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;41114:276:0;41410:8;;41406:91;;41439:42;41455:4;41469;41476;41439:15;:42::i;:::-;41513:14;41523:4;41513:14;;:::i;:::-;;;40740:799;41551:33;41567:4;41573:2;41577:6;41551:15;:33::i;:::-;37692:3900;;;;37579:4013;;;:::o;17321:193::-;17407:7;17443:12;17435:6;;;;17427:29;;;;-1:-1:-1;;;17427:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17467:9:0;17479:5;17483:1;17479;:5;:::i;:::-;17467:17;17321:193;-1:-1:-1;;;;;17321:193:0:o;37249:188::-;-1:-1:-1;;;;;37332:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;37332:39:0;;;;;;;;;;37389:40;;37332:39;;:31;37389:40;;;37249:188;;:::o;12598:575::-;-1:-1:-1;;;;;12738:20:0;;12730:70;;;;-1:-1:-1;;;12730:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12819:23:0;;12811:71;;;;-1:-1:-1;;;12811:71:0;;;;;;;:::i;:::-;12977;12999:6;12977:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12977:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;12957:17:0;;;:9;:17;;;;;;;;;;;:91;;;;13082:20;;;;;;;:32;;13107:6;13082:24;:32::i;:::-;-1:-1:-1;;;;;13059:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;13130:35;2240:25:1;;;13059:20:0;;13130:35;;;;;;2213:18:1;13130:35:0;2094:177:1;42232:959:0;42315:4;42271:23;8921:18;;;;;;;;;;;42271:50;;42332:25;42381:12;;42360:18;;:33;;;;:::i;:::-;42332:61;-1:-1:-1;42404:12:0;42433:20;;;:46;;-1:-1:-1;42457:22:0;;42433:46;42430:60;;;42482:7;;;42232:959::o;42430:60::-;42524:18;;:23;;42545:2;42524:23;:::i;:::-;42506:15;:41;42503:111;;;42579:18;;:23;;42600:2;42579:23;:::i;:::-;42561:41;;42503:111;42654:21;42689:33;42706:15;42689:16;:33::i;:::-;42737:18;42758:44;:21;42784:17;42758:25;:44::i;:::-;42737:65;;42816:23;42842:57;42881:17;42842:34;42857:18;;42842:10;:14;;:34;;;;:::i;:57::-;42816:83;-1:-1:-1;42910:17:0;42930:28;42816:83;42930:10;:28;:::i;:::-;42993:1;42972:18;:22;;;43005:12;:16;;;43056:9;;43048:45;;42910:48;;-1:-1:-1;;;;;;43056:9:0;;42910:48;;43048:45;42993:1;43048:45;42910:48;43056:9;43048:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43128:15:0;;43120:63;;43035:58;;-1:-1:-1;;;;;;43128:15:0;;43157:21;;43120:63;;;;43157:21;43128:15;43120:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;42232:959:0:o;17774:473::-;17832:7;18077:1;18082;18077:6;18073:47;;-1:-1:-1;18107:1:0;18100:8;;18073:47;18133:9;18145:5;18149:1;18145;:5;:::i;:::-;18133:17;-1:-1:-1;18178:1:0;18169:5;18173:1;18133:17;18169:5;:::i;:::-;:10;18161:56;;;;-1:-1:-1;;;18161:56:0;;14647:2:1;18161:56:0;;;14629:21:1;14686:2;14666:18;;;14659:30;14725:34;14705:18;;;14698:62;-1:-1:-1;;;14776:18:1;;;14769:31;14817:19;;18161:56:0;14445:397:1;18724:132:0;18782:7;18809:39;18813:1;18816;18809:39;;;;;;;;;;;;;;;;;:3;:39::i;41635:589::-;41785:16;;;41799:1;41785:16;;;;;;;;41761:21;;41785:16;;;;;;;;;;-1:-1:-1;41785:16:0;41761:40;;41830:4;41812;41817:1;41812:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;41812:23:0;;;-1:-1:-1;;;;;41812:23:0;;;;;41856:15;-1:-1:-1;;;;;41856:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41846:4;41851:1;41846:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;41846:32:0;;;-1:-1:-1;;;;;41846:32:0;;;;;41891:62;41908:4;41923:15;41941:11;41891:8;:62::i;:::-;41992:224;;-1:-1:-1;;;41992:224:0;;-1:-1:-1;;;;;41992:15:0;:66;;;;:224;;42073:11;;42099:1;;42143:4;;42170;;42190:15;;41992:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41690:534;41635:589;:::o;16881:136::-;16939:7;16966:43;16970:1;16973;16966:43;;;;;;;;;;;;;;;;;:3;:43::i;19353:279::-;19439:7;19474:12;19467:5;19459:28;;;;-1:-1:-1;;;19459:28:0;;;;;;;;:::i;:::-;-1:-1:-1;19498:9:0;19510:5;19514:1;19510;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;875:70;820:131;:::o;956:134::-;1024:20;;1053:31;1024:20;1053:31;:::i;1095:315::-;1163:6;1171;1224:2;1212:9;1203:7;1199:23;1195:32;1192:52;;;1240:1;1237;1230:12;1192:52;1279:9;1266:23;1298:31;1323:5;1298:31;:::i;:::-;1348:5;1400:2;1385:18;;;;1372:32;;-1:-1:-1;;;1095:315:1:o;1607:247::-;1666:6;1719:2;1707:9;1698:7;1694:23;1690:32;1687:52;;;1735:1;1732;1725:12;1687:52;1774:9;1761:23;1793:31;1818:5;1793:31;:::i;2276:180::-;2335:6;2388:2;2376:9;2367:7;2363:23;2359:32;2356:52;;;2404:1;2401;2394:12;2356:52;-1:-1:-1;2427:23:1;;2276:180;-1:-1:-1;2276:180:1:o;2461:456::-;2538:6;2546;2554;2607:2;2595:9;2586:7;2582:23;2578:32;2575:52;;;2623:1;2620;2613:12;2575:52;2662:9;2649:23;2681:31;2706:5;2681:31;:::i;:::-;2731:5;-1:-1:-1;2788:2:1;2773:18;;2760:32;2801:33;2760:32;2801:33;:::i;:::-;2461:456;;2853:7;;-1:-1:-1;;;2907:2:1;2892:18;;;;2879:32;;2461:456::o;3319:127::-;3380:10;3375:3;3371:20;3368:1;3361:31;3411:4;3408:1;3401:15;3435:4;3432:1;3425:15;3451:1121;3535:6;3566:2;3609;3597:9;3588:7;3584:23;3580:32;3577:52;;;3625:1;3622;3615:12;3577:52;3665:9;3652:23;3694:18;3735:2;3727:6;3724:14;3721:34;;;3751:1;3748;3741:12;3721:34;3789:6;3778:9;3774:22;3764:32;;3834:7;3827:4;3823:2;3819:13;3815:27;3805:55;;3856:1;3853;3846:12;3805:55;3892:2;3879:16;3914:2;3910;3907:10;3904:36;;;3920:18;;:::i;:::-;3966:2;3963:1;3959:10;3998:2;3992:9;4061:2;4057:7;4052:2;4048;4044:11;4040:25;4032:6;4028:38;4116:6;4104:10;4101:22;4096:2;4084:10;4081:18;4078:46;4075:72;;;4127:18;;:::i;:::-;4163:2;4156:22;4213:18;;;4247:15;;;;-1:-1:-1;4289:11:1;;;4285:20;;;4317:19;;;4314:39;;;4349:1;4346;4339:12;4314:39;4373:11;;;;4393:148;4409:6;4404:3;4401:15;4393:148;;;4475:23;4494:3;4475:23;:::i;:::-;4463:36;;4426:12;;;;4519;;;;4393:148;;;4560:6;3451:1121;-1:-1:-1;;;;;;;;3451:1121:1:o;4577:160::-;4642:20;;4698:13;;4691:21;4681:32;;4671:60;;4727:1;4724;4717:12;4742:315;4807:6;4815;4868:2;4856:9;4847:7;4843:23;4839:32;4836:52;;;4884:1;4881;4874:12;4836:52;4923:9;4910:23;4942:31;4967:5;4942:31;:::i;:::-;4992:5;-1:-1:-1;5016:35:1;5047:2;5032:18;;5016:35;:::i;:::-;5006:45;;4742:315;;;;;:::o;5062:180::-;5118:6;5171:2;5159:9;5150:7;5146:23;5142:32;5139:52;;;5187:1;5184;5177:12;5139:52;5210:26;5226:9;5210:26;:::i;5247:388::-;5315:6;5323;5376:2;5364:9;5355:7;5351:23;5347:32;5344:52;;;5392:1;5389;5382:12;5344:52;5431:9;5418:23;5450:31;5475:5;5450:31;:::i;:::-;5500:5;-1:-1:-1;5557:2:1;5542:18;;5529:32;5570:33;5529:32;5570:33;:::i;:::-;5622:7;5612:17;;;5247:388;;;;;:::o;5640:356::-;5842:2;5824:21;;;5861:18;;;5854:30;5920:34;5915:2;5900:18;;5893:62;5987:2;5972:18;;5640:356::o;6001:127::-;6062:10;6057:3;6053:20;6050:1;6043:31;6093:4;6090:1;6083:15;6117:4;6114:1;6107:15;6133:125;6198:9;;;6219:10;;;6216:36;;;6232:18;;:::i;6621:380::-;6700:1;6696:12;;;;6743;;;6764:61;;6818:4;6810:6;6806:17;6796:27;;6764:61;6871:2;6863:6;6860:14;6840:18;6837:38;6834:161;;6917:10;6912:3;6908:20;6905:1;6898:31;6952:4;6949:1;6942:15;6980:4;6977:1;6970:15;6834:161;;6621:380;;;:::o;7006:168::-;7079:9;;;7110;;7127:15;;;7121:22;;7107:37;7097:71;;7148:18;;:::i;7179:217::-;7219:1;7245;7235:132;;7289:10;7284:3;7280:20;7277:1;7270:31;7324:4;7321:1;7314:15;7352:4;7349:1;7342:15;7235:132;-1:-1:-1;7381:9:1;;7179:217::o;7817:127::-;7878:10;7873:3;7869:20;7866:1;7859:31;7909:4;7906:1;7899:15;7933:4;7930:1;7923:15;7949:135;7988:3;8009:17;;;8006:43;;8029:18;;:::i;:::-;-1:-1:-1;8076:1:1;8065:13;;7949:135::o;11330:401::-;11532:2;11514:21;;;11571:2;11551:18;;;11544:30;11610:34;11605:2;11590:18;;11583:62;-1:-1:-1;;;11676:2:1;11661:18;;11654:35;11721:3;11706:19;;11330:401::o;11736:399::-;11938:2;11920:21;;;11977:2;11957:18;;;11950:30;12016:34;12011:2;11996:18;;11989:62;-1:-1:-1;;;12082:2:1;12067:18;;12060:33;12125:3;12110:19;;11736:399::o;14102:128::-;14169:9;;;14190:11;;;14187:37;;;14204:18;;:::i;14847:251::-;14917:6;14970:2;14958:9;14949:7;14945:23;14941:32;14938:52;;;14986:1;14983;14976:12;14938:52;15018:9;15012:16;15037:31;15062:5;15037:31;:::i;15103:980::-;15365:4;15413:3;15402:9;15398:19;15444:6;15433:9;15426:25;15470:2;15508:6;15503:2;15492:9;15488:18;15481:34;15551:3;15546:2;15535:9;15531:18;15524:31;15575:6;15610;15604:13;15641:6;15633;15626:22;15679:3;15668:9;15664:19;15657:26;;15718:2;15710:6;15706:15;15692:29;;15739:1;15749:195;15763:6;15760:1;15757:13;15749:195;;;15828:13;;-1:-1:-1;;;;;15824:39:1;15812:52;;15919:15;;;;15884:12;;;;15860:1;15778:9;15749:195;;;-1:-1:-1;;;;;;;16000:32:1;;;;15995:2;15980:18;;15973:60;-1:-1:-1;;;16064:3:1;16049:19;16042:35;15961:3;15103:980;-1:-1:-1;;;15103:980:1:o
Swarm Source
ipfs://126171a44f4b9c5f9868cceb76424c3e68d84c41da7bc86ea96389d6272abeec
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.