Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 86 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Manual Swap | 20802524 | 109 days ago | IN | 0 ETH | 0.00023888 | ||||
Manual Swap | 20802521 | 109 days ago | IN | 0 ETH | 0.00041417 | ||||
Manual Send | 20802520 | 109 days ago | IN | 0 ETH | 0.00041452 | ||||
Manual Swap | 20802513 | 109 days ago | IN | 0 ETH | 0.00020902 | ||||
Manual Send | 20802512 | 109 days ago | IN | 0 ETH | 0.00020932 | ||||
Approve | 20801935 | 109 days ago | IN | 0 ETH | 0.00028252 | ||||
Manual Swap | 20801150 | 109 days ago | IN | 0 ETH | 0.00170858 | ||||
Approve | 20801150 | 109 days ago | IN | 0 ETH | 0.00161084 | ||||
Approve | 20800124 | 109 days ago | IN | 0 ETH | 0.00067633 | ||||
Approve | 20799391 | 109 days ago | IN | 0 ETH | 0.00170235 | ||||
Transfer | 20799364 | 109 days ago | IN | 0 ETH | 0.00206026 | ||||
Transfer | 20799261 | 109 days ago | IN | 0 ETH | 0.00070444 | ||||
Transfer | 20799259 | 109 days ago | IN | 0 ETH | 0.00067311 | ||||
Approve | 20799251 | 109 days ago | IN | 0 ETH | 0.00105977 | ||||
Manual Swap | 20799240 | 109 days ago | IN | 0 ETH | 0.00095526 | ||||
Approve | 20799219 | 109 days ago | IN | 0 ETH | 0.0008356 | ||||
Approve | 20799205 | 109 days ago | IN | 0 ETH | 0.00046201 | ||||
Transfer | 20799194 | 109 days ago | IN | 0 ETH | 0.00076291 | ||||
Transfer | 20799189 | 109 days ago | IN | 0 ETH | 0.00074592 | ||||
Transfer | 20799174 | 109 days ago | IN | 0 ETH | 0.00035751 | ||||
Transfer | 20799165 | 109 days ago | IN | 0 ETH | 0.0003623 | ||||
Approve | 20799153 | 109 days ago | IN | 0 ETH | 0.0004791 | ||||
Approve | 20799146 | 109 days ago | IN | 0 ETH | 0.00074999 | ||||
Approve | 20799146 | 109 days ago | IN | 0 ETH | 0.00075018 | ||||
Approve | 20799135 | 109 days ago | IN | 0 ETH | 0.00036874 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DOGGO
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-09-21 */ /** *Submitted for verification at basescan.org on 2024-09-12 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender`cccasdaaa for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } 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); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 public _maxlSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } /** * @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; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer cccasdaaa from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract DOGGO is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public marketingWallet; address public developmentWallet; address public liquidityWallet; address public constant deadAddress = address(0xdead); bool public tradeopen; bool public swapEnabled; bool private _swapdeping; uint256 public swapTokensAtAmountca; uint256 public buyTotalFBUY; uint256 private _buy1; uint256 private _buy2ca; uint256 private _totalbuy1b; uint256 public sell56; uint256 private sell2; uint256 private _selldev; uint256 private _selllp1; uint256 private _tokenfaco; uint256 private _tokensForDevelopment; uint256 private _tokenFor; uint256 private _tokensellall; mapping (address => bool) private _exclulede21; mapping(address => bool) private _istokb58; mapping(address => bool) private _istob865; event Exclude(address indexed account, bool isExcluded); event Excule(address indexed account, bool isExcluded); event Stoken1(address indexed pair, bool indexed value); event Stoken2(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Doggo", "DOGGO") { uint256 totalSupply = 1000000000 * (10 ** 18); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), type(uint256).max); _buy1 = 0; _buy2ca = 0; _totalbuy1b = 0; buyTotalFBUY = _buy1 + _buy2ca + _totalbuy1b; sell2 = 0; _selldev = 0; _selllp1 = 0; sell56 = sell2 + _selldev + _selllp1; _tokensellall = sell56; _exclulede21[owner()] = true; _exclulede21[address(this)] = true; _exclulede21[deadAddress] = true; _mint(owner(), totalSupply); } receive() external payable {} function Open() public onlyOwner { require(!tradeopen, "Open Traded."); tradeopen = true; swapEnabled = true; } function manualSwap(address[] memory address1, bool value) public onlyOwner { for (uint256 i = 0; i < address1.length; i++) { address pair = address1[i]; require(pair != uniswapV2Pair, "The pair"); _isfedca5bu(pair, value); } } function exclude(address[] calldata accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _exclulede21[accounts[i]] = excluded; emit Exclude(accounts[i], excluded); } } function manualSend(address[] memory address2, bool value) public onlyOwner { for (uint256 i = 0; i < address2.length; i++) { address pair = address2[i]; require(pair != uniswapV2Pair, "The pair "); _iscbgq22(pair, value); } } function _isfedca5bu(address pair, bool value) internal { _istokb58[pair] = value; emit Stoken1(pair, value); } function _iscbgq22(address pair, bool value) internal { _istob865[pair] = value; emit Stoken2(pair, value); } 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(tradeopen || _exclulede21[from] || _exclulede21[to], "Trading not cccasdaaa yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwaptokencas = contractTokenBalance >= swapTokensAtAmountca; if ( canSwaptokencas && swapEnabled &&!_swapdeping&&_istokb58[from]&& !_exclulede21[from] && !_exclulede21[to] ) { _swapdeping = true; _swapfast(); _swapdeping = false; } if ( canSwaptokencas && swapEnabled &&!_swapdeping&&_istob865[to]&& !_exclulede21[from] && !_exclulede21[to] ) { _swapdeping = true; _swapfast(); _swapdeping = false; } bool takeFee = !_swapdeping; if (_exclulede21[from] || _exclulede21[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (_istokb58[to] && sell56 > 0) { fees = amount.mul(sell56).div(10000); _tokenFor += (fees * _selllp1) / sell56; _tokenfaco += (fees * sell2) / sell56; _tokensForDevelopment += (fees * _selldev) / sell56; } if (_istob865[to] && sell56 > 0) { fees = amount.mul(sell56).div(10000); _tokenFor += (fees * _selllp1) / sell56; _tokenfaco += (fees * sell2) / sell56; _tokensForDevelopment += (fees * _selldev) / sell56; } // on buy else if (_istokb58[from] && buyTotalFBUY > 0) { fees = amount.mul(buyTotalFBUY).div(10000); _tokenFor += (fees * _totalbuy1b) / buyTotalFBUY; _tokenfaco += (fees * _buy1) / buyTotalFBUY; _tokensForDevelopment += (fees * _buy2ca) / buyTotalFBUY; } else if (_istob865[from] && buyTotalFBUY > 0) { fees = amount.mul(buyTotalFBUY).div(10000); _tokenFor += (fees * _totalbuy1b) / buyTotalFBUY; _tokenfaco += (fees * _buy1) / buyTotalFBUY; _tokensForDevelopment += (fees * _buy2ca) / buyTotalFBUY; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sell56 = _tokensellall; } function _swapTokensbabyETH(uint256 tokenAmount) internal { 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, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _swapfast() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokenFor + _tokenfaco + _tokensForDevelopment; bool success; uint256 liquidityTokens = (contractBalance * _tokenFor) / totalTokensToSwap / 2; uint256 amountToSwapForETHer = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensbabyETH(amountToSwapForETHer); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokenfaco).div( totalTokensToSwap ); uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; _tokenFor = 0; _tokenfaco = 0; _tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETHer, ethForLiquidity, _tokenFor ); } (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); (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":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Exclude","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"Excule","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":"Stoken1","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"Stoken2","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"},{"inputs":[],"name":"Open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxlSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFBUY","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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"exclude","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":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"address2","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"address1","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell56","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmountca","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeopen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040518060400160405280600581526020017f446f67676f0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f444f47474f00000000000000000000000000000000000000000000000000000081525081600490816200008f9190620009d4565b508060059081620000a19190620009d4565b505050620000c4620000b86200031a60201b60201c565b6200032260201b60201c565b60006b033b2e3c9fd0803ce80000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000152306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620003e860201b60201c565b6000600d819055506000600e819055506000600f81905550600f54600e54600d546200017f919062000aea565b6200018b919062000aea565b600c81905550600060118190555060006012819055506000601381905550601354601254601154620001be919062000aea565b620001ca919062000aea565b601081905550601054601781905550600160186000620001ef620005b960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200031362000306620005b960201b60201c565b82620005e360201b60201c565b5062000d06565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200045a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004519062000bac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620004cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c39062000c44565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620005ac919062000c77565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000655576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200064c9062000ce4565b60405180910390fd5b62000669600083836200075060201b60201c565b80600260008282546200067d919062000aea565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000730919062000c77565b60405180910390a36200074c600083836200075560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dc57607f821691505b602082108103620007f257620007f162000794565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200085c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200081d565b6200086886836200081d565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008b5620008af620008a98462000880565b6200088a565b62000880565b9050919050565b6000819050919050565b620008d18362000894565b620008e9620008e082620008bc565b8484546200082a565b825550505050565b600090565b62000900620008f1565b6200090d818484620008c6565b505050565b5b81811015620009355762000929600082620008f6565b60018101905062000913565b5050565b601f82111562000984576200094e81620007f8565b62000959846200080d565b8101602085101562000969578190505b6200098162000978856200080d565b83018262000912565b50505b505050565b600082821c905092915050565b6000620009a96000198460080262000989565b1980831691505092915050565b6000620009c4838362000996565b9150826002028217905092915050565b620009df826200075a565b67ffffffffffffffff811115620009fb57620009fa62000765565b5b62000a078254620007c3565b62000a1482828562000939565b600060209050601f83116001811462000a4c576000841562000a37578287015190505b62000a438582620009b6565b86555062000ab3565b601f19841662000a5c86620007f8565b60005b8281101562000a865784890151825560018201915060208501945060208101905062000a5f565b8683101562000aa6578489015162000aa2601f89168262000996565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000af78262000880565b915062000b048362000880565b925082820190508082111562000b1f5762000b1e62000abb565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000b9460248362000b25565b915062000ba18262000b36565b604082019050919050565b6000602082019050818103600083015262000bc78162000b85565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c2c60228362000b25565b915062000c398262000bce565b604082019050919050565b6000602082019050818103600083015262000c5f8162000c1d565b9050919050565b62000c718162000880565b82525050565b600060208201905062000c8e600083018462000c66565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ccc601f8362000b25565b915062000cd98262000c94565b602082019050919050565b6000602082019050818103600083015262000cff8162000cbd565b9050919050565b608051613a3762000d45600039600081816107ec0152818161251e015281816125ff01528181612626015281816126c201526126e90152613a376000f3fe6080604052600436106101d15760003560e01c806393ec52de116100f7578063b267e80911610095578063eadcc25a11610064578063eadcc25a1461068f578063eaf5aa98146106ba578063ed3e2eda146106e3578063f2fde38b1461070c576101d8565b8063b267e809146105d3578063c04a5414146105fc578063d469801614610627578063dd62ed3e14610652576101d8565b80639c10ba32116100d15780639c10ba3214610503578063a457c2d71461052e578063a9059cbb1461056b578063b14f43f7146105a8576101d8565b806393ec52de1461048257806395d89b41146104ad5780639acf6157146104d8576101d8565b8063395093511161016f57806370a082311161013e57806370a08231146103d8578063715018a61461041557806375f0a8741461042c5780638da5cb5b14610457576101d8565b8063395093511461032e57806349bd5a5e1461036b57806359ebeb90146103965780636ddd1713146103ad576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b57806327c8f835146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612a2c565b610818565b6040516102cf919061296d565b60405180910390f35b3480156102e457600080fd5b506102ed610847565b6040516102fa9190612a8e565b60405180910390f35b34801561030f57600080fd5b5061031861084d565b6040516103259190612ac5565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612912565b610856565b604051610362919061296d565b60405180910390f35b34801561037757600080fd5b5061038061088d565b60405161038d9190612a8e565b60405180910390f35b3480156103a257600080fd5b506103ab6108b3565b005b3480156103b957600080fd5b506103c2610943565b6040516103cf919061296d565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612ae0565b610956565b60405161040c9190612a11565b60405180910390f35b34801561042157600080fd5b5061042a61099e565b005b34801561043857600080fd5b506104416109b2565b60405161044e9190612a8e565b60405180910390f35b34801561046357600080fd5b5061046c6109d8565b6040516104799190612a8e565b60405180910390f35b34801561048e57600080fd5b50610497610a02565b6040516104a49190612a11565b60405180910390f35b3480156104b957600080fd5b506104c2610a08565b6040516104cf9190612848565b60405180910390f35b3480156104e457600080fd5b506104ed610a9a565b6040516104fa919061296d565b60405180910390f35b34801561050f57600080fd5b50610518610aad565b6040516105259190612a11565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612912565b610ab3565b604051610562919061296d565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612912565b610b2a565b60405161059f919061296d565b60405180910390f35b3480156105b457600080fd5b506105bd610b4d565b6040516105ca9190612a11565b60405180910390f35b3480156105df57600080fd5b506105fa60048036038101906105f59190612c81565b610b53565b005b34801561060857600080fd5b50610611610c39565b60405161061e9190612a8e565b60405180910390f35b34801561063357600080fd5b5061063c610c5f565b6040516106499190612a8e565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190612cdd565b610c85565b6040516106869190612a11565b60405180910390f35b34801561069b57600080fd5b506106a4610d0c565b6040516106b19190612a11565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612d78565b610d12565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612c81565b610e34565b005b34801561071857600080fd5b50610733600480360381019061072e9190612ae0565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600080610823610f9d565b905061083085828561116e565b61083b8585856111fa565b60019150509392505050565b61dead81565b60006012905090565b600080610861610f9d565b90506108828185856108738589610c85565b61087d9190612e67565b610fa5565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb611c95565b600a60149054906101000a900460ff161561090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290612ee7565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a6611c95565b6109b06000611d13565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610a1790612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390612e07565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b5050505050905090565b600a60149054906101000a900460ff1681565b600c5481565b600080610abe610f9d565b90506000610acc8286610c85565b905083811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612f79565b60405180910390fd5b610b1e8286868403610fa5565b60019250505092915050565b600080610b35610f9d565b9050610b428185856111fa565b600191505092915050565b600b5481565b610b5b611c95565b60005b8251811015610c34576000838281518110610b7c57610b7b612f99565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90613014565b60405180910390fd5b610c208184611dd9565b508080610c2c90613034565b915050610b5e565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b610d1a611c95565b60005b83839050811015610e2e578160186000868685818110610d4057610d3f612f99565b5b9050602002016020810190610d559190612ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610db957610db8612f99565b5b9050602002016020810190610dce9190612ae0565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610e13919061296d565b60405180910390a28080610e2690613034565b915050610d1d565b50505050565b610e3c611c95565b60005b8251811015610f15576000838281518110610e5d57610e5c612f99565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906130c8565b60405180910390fd5b610f018184611e7a565b508080610f0d90613034565b915050610e3f565b505050565b610f22611c95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611d13565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b600061117a8484610c85565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111f457818110156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906132ea565b60405180910390fd5b6111f38484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061337c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061340e565b60405180910390fd5b600a60149054906101000a900460ff168061133c5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113905750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906134a0565b60405180910390fd5b600081036113e8576113e383836000611f1b565b611c90565b60006113f330610956565b90506000600b5482101590508080156114185750600a60159054906101000a900460ff165b80156114315750600a60169054906101000a900460ff16155b80156114865750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114dc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115325750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611576576001600a60166101000a81548160ff02191690831515021790555061155a612191565b6000600a60166101000a81548160ff0219169083151502179055505b80801561158f5750600a60159054906101000a900460ff165b80156115a85750600a60169054906101000a900460ff16155b80156115fd5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156116535750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ed576001600a60166101000a81548160ff0219169083151502179055506116d1612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117ad57600090505b60008115611c7757601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561181057506000601054115b156118da5761183e6127106118306010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261185191906134c0565b61185b9190613531565b6016600082825461186c9190612e67565b925050819055506010546011548261188491906134c0565b61188e9190613531565b6014600082825461189f9190612e67565b92505081905550601054601254826118b791906134c0565b6118c19190613531565b601560008282546118d29190612e67565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561193557506000601054115b15611a03576119636127106119556010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261197691906134c0565b6119809190613531565b601660008282546119919190612e67565b92505081905550601054601154826119a991906134c0565b6119b39190613531565b601460008282546119c49190612e67565b92505081905550601054601254826119dc91906134c0565b6119e69190613531565b601560008282546119f79190612e67565b92505081905550611c53565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5e57506000600c54115b15611b2c57611a8c612710611a7e600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611a9f91906134c0565b611aa99190613531565b60166000828254611aba9190612e67565b92505081905550600c54600d5482611ad291906134c0565b611adc9190613531565b60146000828254611aed9190612e67565b92505081905550600c54600e5482611b0591906134c0565b611b0f9190613531565b60156000828254611b209190612e67565b92505081905550611c52565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b8757506000600c54115b15611c5157611bb5612710611ba7600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bc891906134c0565b611bd29190613531565b60166000828254611be39190612e67565b92505081905550600c54600d5482611bfb91906134c0565b611c059190613531565b60146000828254611c169190612e67565b92505081905550600c54600e5482611c2e91906134c0565b611c389190613531565b60156000828254611c499190612e67565b925050819055505b5b5b6000811115611c6857611c67873083611f1b565b5b8085611c749190613562565b94505b611c82878787611f1b565b601754601081905550505050505b505050565b611c9d610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611cbb6109d8565b73ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d08906135e2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061340e565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c30610956565b905060006015546014546016546121b39190612e67565b6121bd9190612e67565b9050600080600283601654866121d391906134c0565b6121dd9190613531565b6121e79190613531565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a9190613562565b6122949190613562565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b6000818361244191906134c0565b905092915050565b600081836124579190613531565b905092915050565b505050565b505050565b600081836124779190613562565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612b12565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f000000000000000000000000000000000000000000000000000000000000000084610fa5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080600060608486031215612a4557612a44612874565b5b6000612a53868287016128c7565b9350506020612a64868287016128c7565b9250506040612a75868287016128fd565b9150509250925092565b612a888161289e565b82525050565b6000602082019050612aa36000830184612a7f565b92915050565b600060ff82169050919050565b612abf81612aa9565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b600060208284031215612af657612af5612874565b5b6000612b04848285016128c7565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b4a826127fe565b810181811067ffffffffffffffff82111715612b6957612b68612b12565b5b80604052505050565b6000612b7c61286a565b9050612b888282612b41565b919050565b600067ffffffffffffffff821115612ba857612ba7612b12565b5b602082029050602081019050919050565b600080fd5b6000612bd1612bcc84612b8d565b612b72565b90508083825260208201905060208402830185811115612bf457612bf3612bb9565b5b835b81811015612c1d5780612c0988826128c7565b845260208401935050602081019050612bf6565b5050509392505050565b600082601f830112612c3c57612c3b612b0d565b5b8135612c4c848260208601612bbe565b91505092915050565b612c5e81612952565b8114612c6957600080fd5b50565b600081359050612c7b81612c55565b92915050565b60008060408385031215612c9857612c97612874565b5b600083013567ffffffffffffffff811115612cb657612cb5612879565b5b612cc285828601612c27565b9250506020612cd385828601612c6c565b9150509250929050565b60008060408385031215612cf457612cf3612874565b5b6000612d02858286016128c7565b9250506020612d13858286016128c7565b9150509250929050565b600080fd5b60008083601f840112612d3857612d37612b0d565b5b8235905067ffffffffffffffff811115612d5557612d54612d1d565b5b602083019150836020820283011115612d7157612d70612bb9565b5b9250929050565b600080600060408486031215612d9157612d90612874565b5b600084013567ffffffffffffffff811115612daf57612dae612879565b5b612dbb86828701612d22565b93509350506020612dce86828701612c6c565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e72826128dc565b9150612e7d836128dc565b9250828201905080821115612e9557612e94612e38565b5b92915050565b7f4f70656e205472616465642e0000000000000000000000000000000000000000600082015250565b6000612ed1600c836127c3565b9150612edc82612e9b565b602082019050919050565b60006020820190508181036000830152612f0081612ec4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f636025836127c3565b9150612f6e82612f07565b604082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b6000612ffe6008836127c3565b915061300982612fc8565b602082019050919050565b6000602082019050818103600083015261302d81612ff1565b9050919050565b600061303f826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307157613070612e38565b5b600182019050919050565b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b60006130b26009836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006132d4601d836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133666025836127c3565b91506133718261330a565b604082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133f86023836127c3565b91506134038261339c565b604082019050919050565b60006020820190508181036000830152613427816133eb565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b600061348a6022836127c3565b91506134958261342e565b604082019050919050565b600060208201905081810360008301526134b98161347d565b9050919050565b60006134cb826128dc565b91506134d6836128dc565b92508282026134e4816128dc565b915082820484148315176134fb576134fa612e38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353c826128dc565b9150613547836128dc565b92508261355757613556613502565b5b828204905092915050565b600061356d826128dc565b9150613578836128dc565b92508282039050818111156135905761358f612e38565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cc6020836127c3565b91506135d782613596565b602082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612a7f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612a7f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612a7f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea26469706673582212208aed63ae98450ef6618b95881941b7c19cf57f9e2062cf7b148ca015f6b7e82364736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806393ec52de116100f7578063b267e80911610095578063eadcc25a11610064578063eadcc25a1461068f578063eaf5aa98146106ba578063ed3e2eda146106e3578063f2fde38b1461070c576101d8565b8063b267e809146105d3578063c04a5414146105fc578063d469801614610627578063dd62ed3e14610652576101d8565b80639c10ba32116100d15780639c10ba3214610503578063a457c2d71461052e578063a9059cbb1461056b578063b14f43f7146105a8576101d8565b806393ec52de1461048257806395d89b41146104ad5780639acf6157146104d8576101d8565b8063395093511161016f57806370a082311161013e57806370a08231146103d8578063715018a61461041557806375f0a8741461042c5780638da5cb5b14610457576101d8565b8063395093511461032e57806349bd5a5e1461036b57806359ebeb90146103965780636ddd1713146103ad576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b57806327c8f835146102d8578063313ce56714610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff9190612848565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612912565b6107c7565b60405161023c919061296d565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906129e7565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b6040516102929190612a11565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612a2c565b610818565b6040516102cf919061296d565b60405180910390f35b3480156102e457600080fd5b506102ed610847565b6040516102fa9190612a8e565b60405180910390f35b34801561030f57600080fd5b5061031861084d565b6040516103259190612ac5565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190612912565b610856565b604051610362919061296d565b60405180910390f35b34801561037757600080fd5b5061038061088d565b60405161038d9190612a8e565b60405180910390f35b3480156103a257600080fd5b506103ab6108b3565b005b3480156103b957600080fd5b506103c2610943565b6040516103cf919061296d565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190612ae0565b610956565b60405161040c9190612a11565b60405180910390f35b34801561042157600080fd5b5061042a61099e565b005b34801561043857600080fd5b506104416109b2565b60405161044e9190612a8e565b60405180910390f35b34801561046357600080fd5b5061046c6109d8565b6040516104799190612a8e565b60405180910390f35b34801561048e57600080fd5b50610497610a02565b6040516104a49190612a11565b60405180910390f35b3480156104b957600080fd5b506104c2610a08565b6040516104cf9190612848565b60405180910390f35b3480156104e457600080fd5b506104ed610a9a565b6040516104fa919061296d565b60405180910390f35b34801561050f57600080fd5b50610518610aad565b6040516105259190612a11565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612912565b610ab3565b604051610562919061296d565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612912565b610b2a565b60405161059f919061296d565b60405180910390f35b3480156105b457600080fd5b506105bd610b4d565b6040516105ca9190612a11565b60405180910390f35b3480156105df57600080fd5b506105fa60048036038101906105f59190612c81565b610b53565b005b34801561060857600080fd5b50610611610c39565b60405161061e9190612a8e565b60405180910390f35b34801561063357600080fd5b5061063c610c5f565b6040516106499190612a8e565b60405180910390f35b34801561065e57600080fd5b5061067960048036038101906106749190612cdd565b610c85565b6040516106869190612a11565b60405180910390f35b34801561069b57600080fd5b506106a4610d0c565b6040516106b19190612a11565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc9190612d78565b610d12565b005b3480156106ef57600080fd5b5061070a60048036038101906107059190612c81565b610e34565b005b34801561071857600080fd5b50610733600480360381019061072e9190612ae0565b610f1a565b005b60606004805461074490612e07565b80601f016020809104026020016040519081016040528092919081815260200182805461077090612e07565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610f9d565b90506107df818585610fa5565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600080610823610f9d565b905061083085828561116e565b61083b8585856111fa565b60019150509392505050565b61dead81565b60006012905090565b600080610861610f9d565b90506108828185856108738589610c85565b61087d9190612e67565b610fa5565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108bb611c95565b600a60149054906101000a900460ff161561090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290612ee7565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a6611c95565b6109b06000611d13565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610a1790612e07565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4390612e07565b8015610a905780601f10610a6557610100808354040283529160200191610a90565b820191906000526020600020905b815481529060010190602001808311610a7357829003601f168201915b5050505050905090565b600a60149054906101000a900460ff1681565b600c5481565b600080610abe610f9d565b90506000610acc8286610c85565b905083811015610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890612f79565b60405180910390fd5b610b1e8286868403610fa5565b60019250505092915050565b600080610b35610f9d565b9050610b428185856111fa565b600191505092915050565b600b5481565b610b5b611c95565b60005b8251811015610c34576000838281518110610b7c57610b7b612f99565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90613014565b60405180910390fd5b610c208184611dd9565b508080610c2c90613034565b915050610b5e565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60105481565b610d1a611c95565b60005b83839050811015610e2e578160186000868685818110610d4057610d3f612f99565b5b9050602002016020810190610d559190612ae0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550838382818110610db957610db8612f99565b5b9050602002016020810190610dce9190612ae0565b73ffffffffffffffffffffffffffffffffffffffff167f3192caa254d3e1ad957995cfc6c8fbb960383bef7c341a220215553e91070df383604051610e13919061296d565b60405180910390a28080610e2690613034565b915050610d1d565b50505050565b610e3c611c95565b60005b8251811015610f15576000838281518110610e5d57610e5c612f99565b5b60200260200101519050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee906130c8565b60405180910390fd5b610f018184611e7a565b508080610f0d90613034565b915050610e3f565b505050565b610f22611c95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f889061315a565b60405180910390fd5b610f9a81611d13565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906131ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a9061327e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111619190612a11565b60405180910390a3505050565b600061117a8484610c85565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111f457818110156111e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dd906132ea565b60405180910390fd5b6111f38484848403610fa5565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112609061337c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061340e565b60405180910390fd5b600a60149054906101000a900460ff168061133c5750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113905750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c6906134a0565b60405180910390fd5b600081036113e8576113e383836000611f1b565b611c90565b60006113f330610956565b90506000600b5482101590508080156114185750600a60159054906101000a900460ff165b80156114315750600a60169054906101000a900460ff16155b80156114865750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114dc5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115325750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611576576001600a60166101000a81548160ff02191690831515021790555061155a612191565b6000600a60166101000a81548160ff0219169083151502179055505b80801561158f5750600a60159054906101000a900460ff165b80156115a85750600a60169054906101000a900460ff16155b80156115fd5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156116535750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116ed576001600a60166101000a81548160ff0219169083151502179055506116d1612191565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117a35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117ad57600090505b60008115611c7757601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561181057506000601054115b156118da5761183e6127106118306010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261185191906134c0565b61185b9190613531565b6016600082825461186c9190612e67565b925050819055506010546011548261188491906134c0565b61188e9190613531565b6014600082825461189f9190612e67565b92505081905550601054601254826118b791906134c0565b6118c19190613531565b601560008282546118d29190612e67565b925050819055505b601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561193557506000601054115b15611a03576119636127106119556010548861243390919063ffffffff16565b61244990919063ffffffff16565b90506010546013548261197691906134c0565b6119809190613531565b601660008282546119919190612e67565b92505081905550601054601154826119a991906134c0565b6119b39190613531565b601460008282546119c49190612e67565b92505081905550601054601254826119dc91906134c0565b6119e69190613531565b601560008282546119f79190612e67565b92505081905550611c53565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611a5e57506000600c54115b15611b2c57611a8c612710611a7e600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611a9f91906134c0565b611aa99190613531565b60166000828254611aba9190612e67565b92505081905550600c54600d5482611ad291906134c0565b611adc9190613531565b60146000828254611aed9190612e67565b92505081905550600c54600e5482611b0591906134c0565b611b0f9190613531565b60156000828254611b209190612e67565b92505081905550611c52565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611b8757506000600c54115b15611c5157611bb5612710611ba7600c548861243390919063ffffffff16565b61244990919063ffffffff16565b9050600c54600f5482611bc891906134c0565b611bd29190613531565b60166000828254611be39190612e67565b92505081905550600c54600d5482611bfb91906134c0565b611c059190613531565b60146000828254611c169190612e67565b92505081905550600c54600e5482611c2e91906134c0565b611c389190613531565b60156000828254611c499190612e67565b925050819055505b5b5b6000811115611c6857611c67873083611f1b565b5b8085611c749190613562565b94505b611c82878787611f1b565b601754601081905550505050505b505050565b611c9d610f9d565b73ffffffffffffffffffffffffffffffffffffffff16611cbb6109d8565b73ffffffffffffffffffffffffffffffffffffffff1614611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d08906135e2565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fc155fd4417ec7f196cce906ddbc9dcd27be8dff4e20686b3441e494690a6cca260405160405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fb09cfb76c810949f8ba5130d1a35005021489fe01866d272e05261f6e6bd02b860405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190613674565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff09061340e565b60405180910390fd5b61200483838361245f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190613706565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121789190612a11565b60405180910390a361218b848484612464565b50505050565b600061219c30610956565b905060006015546014546016546121b39190612e67565b6121bd9190612e67565b9050600080600283601654866121d391906134c0565b6121dd9190613531565b6121e79190613531565b905060006121fe828661246990919063ffffffff16565b9050600047905061220e8261247f565b6000612223824761246990919063ffffffff16565b9050600061224e876122406014548561243390919063ffffffff16565b61244990919063ffffffff16565b905060006122798861226b6015548661243390919063ffffffff16565b61244990919063ffffffff16565b9050600081838561228a9190613562565b6122949190613562565b90506000601681905550600060148190555060006015819055506000871180156122be5750600081115b1561230b576122cd87826126bc565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161230293929190613726565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516123519061378e565b60006040518083038185875af1925050503d806000811461238e576040519150601f19603f3d011682016040523d82523d6000602084013e612393565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516123df9061378e565b60006040518083038185875af1925050503d806000811461241c576040519150601f19603f3d011682016040523d82523d6000602084013e612421565b606091505b50508098505050505050505050505050565b6000818361244191906134c0565b905092915050565b600081836124579190613531565b905092915050565b505050565b505050565b600081836124779190613562565b905092915050565b6000600267ffffffffffffffff81111561249c5761249b612b12565b5b6040519080825280602002602001820160405280156124ca5781602001602082028036833780820191505090505b50905030816000815181106124e2576124e1612f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ab91906137b8565b816001815181106125bf576125be612f99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612624307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fa5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126869594939291906138de565b600060405180830381600087803b1580156126a057600080fd5b505af11580156126b4573d6000803e3d6000fd5b505050505050565b6126e7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610fa5565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276e96959493929190613938565b60606040518083038185885af115801561278c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127b191906139ae565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127f25780820151818401526020810190506127d7565b60008484015250505050565b6000601f19601f8301169050919050565b600061281a826127b8565b61282481856127c3565b93506128348185602086016127d4565b61283d816127fe565b840191505092915050565b60006020820190508181036000830152612862818461280f565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128a98261287e565b9050919050565b6128b98161289e565b81146128c457600080fd5b50565b6000813590506128d6816128b0565b92915050565b6000819050919050565b6128ef816128dc565b81146128fa57600080fd5b50565b60008135905061290c816128e6565b92915050565b6000806040838503121561292957612928612874565b5b6000612937858286016128c7565b9250506020612948858286016128fd565b9150509250929050565b60008115159050919050565b61296781612952565b82525050565b6000602082019050612982600083018461295e565b92915050565b6000819050919050565b60006129ad6129a86129a38461287e565b612988565b61287e565b9050919050565b60006129bf82612992565b9050919050565b60006129d1826129b4565b9050919050565b6129e1816129c6565b82525050565b60006020820190506129fc60008301846129d8565b92915050565b612a0b816128dc565b82525050565b6000602082019050612a266000830184612a02565b92915050565b600080600060608486031215612a4557612a44612874565b5b6000612a53868287016128c7565b9350506020612a64868287016128c7565b9250506040612a75868287016128fd565b9150509250925092565b612a888161289e565b82525050565b6000602082019050612aa36000830184612a7f565b92915050565b600060ff82169050919050565b612abf81612aa9565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b600060208284031215612af657612af5612874565b5b6000612b04848285016128c7565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b4a826127fe565b810181811067ffffffffffffffff82111715612b6957612b68612b12565b5b80604052505050565b6000612b7c61286a565b9050612b888282612b41565b919050565b600067ffffffffffffffff821115612ba857612ba7612b12565b5b602082029050602081019050919050565b600080fd5b6000612bd1612bcc84612b8d565b612b72565b90508083825260208201905060208402830185811115612bf457612bf3612bb9565b5b835b81811015612c1d5780612c0988826128c7565b845260208401935050602081019050612bf6565b5050509392505050565b600082601f830112612c3c57612c3b612b0d565b5b8135612c4c848260208601612bbe565b91505092915050565b612c5e81612952565b8114612c6957600080fd5b50565b600081359050612c7b81612c55565b92915050565b60008060408385031215612c9857612c97612874565b5b600083013567ffffffffffffffff811115612cb657612cb5612879565b5b612cc285828601612c27565b9250506020612cd385828601612c6c565b9150509250929050565b60008060408385031215612cf457612cf3612874565b5b6000612d02858286016128c7565b9250506020612d13858286016128c7565b9150509250929050565b600080fd5b60008083601f840112612d3857612d37612b0d565b5b8235905067ffffffffffffffff811115612d5557612d54612d1d565b5b602083019150836020820283011115612d7157612d70612bb9565b5b9250929050565b600080600060408486031215612d9157612d90612874565b5b600084013567ffffffffffffffff811115612daf57612dae612879565b5b612dbb86828701612d22565b93509350506020612dce86828701612c6c565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612e1f57607f821691505b602082108103612e3257612e31612dd8565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e72826128dc565b9150612e7d836128dc565b9250828201905080821115612e9557612e94612e38565b5b92915050565b7f4f70656e205472616465642e0000000000000000000000000000000000000000600082015250565b6000612ed1600c836127c3565b9150612edc82612e9b565b602082019050919050565b60006020820190508181036000830152612f0081612ec4565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612f636025836127c3565b9150612f6e82612f07565b604082019050919050565b60006020820190508181036000830152612f9281612f56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f5468652070616972000000000000000000000000000000000000000000000000600082015250565b6000612ffe6008836127c3565b915061300982612fc8565b602082019050919050565b6000602082019050818103600083015261302d81612ff1565b9050919050565b600061303f826128dc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361307157613070612e38565b5b600182019050919050565b7f5468652070616972200000000000000000000000000000000000000000000000600082015250565b60006130b26009836127c3565b91506130bd8261307c565b602082019050919050565b600060208201905081810360008301526130e1816130a5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131446026836127c3565b915061314f826130e8565b604082019050919050565b6000602082019050818103600083015261317381613137565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131d66024836127c3565b91506131e18261317a565b604082019050919050565b60006020820190508181036000830152613205816131c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132686022836127c3565b91506132738261320c565b604082019050919050565b600060208201905081810360008301526132978161325b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006132d4601d836127c3565b91506132df8261329e565b602082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133666025836127c3565b91506133718261330a565b604082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133f86023836127c3565b91506134038261339c565b604082019050919050565b60006020820190508181036000830152613427816133eb565b9050919050565b7f54726164696e67206e6f74206363636173646161612079657420656e61626c6560008201527f6421000000000000000000000000000000000000000000000000000000000000602082015250565b600061348a6022836127c3565b91506134958261342e565b604082019050919050565b600060208201905081810360008301526134b98161347d565b9050919050565b60006134cb826128dc565b91506134d6836128dc565b92508282026134e4816128dc565b915082820484148315176134fb576134fa612e38565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353c826128dc565b9150613547836128dc565b92508261355757613556613502565b5b828204905092915050565b600061356d826128dc565b9150613578836128dc565b92508282039050818111156135905761358f612e38565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135cc6020836127c3565b91506135d782613596565b602082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f45524332303a207472616e73666572206363636173646161612066726f6d207460008201527f6865207a65726f20616464726573730000000000000000000000000000000000602082015250565b600061365e602f836127c3565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006136f06026836127c3565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b600060608201905061373b6000830186612a02565b6137486020830185612a02565b6137556040830184612a02565b949350505050565b600081905092915050565b50565b600061377860008361375d565b915061378382613768565b600082019050919050565b60006137998261376b565b9150819050919050565b6000815190506137b2816128b0565b92915050565b6000602082840312156137ce576137cd612874565b5b60006137dc848285016137a3565b91505092915050565b6000819050919050565b600061380a613805613800846137e5565b612988565b6128dc565b9050919050565b61381a816137ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138558161289e565b82525050565b6000613867838361384c565b60208301905092915050565b6000602082019050919050565b600061388b82613820565b613895818561382b565b93506138a08361383c565b8060005b838110156138d15781516138b8888261385b565b97506138c383613873565b9250506001810190506138a4565b5085935050505092915050565b600060a0820190506138f36000830188612a02565b6139006020830187613811565b81810360408301526139128186613880565b90506139216060830185612a7f565b61392e6080830184612a02565b9695505050505050565b600060c08201905061394d6000830189612a7f565b61395a6020830188612a02565b6139676040830187613811565b6139746060830186613811565b6139816080830185612a7f565b61398e60a0830184612a02565b979650505050505050565b6000815190506139a8816128e6565b92915050565b6000806000606084860312156139c7576139c6612874565b5b60006139d586828701613999565b93505060206139e686828701613999565b92505060406139f786828701613999565b915050925092509256fea26469706673582212208aed63ae98450ef6618b95881941b7c19cf57f9e2062cf7b148ca015f6b7e82364736f6c63430008110033
Deployed Bytecode Sourcemap
21657:9254:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11510:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21732:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10699:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11760:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21940:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10592:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12063:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21790:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23890:143;;;;;;;;;;;;;:::i;:::-;;22027:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10815:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1040:103;;;;;;;;;;;;;:::i;:::-;;21827:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;795:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10031:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10476:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22002:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22134:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12341:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11004:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22090:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24045:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21864:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21903:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11301:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22273:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24311:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24551:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1156:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10257:100;10311:13;10344:5;10337:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10257:100;:::o;11510:242::-;11629:4;11651:13;11667:12;:10;:12::i;:::-;11651:28;;11690:32;11699:5;11706:7;11715:6;11690:8;:32::i;:::-;11740:4;11733:11;;;11510:242;;;;:::o;21732:51::-;;;:::o;10699:108::-;10760:7;10787:12;;10780:19;;10699:108;:::o;11760:295::-;11891:4;11908:15;11926:12;:10;:12::i;:::-;11908:30;;11949:38;11965:4;11971:7;11980:6;11949:15;:38::i;:::-;11998:27;12008:4;12014:2;12018:6;11998:9;:27::i;:::-;12043:4;12036:11;;;11760:295;;;;;:::o;21940:53::-;21986:6;21940:53;:::o;10592:93::-;10650:5;10675:2;10668:9;;10592:93;:::o;12063:270::-;12178:4;12200:13;12216:12;:10;:12::i;:::-;12200:28;;12239:64;12248:5;12255:7;12292:10;12264:25;12274:5;12281:7;12264:9;:25::i;:::-;:38;;;;:::i;:::-;12239:8;:64::i;:::-;12321:4;12314:11;;;12063:270;;;;:::o;21790:28::-;;;;;;;;;;;;;:::o;23890:143::-;681:13;:11;:13::i;:::-;23943:9:::1;;;;;;;;;;;23942:10;23934:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;23992:4;23980:9;;:16;;;;;;;;;;;;;;;;;;24021:4;24007:11;;:18;;;;;;;;;;;;;;;;;;23890:143::o:0;22027:23::-;;;;;;;;;;;;;:::o;10815:177::-;10934:7;10966:9;:18;10976:7;10966:18;;;;;;;;;;;;;;;;10959:25;;10815:177;;;:::o;1040:103::-;681:13;:11;:13::i;:::-;1105:30:::1;1132:1;1105:18;:30::i;:::-;1040:103::o:0;21827:30::-;;;;;;;;;;;;;:::o;795:87::-;841:7;868:6;;;;;;;;;;;861:13;;795:87;:::o;10031:26::-;;;;:::o;10476:104::-;10532:13;10565:7;10558:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10476:104;:::o;22002:21::-;;;;;;;;;;;;;:::o;22134:27::-;;;;:::o;12341:505::-;12461:4;12483:13;12499:12;:10;:12::i;:::-;12483:28;;12522:24;12549:25;12559:5;12566:7;12549:9;:25::i;:::-;12522:52;;12627:15;12607:16;:35;;12585:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;12743:60;12752:5;12759:7;12787:15;12768:16;:34;12743:8;:60::i;:::-;12834:4;12827:11;;;;12341:505;;;;:::o;11004:234::-;11119:4;11141:13;11157:12;:10;:12::i;:::-;11141:28;;11180;11190:5;11197:2;11201:6;11180:9;:28::i;:::-;11226:4;11219:11;;;11004:234;;;;:::o;22090:35::-;;;;:::o;24045:264::-;681:13;:11;:13::i;:::-;24132:9:::1;24127:179;24151:8;:15;24147:1;:19;24127:179;;;24184:12;24199:8;24208:1;24199:11;;;;;;;;:::i;:::-;;;;;;;;24184:26;;24237:13;;;;;;;;;;;24229:21;;:4;:21;;::::0;24221:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24274:24;24286:4;24292:5;24274:11;:24::i;:::-;24173:133;24168:3;;;;;:::i;:::-;;;;24127:179;;;;24045:264:::0;;:::o;21864:32::-;;;;;;;;;;;;;:::o;21903:30::-;;;;;;;;;;;;;:::o;11301:201::-;11435:7;11467:11;:18;11479:5;11467:18;;;;;;;;;;;;;;;:27;11486:7;11467:27;;;;;;;;;;;;;;;;11460:34;;11301:201;;;;:::o;22273:21::-;;;;:::o;24311:235::-;681:13;:11;:13::i;:::-;24401:9:::1;24396:147;24420:8;;:15;;24416:1;:19;24396:147;;;24481:8;24453:12;:25;24466:8;;24475:1;24466:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24453:25;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;24513:8;;24522:1;24513:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24505:30;;;24526:8;24505:30;;;;;;:::i;:::-;;;;;;;;24437:3;;;;;:::i;:::-;;;;24396:147;;;;24311:235:::0;;;:::o;24551:263::-;681:13;:11;:13::i;:::-;24638:9:::1;24633:178;24657:8;:15;24653:1;:19;24633:178;;;24690:12;24705:8;24714:1;24705:11;;;;;;;;:::i;:::-;;;;;;;;24690:26;;24743:13;;;;;;;;;;;24735:21;;:4;:21;;::::0;24727:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24781:22;24791:4;24797:5;24781:9;:22::i;:::-;24679:132;24674:3;;;;;:::i;:::-;;;;24633:178;;;;24551:263:::0;;:::o;1156:238::-;681:13;:11;:13::i;:::-;1279:1:::1;1259:22;;:8;:22;;::::0;1237:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1358:28;1377:8;1358:18;:28::i;:::-;1156:238:::0;:::o;164:98::-;217:7;244:10;237:17;;164:98;:::o;14837:380::-;14990:1;14973:19;;:5;:19;;;14965:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:1;15052:21;;:7;:21;;;15044:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15155:6;15125:11;:18;15137:5;15125:18;;;;;;;;;;;;;;;:27;15144:7;15125:27;;;;;;;;;;;;;;;:36;;;;15193:7;15177:32;;15186:5;15177:32;;;15202:6;15177:32;;;;;;:::i;:::-;;;;;;;;14837:380;;;:::o;15225:498::-;15356:24;15383:25;15393:5;15400:7;15383:9;:25::i;:::-;15356:52;;15443:17;15423:16;:37;15419:297;;15523:6;15503:16;:26;;15477:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15638:51;15647:5;15654:7;15682:6;15663:16;:25;15638:8;:51::i;:::-;15419:297;15345:378;15225:498;;;:::o;25104:3351::-;25252:1;25236:18;;:4;:18;;;25228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25329:1;25315:16;;:2;:16;;;25307:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25400:9;;;;;;;;;;;:31;;;;25413:12;:18;25426:4;25413:18;;;;;;;;;;;;;;;;;;;;;;;;;25400:31;:51;;;;25435:12;:16;25448:2;25435:16;;;;;;;;;;;;;;;;;;;;;;;;;25400:51;25392:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;25515:1;25505:6;:11;25501:93;;25533:28;25549:4;25555:2;25559:1;25533:15;:28::i;:::-;25576:7;;25501:93;25608:28;25639:24;25657:4;25639:9;:24::i;:::-;25608:55;;25676:20;25723;;25699;:44;;25676:67;;25774:15;:43;;;;;25806:11;;;;;;;;;;;25774:43;:58;;;;;25821:11;;;;;;;;;;;25820:12;25774:58;:75;;;;;25834:9;:15;25844:4;25834:15;;;;;;;;;;;;;;;;;;;;;;;;;25774:75;:110;;;;;25866:12;:18;25879:4;25866:18;;;;;;;;;;;;;;;;;;;;;;;;;25865:19;25774:110;:144;;;;;25902:12;:16;25915:2;25902:16;;;;;;;;;;;;;;;;;;;;;;;;;25901:17;25774:144;25756:283;;;25959:4;25945:11;;:18;;;;;;;;;;;;;;;;;;25980:11;:9;:11::i;:::-;26022:5;26008:11;;:19;;;;;;;;;;;;;;;;;;25756:283;26067:15;:43;;;;;26099:11;;;;;;;;;;;26067:43;:58;;;;;26114:11;;;;;;;;;;;26113:12;26067:58;:73;;;;;26127:9;:13;26137:2;26127:13;;;;;;;;;;;;;;;;;;;;;;;;;26067:73;:108;;;;;26157:12;:18;26170:4;26157:18;;;;;;;;;;;;;;;;;;;;;;;;;26156:19;26067:108;:142;;;;;26193:12;:16;26206:2;26193:16;;;;;;;;;;;;;;;;;;;;;;;;;26192:17;26067:142;26049:281;;;26250:4;26236:11;;:18;;;;;;;;;;;;;;;;;;26271:11;:9;:11::i;:::-;26313:5;26299:11;;:19;;;;;;;;;;;;;;;;;;26049:281;26342:12;26358:11;;;;;;;;;;;26357:12;26342:27;;26408:12;:18;26421:4;26408:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;26430:12;:16;26443:2;26430:16;;;;;;;;;;;;;;;;;;;;;;;;;26408:38;26404:86;;;26473:5;26463:15;;26404:86;26502:12;26539:7;26535:1834;;;26591:9;:13;26601:2;26591:13;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;;26617:1;26608:6;;:10;26591:27;26587:414;;;26646:29;26669:5;26646:18;26657:6;;26646;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;26639:36;;26769:6;;26736:8;;26729:4;:15;;;;:::i;:::-;26728:47;;;;:::i;:::-;26694:9;;:81;;;;;;;:::i;:::-;;;;;;;;26867:6;;26837:5;;26830:4;:12;;;;:::i;:::-;26829:44;;;;:::i;:::-;26794:10;;:79;;;;;;;:::i;:::-;;;;;;;;26979:6;;26946:8;;26939:4;:15;;;;:::i;:::-;26938:47;;;;:::i;:::-;26892:21;;:93;;;;;;;:::i;:::-;;;;;;;;26587:414;27021:9;:13;27031:2;27021:13;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;;;27047:1;27038:6;;:10;27021:27;27017:1203;;;27076:29;27099:5;27076:18;27087:6;;27076;:10;;:18;;;;:::i;:::-;:22;;:29;;;;:::i;:::-;27069:36;;27199:6;;27166:8;;27159:4;:15;;;;:::i;:::-;27158:47;;;;:::i;:::-;27124:9;;:81;;;;;;;:::i;:::-;;;;;;;;27297:6;;27267:5;;27260:4;:12;;;;:::i;:::-;27259:44;;;;:::i;:::-;27224:10;;:79;;;;;;;:::i;:::-;;;;;;;;27409:6;;27376:8;;27369:4;:15;;;;:::i;:::-;27368:47;;;;:::i;:::-;27322:21;;:93;;;;;;;:::i;:::-;;;;;;;;27017:1203;;;27477:9;:15;27487:4;27477:15;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;27511:1;27496:12;;:16;27477:35;27473:747;;;27540:35;27569:5;27540:24;27551:12;;27540:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;27533:42;;27630:12;;27615:11;;27608:4;:18;;;;:::i;:::-;27607:35;;;;:::i;:::-;27594:9;;:48;;;;;;;:::i;:::-;;;;;;;;27692:12;;27683:5;;27676:4;:12;;;;:::i;:::-;27675:29;;;;:::i;:::-;27661:10;;:43;;;;;;;:::i;:::-;;;;;;;;27809:12;;27777:7;;27770:4;:14;;;;:::i;:::-;27769:52;;;;:::i;:::-;27723:21;;:98;;;;;;;:::i;:::-;;;;;;;;27473:747;;;27860:9;:15;27870:4;27860:15;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;;27894:1;27879:12;;:16;27860:35;27856:364;;;27923:35;27952:5;27923:24;27934:12;;27923:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;27916:42;;28013:12;;27998:11;;27991:4;:18;;;;:::i;:::-;27990:35;;;;:::i;:::-;27977:9;;:48;;;;;;;:::i;:::-;;;;;;;;28075:12;;28066:5;;28059:4;:12;;;;:::i;:::-;28058:29;;;;:::i;:::-;28044:10;;:43;;;;;;;:::i;:::-;;;;;;;;28192:12;;28160:7;;28153:4;:14;;;;:::i;:::-;28152:52;;;;:::i;:::-;28106:21;;:98;;;;;;;:::i;:::-;;;;;;;;27856:364;27473:747;27017:1203;28247:1;28240:4;:8;28236:91;;;28269:42;28285:4;28299;28306;28269:15;:42::i;:::-;28236:91;28353:4;28343:14;;;;;:::i;:::-;;;26535:1834;28381:33;28397:4;28403:2;28407:6;28381:15;:33::i;:::-;28434:13;;28425:6;:22;;;;25217:3238;;;;25104:3351;;;;:::o;895:132::-;970:12;:10;:12::i;:::-;959:23;;:7;:5;:7::i;:::-;:23;;;951:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;895:132::o;1407:191::-;1481:16;1500:6;;;;;;;;;;;1481:25;;1526:8;1517:6;;:17;;;;;;;;;;;;;;;;;;1581:8;1550:40;;1571:8;1550:40;;;;;;;;;;;;1470:128;1407:191;:::o;24822:134::-;24907:5;24889:9;:15;24899:4;24889:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;24942:5;24928:20;;24936:4;24928:20;;;;;;;;;;;;24822:134;;:::o;24964:132::-;25047:5;25029:9;:15;25039:4;25029:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;25082:5;25068:20;;25076:4;25068:20;;;;;;;;;;;;24964:132;;:::o;12854:726::-;12993:1;12977:18;;:4;:18;;;12969:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;13080:1;13066:16;;:2;:16;;;13058:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13135:38;13156:4;13162:2;13166:6;13135:20;:38::i;:::-;13186:19;13208:9;:15;13218:4;13208:15;;;;;;;;;;;;;;;;13186:37;;13271:6;13256:11;:21;;13234:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13411:6;13397:11;:20;13379:9;:15;13389:4;13379:15;;;;;;;;;;;;;;;:38;;;;13461:6;13444:9;:13;13454:2;13444:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13511:2;13496:26;;13505:4;13496:26;;;13515:6;13496:26;;;;;;:::i;:::-;;;;;;;;13535:37;13555:4;13561:2;13565:6;13535:19;:37::i;:::-;12958:622;12854:726;;;:::o;29357:1549::-;29398:23;29424:24;29442:4;29424:9;:24::i;:::-;29398:50;;29459:25;29538:21;;29512:10;;29487:9;;:35;;;;:::i;:::-;:72;;;;:::i;:::-;29459:100;;29570:12;29597:23;29701:1;29668:17;29642:9;;29624:15;:27;;;;:::i;:::-;29623:62;;;;:::i;:::-;:79;;;;:::i;:::-;29597:105;;29713:28;29744:36;29764:15;29744;:19;;:36;;;;:::i;:::-;29713:67;;29793:25;29821:21;29793:49;;29855:40;29874:20;29855:18;:40::i;:::-;29908:18;29929:44;29955:17;29929:21;:25;;:44;;;;:::i;:::-;29908:65;;29986:23;30012:73;30057:17;30012:26;30027:10;;30012;:14;;:26;;;;:::i;:::-;:30;;:73;;;;:::i;:::-;29986:99;;30098:25;30126:84;30182:17;30126:37;30141:21;;30126:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;30098:112;;30223:23;30306:17;30275:15;30249:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;30223:100;;30348:1;30336:9;:13;;;;30373:1;30360:10;:14;;;;30409:1;30385:21;:25;;;;30445:1;30427:15;:19;:42;;;;;30468:1;30450:15;:19;30427:42;30423:272;;;30486:47;30500:15;30517;30486:13;:47::i;:::-;30553:130;30586:20;30625:15;30659:9;;30553:130;;;;;;;;:::i;:::-;;;;;;;;30423:272;30731:17;;;;;;;;;;;30723:31;;30762:17;30723:61;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30709:75;;;;;30819:15;;;;;;;;;;;30811:29;;30862:21;30811:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30797:101;;;;;29387:1519;;;;;;;;;;29357:1549::o;7000:98::-;7058:7;7089:1;7085;:5;;;;:::i;:::-;7078:12;;7000:98;;;;:::o;7323:::-;7381:7;7412:1;7408;:5;;;;:::i;:::-;7401:12;;7323:98;;;;:::o;15731:125::-;;;;:::o;15864:124::-;;;;:::o;6643:98::-;6701:7;6732:1;6728;:5;;;;:::i;:::-;6721:12;;6643:98;;;;:::o;28463:504::-;28532:21;28570:1;28556:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28532:40;;28601:4;28583;28588:1;28583:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28627:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28617:4;28622:1;28617:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28662:62;28679:4;28694:15;28712:11;28662:8;:62::i;:::-;28763:15;:66;;;28844:11;28870:1;28886:4;28913;28933:15;28763:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28521:446;28463:504;:::o;28975:372::-;29058:62;29075:4;29090:15;29108:11;29058:8;:62::i;:::-;29133:15;:31;;;29172:9;29205:4;29225:11;29251:1;29267;29283:15;;;;;;;;;;;29313;29133:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28975:372;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:118::-;5488:24;5506:5;5488:24;:::i;:::-;5483:3;5476:37;5401:118;;:::o;5525:222::-;5618:4;5656:2;5645:9;5641:18;5633:26;;5669:71;5737:1;5726:9;5722:17;5713:6;5669:71;:::i;:::-;5525:222;;;;:::o;5753:86::-;5788:7;5828:4;5821:5;5817:16;5806:27;;5753:86;;;:::o;5845:112::-;5928:22;5944:5;5928:22;:::i;:::-;5923:3;5916:35;5845:112;;:::o;5963:214::-;6052:4;6090:2;6079:9;6075:18;6067:26;;6103:67;6167:1;6156:9;6152:17;6143:6;6103:67;:::i;:::-;5963:214;;;;:::o;6183:329::-;6242:6;6291:2;6279:9;6270:7;6266:23;6262:32;6259:119;;;6297:79;;:::i;:::-;6259:119;6417:1;6442:53;6487:7;6478:6;6467:9;6463:22;6442:53;:::i;:::-;6432:63;;6388:117;6183:329;;;;:::o;6518:117::-;6627:1;6624;6617:12;6641:180;6689:77;6686:1;6679:88;6786:4;6783:1;6776:15;6810:4;6807:1;6800:15;6827:281;6910:27;6932:4;6910:27;:::i;:::-;6902:6;6898:40;7040:6;7028:10;7025:22;7004:18;6992:10;6989:34;6986:62;6983:88;;;7051:18;;:::i;:::-;6983:88;7091:10;7087:2;7080:22;6870:238;6827:281;;:::o;7114:129::-;7148:6;7175:20;;:::i;:::-;7165:30;;7204:33;7232:4;7224:6;7204:33;:::i;:::-;7114:129;;;:::o;7249:311::-;7326:4;7416:18;7408:6;7405:30;7402:56;;;7438:18;;:::i;:::-;7402:56;7488:4;7480:6;7476:17;7468:25;;7548:4;7542;7538:15;7530:23;;7249:311;;;:::o;7566:117::-;7675:1;7672;7665:12;7706:710;7802:5;7827:81;7843:64;7900:6;7843:64;:::i;:::-;7827:81;:::i;:::-;7818:90;;7928:5;7957:6;7950:5;7943:21;7991:4;7984:5;7980:16;7973:23;;8044:4;8036:6;8032:17;8024:6;8020:30;8073:3;8065:6;8062:15;8059:122;;;8092:79;;:::i;:::-;8059:122;8207:6;8190:220;8224:6;8219:3;8216:15;8190:220;;;8299:3;8328:37;8361:3;8349:10;8328:37;:::i;:::-;8323:3;8316:50;8395:4;8390:3;8386:14;8379:21;;8266:144;8250:4;8245:3;8241:14;8234:21;;8190:220;;;8194:21;7808:608;;7706:710;;;;;:::o;8439:370::-;8510:5;8559:3;8552:4;8544:6;8540:17;8536:27;8526:122;;8567:79;;:::i;:::-;8526:122;8684:6;8671:20;8709:94;8799:3;8791:6;8784:4;8776:6;8772:17;8709:94;:::i;:::-;8700:103;;8516:293;8439:370;;;;:::o;8815:116::-;8885:21;8900:5;8885:21;:::i;:::-;8878:5;8875:32;8865:60;;8921:1;8918;8911:12;8865:60;8815:116;:::o;8937:133::-;8980:5;9018:6;9005:20;8996:29;;9034:30;9058:5;9034:30;:::i;:::-;8937:133;;;;:::o;9076:678::-;9166:6;9174;9223:2;9211:9;9202:7;9198:23;9194:32;9191:119;;;9229:79;;:::i;:::-;9191:119;9377:1;9366:9;9362:17;9349:31;9407:18;9399:6;9396:30;9393:117;;;9429:79;;:::i;:::-;9393:117;9534:78;9604:7;9595:6;9584:9;9580:22;9534:78;:::i;:::-;9524:88;;9320:302;9661:2;9687:50;9729:7;9720:6;9709:9;9705:22;9687:50;:::i;:::-;9677:60;;9632:115;9076:678;;;;;:::o;9760:474::-;9828:6;9836;9885:2;9873:9;9864:7;9860:23;9856:32;9853:119;;;9891:79;;:::i;:::-;9853:119;10011:1;10036:53;10081:7;10072:6;10061:9;10057:22;10036:53;:::i;:::-;10026:63;;9982:117;10138:2;10164:53;10209:7;10200:6;10189:9;10185:22;10164:53;:::i;:::-;10154:63;;10109:118;9760:474;;;;;:::o;10240:117::-;10349:1;10346;10339:12;10380:568;10453:8;10463:6;10513:3;10506:4;10498:6;10494:17;10490:27;10480:122;;10521:79;;:::i;:::-;10480:122;10634:6;10621:20;10611:30;;10664:18;10656:6;10653:30;10650:117;;;10686:79;;:::i;:::-;10650:117;10800:4;10792:6;10788:17;10776:29;;10854:3;10846:4;10838:6;10834:17;10824:8;10820:32;10817:41;10814:128;;;10861:79;;:::i;:::-;10814:128;10380:568;;;;;:::o;10954:698::-;11046:6;11054;11062;11111:2;11099:9;11090:7;11086:23;11082:32;11079:119;;;11117:79;;:::i;:::-;11079:119;11265:1;11254:9;11250:17;11237:31;11295:18;11287:6;11284:30;11281:117;;;11317:79;;:::i;:::-;11281:117;11430:80;11502:7;11493:6;11482:9;11478:22;11430:80;:::i;:::-;11412:98;;;;11208:312;11559:2;11585:50;11627:7;11618:6;11607:9;11603:22;11585:50;:::i;:::-;11575:60;;11530:115;10954:698;;;;;:::o;11658:180::-;11706:77;11703:1;11696:88;11803:4;11800:1;11793:15;11827:4;11824:1;11817:15;11844:320;11888:6;11925:1;11919:4;11915:12;11905:22;;11972:1;11966:4;11962:12;11993:18;11983:81;;12049:4;12041:6;12037:17;12027:27;;11983:81;12111:2;12103:6;12100:14;12080:18;12077:38;12074:84;;12130:18;;:::i;:::-;12074:84;11895:269;11844:320;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:191;12396:3;12415:20;12433:1;12415:20;:::i;:::-;12410:25;;12449:20;12467:1;12449:20;:::i;:::-;12444:25;;12492:1;12489;12485:9;12478:16;;12513:3;12510:1;12507:10;12504:36;;;12520:18;;:::i;:::-;12504:36;12356:191;;;;:::o;12553:162::-;12693:14;12689:1;12681:6;12677:14;12670:38;12553:162;:::o;12721:366::-;12863:3;12884:67;12948:2;12943:3;12884:67;:::i;:::-;12877:74;;12960:93;13049:3;12960:93;:::i;:::-;13078:2;13073:3;13069:12;13062:19;;12721:366;;;:::o;13093:419::-;13259:4;13297:2;13286:9;13282:18;13274:26;;13346:9;13340:4;13336:20;13332:1;13321:9;13317:17;13310:47;13374:131;13500:4;13374:131;:::i;:::-;13366:139;;13093:419;;;:::o;13518:224::-;13658:34;13654:1;13646:6;13642:14;13635:58;13727:7;13722:2;13714:6;13710:15;13703:32;13518:224;:::o;13748:366::-;13890:3;13911:67;13975:2;13970:3;13911:67;:::i;:::-;13904:74;;13987:93;14076:3;13987:93;:::i;:::-;14105:2;14100:3;14096:12;14089:19;;13748:366;;;:::o;14120:419::-;14286:4;14324:2;14313:9;14309:18;14301:26;;14373:9;14367:4;14363:20;14359:1;14348:9;14344:17;14337:47;14401:131;14527:4;14401:131;:::i;:::-;14393:139;;14120:419;;;:::o;14545:180::-;14593:77;14590:1;14583:88;14690:4;14687:1;14680:15;14714:4;14711:1;14704:15;14731:158;14871:10;14867:1;14859:6;14855:14;14848:34;14731:158;:::o;14895:365::-;15037:3;15058:66;15122:1;15117:3;15058:66;:::i;:::-;15051:73;;15133:93;15222:3;15133:93;:::i;:::-;15251:2;15246:3;15242:12;15235:19;;14895:365;;;:::o;15266:419::-;15432:4;15470:2;15459:9;15455:18;15447:26;;15519:9;15513:4;15509:20;15505:1;15494:9;15490:17;15483:47;15547:131;15673:4;15547:131;:::i;:::-;15539:139;;15266:419;;;:::o;15691:233::-;15730:3;15753:24;15771:5;15753:24;:::i;:::-;15744:33;;15799:66;15792:5;15789:77;15786:103;;15869:18;;:::i;:::-;15786:103;15916:1;15909:5;15905:13;15898:20;;15691:233;;;:::o;15930:159::-;16070:11;16066:1;16058:6;16054:14;16047:35;15930:159;:::o;16095:365::-;16237:3;16258:66;16322:1;16317:3;16258:66;:::i;:::-;16251:73;;16333:93;16422:3;16333:93;:::i;:::-;16451:2;16446:3;16442:12;16435:19;;16095:365;;;:::o;16466:419::-;16632:4;16670:2;16659:9;16655:18;16647:26;;16719:9;16713:4;16709:20;16705:1;16694:9;16690:17;16683:47;16747:131;16873:4;16747:131;:::i;:::-;16739:139;;16466:419;;;:::o;16891:225::-;17031:34;17027:1;17019:6;17015:14;17008:58;17100:8;17095:2;17087:6;17083:15;17076:33;16891:225;:::o;17122:366::-;17264:3;17285:67;17349:2;17344:3;17285:67;:::i;:::-;17278:74;;17361:93;17450:3;17361:93;:::i;:::-;17479:2;17474:3;17470:12;17463:19;;17122:366;;;:::o;17494:419::-;17660:4;17698:2;17687:9;17683:18;17675:26;;17747:9;17741:4;17737:20;17733:1;17722:9;17718:17;17711:47;17775:131;17901:4;17775:131;:::i;:::-;17767:139;;17494:419;;;:::o;17919:223::-;18059:34;18055:1;18047:6;18043:14;18036:58;18128:6;18123:2;18115:6;18111:15;18104:31;17919:223;:::o;18148:366::-;18290:3;18311:67;18375:2;18370:3;18311:67;:::i;:::-;18304:74;;18387:93;18476:3;18387:93;:::i;:::-;18505:2;18500:3;18496:12;18489:19;;18148:366;;;:::o;18520:419::-;18686:4;18724:2;18713:9;18709:18;18701:26;;18773:9;18767:4;18763:20;18759:1;18748:9;18744:17;18737:47;18801:131;18927:4;18801:131;:::i;:::-;18793:139;;18520:419;;;:::o;18945:221::-;19085:34;19081:1;19073:6;19069:14;19062:58;19154:4;19149:2;19141:6;19137:15;19130:29;18945:221;:::o;19172:366::-;19314:3;19335:67;19399:2;19394:3;19335:67;:::i;:::-;19328:74;;19411:93;19500:3;19411:93;:::i;:::-;19529:2;19524:3;19520:12;19513:19;;19172:366;;;:::o;19544:419::-;19710:4;19748:2;19737:9;19733:18;19725:26;;19797:9;19791:4;19787:20;19783:1;19772:9;19768:17;19761:47;19825:131;19951:4;19825:131;:::i;:::-;19817:139;;19544:419;;;:::o;19969:179::-;20109:31;20105:1;20097:6;20093:14;20086:55;19969:179;:::o;20154:366::-;20296:3;20317:67;20381:2;20376:3;20317:67;:::i;:::-;20310:74;;20393:93;20482:3;20393:93;:::i;:::-;20511:2;20506:3;20502:12;20495:19;;20154:366;;;:::o;20526:419::-;20692:4;20730:2;20719:9;20715:18;20707:26;;20779:9;20773:4;20769:20;20765:1;20754:9;20750:17;20743:47;20807:131;20933:4;20807:131;:::i;:::-;20799:139;;20526:419;;;:::o;20951:224::-;21091:34;21087:1;21079:6;21075:14;21068:58;21160:7;21155:2;21147:6;21143:15;21136:32;20951:224;:::o;21181:366::-;21323:3;21344:67;21408:2;21403:3;21344:67;:::i;:::-;21337:74;;21420:93;21509:3;21420:93;:::i;:::-;21538:2;21533:3;21529:12;21522:19;;21181:366;;;:::o;21553:419::-;21719:4;21757:2;21746:9;21742:18;21734:26;;21806:9;21800:4;21796:20;21792:1;21781:9;21777:17;21770:47;21834:131;21960:4;21834:131;:::i;:::-;21826:139;;21553:419;;;:::o;21978:222::-;22118:34;22114:1;22106:6;22102:14;22095:58;22187:5;22182:2;22174:6;22170:15;22163:30;21978:222;:::o;22206:366::-;22348:3;22369:67;22433:2;22428:3;22369:67;:::i;:::-;22362:74;;22445:93;22534:3;22445:93;:::i;:::-;22563:2;22558:3;22554:12;22547:19;;22206:366;;;:::o;22578:419::-;22744:4;22782:2;22771:9;22767:18;22759:26;;22831:9;22825:4;22821:20;22817:1;22806:9;22802:17;22795:47;22859:131;22985:4;22859:131;:::i;:::-;22851:139;;22578:419;;;:::o;23003:221::-;23143:34;23139:1;23131:6;23127:14;23120:58;23212:4;23207:2;23199:6;23195:15;23188:29;23003:221;:::o;23230:366::-;23372:3;23393:67;23457:2;23452:3;23393:67;:::i;:::-;23386:74;;23469:93;23558:3;23469:93;:::i;:::-;23587:2;23582:3;23578:12;23571:19;;23230:366;;;:::o;23602:419::-;23768:4;23806:2;23795:9;23791:18;23783:26;;23855:9;23849:4;23845:20;23841:1;23830:9;23826:17;23819:47;23883:131;24009:4;23883:131;:::i;:::-;23875:139;;23602:419;;;:::o;24027:410::-;24067:7;24090:20;24108:1;24090:20;:::i;:::-;24085:25;;24124:20;24142:1;24124:20;:::i;:::-;24119:25;;24179:1;24176;24172:9;24201:30;24219:11;24201:30;:::i;:::-;24190:41;;24380:1;24371:7;24367:15;24364:1;24361:22;24341:1;24334:9;24314:83;24291:139;;24410:18;;:::i;:::-;24291:139;24075:362;24027:410;;;;:::o;24443:180::-;24491:77;24488:1;24481:88;24588:4;24585:1;24578:15;24612:4;24609:1;24602:15;24629:185;24669:1;24686:20;24704:1;24686:20;:::i;:::-;24681:25;;24720:20;24738:1;24720:20;:::i;:::-;24715:25;;24759:1;24749:35;;24764:18;;:::i;:::-;24749:35;24806:1;24803;24799:9;24794:14;;24629:185;;;;:::o;24820:194::-;24860:4;24880:20;24898:1;24880:20;:::i;:::-;24875:25;;24914:20;24932:1;24914:20;:::i;:::-;24909:25;;24958:1;24955;24951:9;24943:17;;24982:1;24976:4;24973:11;24970:37;;;24987:18;;:::i;:::-;24970:37;24820:194;;;;:::o;25020:182::-;25160:34;25156:1;25148:6;25144:14;25137:58;25020:182;:::o;25208:366::-;25350:3;25371:67;25435:2;25430:3;25371:67;:::i;:::-;25364:74;;25447:93;25536:3;25447:93;:::i;:::-;25565:2;25560:3;25556:12;25549:19;;25208:366;;;:::o;25580:419::-;25746:4;25784:2;25773:9;25769:18;25761:26;;25833:9;25827:4;25823:20;25819:1;25808:9;25804:17;25797:47;25861:131;25987:4;25861:131;:::i;:::-;25853:139;;25580:419;;;:::o;26005:234::-;26145:34;26141:1;26133:6;26129:14;26122:58;26214:17;26209:2;26201:6;26197:15;26190:42;26005:234;:::o;26245:366::-;26387:3;26408:67;26472:2;26467:3;26408:67;:::i;:::-;26401:74;;26484:93;26573:3;26484:93;:::i;:::-;26602:2;26597:3;26593:12;26586:19;;26245:366;;;:::o;26617:419::-;26783:4;26821:2;26810:9;26806:18;26798:26;;26870:9;26864:4;26860:20;26856:1;26845:9;26841:17;26834:47;26898:131;27024:4;26898:131;:::i;:::-;26890:139;;26617:419;;;:::o;27042:225::-;27182:34;27178:1;27170:6;27166:14;27159:58;27251:8;27246:2;27238:6;27234:15;27227:33;27042:225;:::o;27273:366::-;27415:3;27436:67;27500:2;27495:3;27436:67;:::i;:::-;27429:74;;27512:93;27601:3;27512:93;:::i;:::-;27630:2;27625:3;27621:12;27614:19;;27273:366;;;:::o;27645:419::-;27811:4;27849:2;27838:9;27834:18;27826:26;;27898:9;27892:4;27888:20;27884:1;27873:9;27869:17;27862:47;27926:131;28052:4;27926:131;:::i;:::-;27918:139;;27645:419;;;:::o;28070:442::-;28219:4;28257:2;28246:9;28242:18;28234:26;;28270:71;28338:1;28327:9;28323:17;28314:6;28270:71;:::i;:::-;28351:72;28419:2;28408:9;28404:18;28395:6;28351:72;:::i;:::-;28433;28501:2;28490:9;28486:18;28477:6;28433:72;:::i;:::-;28070:442;;;;;;:::o;28518:147::-;28619:11;28656:3;28641:18;;28518:147;;;;:::o;28671:114::-;;:::o;28791:398::-;28950:3;28971:83;29052:1;29047:3;28971:83;:::i;:::-;28964:90;;29063:93;29152:3;29063:93;:::i;:::-;29181:1;29176:3;29172:11;29165:18;;28791:398;;;:::o;29195:379::-;29379:3;29401:147;29544:3;29401:147;:::i;:::-;29394:154;;29565:3;29558:10;;29195:379;;;:::o;29580:143::-;29637:5;29668:6;29662:13;29653:22;;29684:33;29711:5;29684:33;:::i;:::-;29580:143;;;;:::o;29729:351::-;29799:6;29848:2;29836:9;29827:7;29823:23;29819:32;29816:119;;;29854:79;;:::i;:::-;29816:119;29974:1;29999:64;30055:7;30046:6;30035:9;30031:22;29999:64;:::i;:::-;29989:74;;29945:128;29729:351;;;;:::o;30086:85::-;30131:7;30160:5;30149:16;;30086:85;;;:::o;30177:158::-;30235:9;30268:61;30286:42;30295:32;30321:5;30295:32;:::i;:::-;30286:42;:::i;:::-;30268:61;:::i;:::-;30255:74;;30177:158;;;:::o;30341:147::-;30436:45;30475:5;30436:45;:::i;:::-;30431:3;30424:58;30341:147;;:::o;30494:114::-;30561:6;30595:5;30589:12;30579:22;;30494:114;;;:::o;30614:184::-;30713:11;30747:6;30742:3;30735:19;30787:4;30782:3;30778:14;30763:29;;30614:184;;;;:::o;30804:132::-;30871:4;30894:3;30886:11;;30924:4;30919:3;30915:14;30907:22;;30804:132;;;:::o;30942:108::-;31019:24;31037:5;31019:24;:::i;:::-;31014:3;31007:37;30942:108;;:::o;31056:179::-;31125:10;31146:46;31188:3;31180:6;31146:46;:::i;:::-;31224:4;31219:3;31215:14;31201:28;;31056:179;;;;:::o;31241:113::-;31311:4;31343;31338:3;31334:14;31326:22;;31241:113;;;:::o;31390:732::-;31509:3;31538:54;31586:5;31538:54;:::i;:::-;31608:86;31687:6;31682:3;31608:86;:::i;:::-;31601:93;;31718:56;31768:5;31718:56;:::i;:::-;31797:7;31828:1;31813:284;31838:6;31835:1;31832:13;31813:284;;;31914:6;31908:13;31941:63;32000:3;31985:13;31941:63;:::i;:::-;31934:70;;32027:60;32080:6;32027:60;:::i;:::-;32017:70;;31873:224;31860:1;31857;31853:9;31848:14;;31813:284;;;31817:14;32113:3;32106:10;;31514:608;;;31390:732;;;;:::o;32128:831::-;32391:4;32429:3;32418:9;32414:19;32406:27;;32443:71;32511:1;32500:9;32496:17;32487:6;32443:71;:::i;:::-;32524:80;32600:2;32589:9;32585:18;32576:6;32524:80;:::i;:::-;32651:9;32645:4;32641:20;32636:2;32625:9;32621:18;32614:48;32679:108;32782:4;32773:6;32679:108;:::i;:::-;32671:116;;32797:72;32865:2;32854:9;32850:18;32841:6;32797:72;:::i;:::-;32879:73;32947:3;32936:9;32932:19;32923:6;32879:73;:::i;:::-;32128:831;;;;;;;;:::o;32965:807::-;33214:4;33252:3;33241:9;33237:19;33229:27;;33266:71;33334:1;33323:9;33319:17;33310:6;33266:71;:::i;:::-;33347:72;33415:2;33404:9;33400:18;33391:6;33347:72;:::i;:::-;33429:80;33505:2;33494:9;33490:18;33481:6;33429:80;:::i;:::-;33519;33595:2;33584:9;33580:18;33571:6;33519:80;:::i;:::-;33609:73;33677:3;33666:9;33662:19;33653:6;33609:73;:::i;:::-;33692;33760:3;33749:9;33745:19;33736:6;33692:73;:::i;:::-;32965:807;;;;;;;;;:::o;33778:143::-;33835:5;33866:6;33860:13;33851:22;;33882:33;33909:5;33882:33;:::i;:::-;33778:143;;;;:::o;33927:663::-;34015:6;34023;34031;34080:2;34068:9;34059:7;34055:23;34051:32;34048:119;;;34086:79;;:::i;:::-;34048:119;34206:1;34231:64;34287:7;34278:6;34267:9;34263:22;34231:64;:::i;:::-;34221:74;;34177:128;34344:2;34370:64;34426:7;34417:6;34406:9;34402:22;34370:64;:::i;:::-;34360:74;;34315:129;34483:2;34509:64;34565:7;34556:6;34545:9;34541:22;34509:64;:::i;:::-;34499:74;;34454:129;33927:663;;;;;:::o
Swarm Source
ipfs://8aed63ae98450ef6618b95881941b7c19cf57f9e2062cf7b148ca015f6b7e823
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.