ERC-20
Overview
Max Total Supply
10,000,000,000,000 LIVE
Holders
172
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BULLBEAR
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-25 */ pragma solidity ^0.8.15; /* Name: BULL&BEAR Ticker: LIVE Website: https://bullnbear.live TG: https://t.me/bullnbearportal What is it? BULL&BEAR aims to be the lookahead for predicting the bull & bear markets. Providing a complex analytical dApp for reporting and trading. */ // SPDX-License-Identifier: UNLICENSED abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence.... */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`... */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract BULLBEAR is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address private devWallet = address(0xFF8189c07581ff5909F24F6F30CE9f5e4105c9e6); address private opsWallet = address(0x6B7e6a492C1c8812B6296b5d75966337A0d1d47d); address private rewardsWallet = address(0x0E4f556a13d741Aa50F68D8B827D7d76d447B34c); uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; bool public enableEarlySellTax = true; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // Seller Map mapping (address => uint256) private _holderFirstBuyTimestamp; // Blacklist Map mapping (address => bool) private _blacklist; bool public transferDelayEnabled = true; uint256 public _totalBuys = 0; uint256 public _totalSells = 0; uint256 public _totalSellsToday = 0; uint256 public _totalBuysToday = 0; uint256 public buyTotalFees; uint256 public buyOpsFee; uint256 public buyDevFee; uint256 public buyRewardFee; uint256 public sellTotalFees; uint256 public sellOpsFee; uint256 public sellDevFee; uint256 public sellRewardFee; bool public liquidityEnabled; uint256 public earlysellRewardFee; uint256 public earlySellDevFee; uint256 public earlySellOpsFee; uint256 public tokensForOps; uint256 public tokensForReward; uint256 public tokensForDev; uint256 launchedAt; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event opsWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("BULL&BEAR", "LIVE") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyDevFee = 1; uint256 _buyOpsFee = 1; uint256 _buyRewardFee = 1; uint256 _sellOpsFee = 1; uint256 _sellDevFee = 1; uint256 _sellRewardFee = 1; uint256 _earlysellRewardFee = 2; uint256 _earlySellDevFee = 2; uint256 _earlySellOpsFee = 2; uint256 totalSupply = 1 * 1e13 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 30 / 1000; // 3% maxWallet swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet liquidityEnabled = false; buyDevFee = _buyDevFee; buyOpsFee = _buyOpsFee; buyRewardFee = _buyRewardFee; buyTotalFees = buyDevFee + buyRewardFee + buyOpsFee; sellDevFee = _sellDevFee; sellOpsFee = _sellOpsFee; sellRewardFee = _sellRewardFee; sellTotalFees = sellDevFee + sellRewardFee + sellOpsFee; earlysellRewardFee = _earlysellRewardFee; earlySellOpsFee = _earlySellOpsFee; earlySellDevFee = _earlySellDevFee; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(devWallet, true); excludeFromFees(opsWallet, true); excludeFromFees(rewardsWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(devWallet, true); excludeFromMaxTransaction(opsWallet, true); excludeFromMaxTransaction(rewardsWallet, true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; launchedAt = block.number; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } function setEarlySellTax(bool onoff) external onlyOwner { enableEarlySellTax = onoff; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } // to swap between auto LP and Rewards, turn off to enable Rewards. function updateLiquidityEnabled(bool enabled) external onlyOwner(){ liquidityEnabled = enabled; } function updateBuyFees(uint256 _devOpsFee, uint256 _opsFee, uint256 _liquidityFee) external onlyOwner { buyDevFee = _devOpsFee; buyOpsFee = _opsFee; buyRewardFee = _liquidityFee; buyTotalFees = buyDevFee + buyRewardFee + buyOpsFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _devFee, uint256 _opsFee, uint256 _liquidityFee, uint256 _earlysellRewardFee, uint256 _earlySellOpsFee, uint256 _earlySellDevFee) external onlyOwner { sellOpsFee = _opsFee; sellDevFee = _devFee; sellRewardFee = _liquidityFee; earlysellRewardFee = _earlysellRewardFee; earlySellOpsFee = _earlySellOpsFee; earlySellDevFee = _earlySellDevFee; sellTotalFees = sellRewardFee + sellDevFee + sellOpsFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function blacklistAccount (address account, bool isBlacklisted) public onlyOwner { require(block.number < launchedAt + 40, "Waited too long to blacklist"); _blacklist[account] = isBlacklisted; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateWallets(address newDevsWallet, address newOpsWallet) external onlyOwner { emit devWalletUpdated(newDevsWallet, devWallet); devWallet = newDevsWallet; emit opsWalletUpdated(newOpsWallet, opsWallet); opsWallet = newOpsWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } if (to == uniswapV2Pair && from != address(uniswapV2Router) && from != address(owner())) { _totalSells = _totalSells.add(1); _totalSellsToday = _totalSellsToday.add(1); } if(from == uniswapV2Pair){ _totalBuys = _totalBuys.add(1); _totalBuysToday = _totalBuysToday.add(1); } bool isBuy = from == uniswapV2Pair; if (!isBuy && enableEarlySellTax) { if (_holderFirstBuyTimestamp[from] != 0 && (_holderFirstBuyTimestamp[from] + (24 hours) >= block.timestamp)) { sellRewardFee = earlysellRewardFee; sellDevFee = earlySellDevFee; sellOpsFee = earlySellOpsFee; sellTotalFees = sellDevFee + sellRewardFee + sellOpsFee; } } else { if (_holderFirstBuyTimestamp[to] == 0) { _holderFirstBuyTimestamp[to] = block.timestamp; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if(takeFee){ if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForReward += fees * sellRewardFee / sellTotalFees; tokensForOps += fees * sellOpsFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; } else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForReward += fees * buyRewardFee / buyTotalFees; tokensForOps += fees * buyOpsFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function resetBuysAndSellsToday() external onlyOwner{ _totalBuysToday = 0; _totalSellsToday = 0; } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForReward + tokensForOps + tokensForDev; bool success; bool success2; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForReward / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForOps = ethBalance.mul(tokensForOps).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForOps - ethForDev; tokensForReward = 0; tokensForOps = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0 && liquidityEnabled){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForReward); }else if(!liquidityEnabled){ (success,) = address(rewardsWallet).call{value: address(this).balance/3}(""); } (success,) = address(opsWallet).call{value: address(this).balance/2}(""); (success2,) = address(devWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"opsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuys","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuysToday","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSells","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellsToday","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlysellRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableEarlySellTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetBuysAndSellsToday","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOpsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setEarlySellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devOpsFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateLiquidityEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_earlysellRewardFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellOpsFee","type":"uint256"},{"internalType":"uint256","name":"_earlySellDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevsWallet","type":"address"},{"internalType":"address","name":"newOpsWallet","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405273ff8189c07581ff5909f24f6f30ce9f5e4105c9e6600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736b7e6a492c1c8812b6296b5d75966337a0d1d47d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730e4f556a13d741aa50f68d8b827d7d76d447b34c600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506001600c60036101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055506000601155600060125560006013556000601455348015620001ab57600080fd5b506040518060400160405280600981526020017f42554c4c264245415200000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4c4956450000000000000000000000000000000000000000000000000000000081525081600390816200022991906200100f565b5080600490816200023b91906200100f565b5050506000620002506200086260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200031b8160016200086a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c1919062001160565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000429573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044f919062001160565b6040518363ffffffff1660e01b81526004016200046e929190620011a3565b6020604051808303816000875af11580156200048e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b4919062001160565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620004fc60a05160016200086a60201b60201c565b6200051160a05160016200096760201b60201c565b60006001905060006001905060006001905060006001905060006001905060006001905060006002905060006002905060006002905060006c7e37be2022c0914b268000000090506103e86014826200056b9190620011ff565b6200057791906200128f565b6009819055506103e8601e826200058f9190620011ff565b6200059b91906200128f565b600b81905550612710600a82620005b39190620011ff565b620005bf91906200128f565b600a819055506000601d60006101000a81548160ff0219169083151502179055508960178190555088601681905550876018819055506016546018546017546200060a9190620012c7565b620006169190620012c7565b60158190555085601b8190555086601a8190555084601c81905550601a54601c54601b54620006469190620012c7565b620006529190620012c7565b60198190555083601e819055508160208190555082601f819055506200068f6200068162000a0860201b60201c565b600162000a3260201b60201c565b620006a230600162000a3260201b60201c565b620006b761dead600162000a3260201b60201c565b620006ec600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a3260201b60201c565b62000721600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a3260201b60201c565b62000756600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000a3260201b60201c565b620007786200076a62000a0860201b60201c565b60016200086a60201b60201c565b6200078b3060016200086a60201b60201c565b620007a061dead60016200086a60201b60201c565b620007d5600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086a60201b60201c565b6200080a600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086a60201b60201c565b6200083f600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086a60201b60201c565b62000851338262000b7f60201b60201c565b5050505050505050505050620014f3565b600033905090565b6200087a6200086260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200090c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009039062001385565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000a426200086260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000acb9062001385565b60405180910390fd5b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000b739190620013c4565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000bf1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be89062001431565b60405180910390fd5b62000c056000838362000d2d60201b60201c565b62000c218160025462000d3260201b62002a5b1790919060201c565b60028190555062000c7f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000d3260201b62002a5b1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000d21919062001464565b60405180910390a35050565b505050565b600080828462000d439190620012c7565b90508381101562000d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d8290620014d1565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1757607f821691505b60208210810362000e2d5762000e2c62000dcf565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e58565b62000ea3868362000e58565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ef062000eea62000ee48462000ebb565b62000ec5565b62000ebb565b9050919050565b6000819050919050565b62000f0c8362000ecf565b62000f2462000f1b8262000ef7565b84845462000e65565b825550505050565b600090565b62000f3b62000f2c565b62000f4881848462000f01565b505050565b5b8181101562000f705762000f6460008262000f31565b60018101905062000f4e565b5050565b601f82111562000fbf5762000f898162000e33565b62000f948462000e48565b8101602085101562000fa4578190505b62000fbc62000fb38562000e48565b83018262000f4d565b50505b505050565b600082821c905092915050565b600062000fe46000198460080262000fc4565b1980831691505092915050565b600062000fff838362000fd1565b9150826002028217905092915050565b6200101a8262000d95565b67ffffffffffffffff81111562001036576200103562000da0565b5b62001042825462000dfe565b6200104f82828562000f74565b600060209050601f83116001811462001087576000841562001072578287015190505b6200107e858262000ff1565b865550620010ee565b601f198416620010978662000e33565b60005b82811015620010c1578489015182556001820191506020850194506020810190506200109a565b86831015620010e15784890151620010dd601f89168262000fd1565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200112882620010fb565b9050919050565b6200113a816200111b565b81146200114657600080fd5b50565b6000815190506200115a816200112f565b92915050565b600060208284031215620011795762001178620010f6565b5b6000620011898482850162001149565b91505092915050565b6200119d816200111b565b82525050565b6000604082019050620011ba600083018562001192565b620011c9602083018462001192565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200120c8262000ebb565b9150620012198362000ebb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620012555762001254620011d0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200129c8262000ebb565b9150620012a98362000ebb565b925082620012bc57620012bb62001260565b5b828204905092915050565b6000620012d48262000ebb565b9150620012e18362000ebb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620013195762001318620011d0565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200136d60208362001324565b91506200137a8262001335565b602082019050919050565b60006020820190508181036000830152620013a0816200135e565b9050919050565b60008115159050919050565b620013be81620013a7565b82525050565b6000602082019050620013db6000830184620013b3565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001419601f8362001324565b91506200142682620013e1565b602082019050919050565b600060208201905081810360008301526200144c816200140a565b9050919050565b6200145e8162000ebb565b82525050565b60006020820190506200147b600083018462001453565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620014b9601b8362001324565b9150620014c68262001481565b602082019050919050565b60006020820190508181036000830152620014ec81620014aa565b9050919050565b60805160a051615fa86200156d600039600081816115c001528181611dce01528181613122015281816135290152818161364d01526136db015260008181610fa5015281816130ca0152818161357f015281816146a701528181614788015281816147af0152818161484b01526148720152615fa86000f3fe6080604052600436106103bc5760003560e01c8063924de9b7116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063e8ba854f1161006f578063e8ba854f14610e39578063f2fde38b14610e62578063f52f4b6f14610e8b578063f8b45b0514610ea2576103c3565b8063dd62ed3e14610d7b578063de0aad5314610db8578063e2f4560514610de3578063e884f26014610e0e576103c3565b8063c8c8ebe4116100dc578063c8c8ebe414610cbd578063d257b34f14610ce8578063d5dd9b1714610d25578063d85ba06314610d50576103c3565b8063bbc0c74214610c15578063c024666814610c40578063c18bc19514610c69578063c876d0b914610c92576103c3565b8063a265777811610185578063a9059cbb11610154578063a9059cbb14610b45578063b048a4bb14610b82578063b62496f514610bad578063b8cf008b14610bea576103c3565b8063a265777814610a89578063a457c2d714610ab2578063a4d15b6414610aef578063a7fc9e2114610b1a576103c3565b80639c3b4fdc116101c15780639c3b4fdc146109dd5780639fccce3214610a08578063a002959c14610a33578063a0d82dc514610a5e576103c3565b8063924de9b714610935578063937340e11461095e57806395d89b41146109895780639a7a23d6146109b4576103c3565b80634a62bb65116102e257806373a942921161027557806378dd7d411161024457806378dd7d411461089f5780638095d564146108ca5780638a8c523c146108f35780638da5cb5b1461090a576103c3565b806373a94292146107f5578063751039fc146108205780637571336a1461084b5780637654fc7f14610874576103c3565b80636a486a8e116102b15780636a486a8e1461074b5780636ddd17131461077657806370a08231146107a1578063715018a6146107de576103c3565b80634a62bb651461068d5780634fbee193146106b857806356bb127d146106f5578063659ffb9c14610720576103c3565b806322d3e2aa1161035a578063313ce56711610329578063313ce567146105d1578063346a9742146105fc578063395093511461062557806349bd5a5e14610662576103c3565b806322d3e2aa1461051757806323b872dd146105405780632a02f3e61461057d5780632d5a5d34146105a8576103c3565b806310d5de531161039657806310d5de531461045b5780631694505e1461049857806318160ddd146104c3578063203e727e146104ee576103c3565b806306fdde03146103c8578063095ea7b3146103f35780630cfe2f3f14610430576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ecd565b6040516103ea9190614a1b565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614ad6565b610f5f565b6040516104279190614b31565b60405180910390f35b34801561043c57600080fd5b50610445610f7d565b6040516104529190614b5b565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190614b76565b610f83565b60405161048f9190614b31565b60405180910390f35b3480156104a457600080fd5b506104ad610fa3565b6040516104ba9190614c02565b60405180910390f35b3480156104cf57600080fd5b506104d8610fc7565b6040516104e59190614b5b565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190614c1d565b610fd1565b005b34801561052357600080fd5b5061053e60048036038101906105399190614c4a565b6110fb565b005b34801561054c57600080fd5b5061056760048036038101906105629190614cd7565b61122d565b6040516105749190614b31565b60405180910390f35b34801561058957600080fd5b50610592611306565b60405161059f9190614b5b565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190614d56565b61130c565b005b3480156105dd57600080fd5b506105e661144e565b6040516105f39190614db2565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190614dcd565b611457565b005b34801561063157600080fd5b5061064c60048036038101906106479190614ad6565b61150b565b6040516106599190614b31565b60405180910390f35b34801561066e57600080fd5b506106776115be565b6040516106849190614e09565b60405180910390f35b34801561069957600080fd5b506106a26115e2565b6040516106af9190614b31565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190614b76565b6115f5565b6040516106ec9190614b31565b60405180910390f35b34801561070157600080fd5b5061070a61164b565b6040516107179190614b5b565b60405180910390f35b34801561072c57600080fd5b50610735611651565b6040516107429190614b5b565b60405180910390f35b34801561075757600080fd5b50610760611657565b60405161076d9190614b5b565b60405180910390f35b34801561078257600080fd5b5061078b61165d565b6040516107989190614b31565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190614b76565b611670565b6040516107d59190614b5b565b60405180910390f35b3480156107ea57600080fd5b506107f36116b8565b005b34801561080157600080fd5b5061080a611810565b6040516108179190614b5b565b60405180910390f35b34801561082c57600080fd5b50610835611816565b6040516108429190614b31565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d9190614d56565b6118d1565b005b34801561088057600080fd5b506108896119c3565b6040516108969190614b5b565b60405180910390f35b3480156108ab57600080fd5b506108b46119c9565b6040516108c19190614b5b565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec9190614e24565b6119cf565b005b3480156108ff57600080fd5b50610908611ae9565b005b34801561091657600080fd5b5061091f611bbf565b60405161092c9190614e09565b60405180910390f35b34801561094157600080fd5b5061095c60048036038101906109579190614dcd565b611be9565b005b34801561096a57600080fd5b50610973611c9d565b6040516109809190614b5b565b60405180910390f35b34801561099557600080fd5b5061099e611ca3565b6040516109ab9190614a1b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614d56565b611d35565b005b3480156109e957600080fd5b506109f2611e68565b6040516109ff9190614b5b565b60405180910390f35b348015610a1457600080fd5b50610a1d611e6e565b604051610a2a9190614b5b565b60405180910390f35b348015610a3f57600080fd5b50610a48611e74565b604051610a559190614b5b565b60405180910390f35b348015610a6a57600080fd5b50610a73611e7a565b604051610a809190614b5b565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab9190614dcd565b611e80565b005b348015610abe57600080fd5b50610ad96004803603810190610ad49190614ad6565b611f34565b604051610ae69190614b31565b60405180910390f35b348015610afb57600080fd5b50610b04612001565b604051610b119190614b31565b60405180910390f35b348015610b2657600080fd5b50610b2f612014565b604051610b3c9190614b5b565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614ad6565b61201a565b604051610b799190614b31565b60405180910390f35b348015610b8e57600080fd5b50610b97612038565b604051610ba49190614b31565b60405180910390f35b348015610bb957600080fd5b50610bd46004803603810190610bcf9190614b76565b61204b565b604051610be19190614b31565b60405180910390f35b348015610bf657600080fd5b50610bff61206b565b604051610c0c9190614b5b565b60405180910390f35b348015610c2157600080fd5b50610c2a612071565b604051610c379190614b31565b60405180910390f35b348015610c4c57600080fd5b50610c676004803603810190610c629190614d56565b612084565b005b348015610c7557600080fd5b50610c906004803603810190610c8b9190614c1d565b6121c4565b005b348015610c9e57600080fd5b50610ca76122ee565b604051610cb49190614b31565b60405180910390f35b348015610cc957600080fd5b50610cd2612301565b604051610cdf9190614b5b565b60405180910390f35b348015610cf457600080fd5b50610d0f6004803603810190610d0a9190614c1d565b612307565b604051610d1c9190614b31565b60405180910390f35b348015610d3157600080fd5b50610d3a612477565b604051610d479190614b5b565b60405180910390f35b348015610d5c57600080fd5b50610d6561247d565b604051610d729190614b5b565b60405180910390f35b348015610d8757600080fd5b50610da26004803603810190610d9d9190614e77565b612483565b604051610daf9190614b5b565b60405180910390f35b348015610dc457600080fd5b50610dcd61250a565b604051610dda9190614b5b565b60405180910390f35b348015610def57600080fd5b50610df8612510565b604051610e059190614b5b565b60405180910390f35b348015610e1a57600080fd5b50610e23612516565b604051610e309190614b31565b60405180910390f35b348015610e4557600080fd5b50610e606004803603810190610e5b9190614e77565b6125d1565b005b348015610e6e57600080fd5b50610e896004803603810190610e849190614b76565b6127e6565b005b348015610e9757600080fd5b50610ea06129ac565b005b348015610eae57600080fd5b50610eb7612a55565b604051610ec49190614b5b565b60405180910390f35b606060038054610edc90614ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0890614ee6565b8015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b5050505050905090565b6000610f73610f6c612ab9565b8484612ac1565b6001905092915050565b60185481565b60266020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610fd9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90614f63565b60405180910390fd5b670de0b6b3a76400006103e8600161107e610fc7565b6110889190614fb2565b611092919061503b565b61109c919061503b565b8110156110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d5906150de565b60405180910390fd5b670de0b6b3a7640000816110f29190614fb2565b60098190555050565b611103612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614f63565b60405180910390fd5b84601a8190555085601b8190555083601c8190555082601e819055508160208190555080601f81905550601a54601b54601c546111cf91906150fe565b6111d991906150fe565b60198190555060146019541115611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906151a0565b60405180910390fd5b505050505050565b600061123a848484612c8a565b6112fb84611246612ab9565b6112f685604051806060016040528060288152602001615f2660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112ac612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b612ac1565b600190509392505050565b60135481565b611314612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90614f63565b60405180910390fd5b60286024546113b291906150fe565b43106113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061520c565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b61145f612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590614f63565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b60006115b4611518612ab9565b846115af8560016000611529612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5b90919063ffffffff16565b612ac1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b601a5481565b60195481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c0612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690614f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611820612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614f63565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6118d9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614f63565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60165481565b6119d7612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90614f63565b60405180910390fd5b826017819055508160168190555080601881905550601654601854601754611a8e91906150fe565b611a9891906150fe565b60158190555060146015541115611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb906151a0565b60405180910390fd5b505050565b611af1612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790614f63565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555043602481905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bf1612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790614f63565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60205481565b606060048054611cb290614ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614ee6565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614f63565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e519061529e565b60405180910390fd5b611e648282613dfe565b5050565b60175481565b60235481565b60225481565b601b5481565b611e88612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e90614f63565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b6000611ff7611f41612ab9565b84611ff285604051806060016040528060258152602001615f4e6025913960016000611f6b612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b612ac1565b6001905092915050565b600c60039054906101000a900460ff1681565b601f5481565b600061202e612027612ab9565b8484612c8a565b6001905092915050565b601d60009054906101000a900460ff1681565b60276020528060005260406000206000915054906101000a900460ff1681565b601e5481565b600c60019054906101000a900460ff1681565b61208c612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290614f63565b60405180910390fd5b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121b89190614b31565b60405180910390a25050565b6121cc612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290614f63565b60405180910390fd5b670de0b6b3a76400006103e86005612271610fc7565b61227b9190614fb2565b612285919061503b565b61228f919061503b565b8110156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c890615330565b60405180910390fd5b670de0b6b3a7640000816122e59190614fb2565b600b8190555050565b601060009054906101000a900460ff1681565b60095481565b6000612311612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239790614f63565b60405180910390fd5b620186a060016123ae610fc7565b6123b89190614fb2565b6123c2919061503b565b821015612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb906153c2565b60405180910390fd5b6103e86005612411610fc7565b61241b9190614fb2565b612425919061503b565b821115612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90615454565b60405180910390fd5b81600a8190555060019050919050565b60215481565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601c5481565b600a5481565b6000612520612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690614f63565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b6125d9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90614f63565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fba8a74f87db3edea870277fd7964be772c6d9340ec078b2304f38ae1b9f0e5d260405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6127ee612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287490614f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e3906154e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129b4612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90614f63565b60405180910390fd5b60006014819055506000601381905550565b600b5481565b6000808284612a6a91906150fe565b905083811015612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa690615552565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b27906155e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9690615676565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c7d9190614b5b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf090615708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f9061579a565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e0c5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e429061582c565b60405180910390fd5b60008103612e6457612e5f83836000613e9f565b613d95565b600c60009054906101000a900460ff161561352757612e81611bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eef5750612ebf611bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f62575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7b5750600560149054906101000a900460ff16155b1561352657600c60019054906101000a900460ff1661307557602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130355750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b90615898565b60405180910390fd5b5b601060009054906101000a900460ff161561323d57613092611bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561311957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561317157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561323c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee90615950565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132e05750602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133875760095481111561332a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613321906159e2565b60405180910390fd5b600b5461333683611670565b8261334191906150fe565b1115613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615a4e565b60405180910390fd5b613525565b602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561342a5750602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347957600954811115613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346b90615ae0565b60405180910390fd5b613524565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661352357600b546134d683611670565b826134e191906150fe565b1115613522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351990615a4e565b60405180910390fd5b5b5b5b5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156135ce57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561360d57506135dd611bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561364b576136286001601254612a5b90919063ffffffff16565b6012819055506136446001601354612a5b90919063ffffffff16565b6013819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d7576136b46001601154612a5b90919063ffffffff16565b6011819055506136d06001601454612a5b90919063ffffffff16565b6014819055505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156137445750600c60039054906101000a900460ff165b1561382f576000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156137e657504262015180600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137e391906150fe565b10155b1561382a57601e54601c81905550601f54601b81905550602054601a81905550601a54601c54601b5461381991906150fe565b61382391906150fe565b6019819055505b6138bc565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036138bb5742600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60006138c730611670565b90506000600a5482101590508080156138ec5750600c60029054906101000a900460ff165b80156139055750600560149054906101000a900460ff16155b801561395b5750602760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139b15750602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a075750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a4b576001600560146101000a81548160ff021916908315150217905550613a2f614132565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050602560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b015750602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b0b57600090505b60008115613d8457602760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b6e57506000601954115b15613c3b57613b9b6064613b8d601954896144f590919063ffffffff16565b61456f90919063ffffffff16565b9050601954601c5482613bae9190614fb2565b613bb8919061503b565b60226000828254613bc991906150fe565b92505081905550601954601a5482613be19190614fb2565b613beb919061503b565b60216000828254613bfc91906150fe565b92505081905550601954601b5482613c149190614fb2565b613c1e919061503b565b60236000828254613c2f91906150fe565b92505081905550613d60565b602760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c9657506000601554115b15613d5f57613cc36064613cb5601554896144f590919063ffffffff16565b61456f90919063ffffffff16565b905060155460185482613cd69190614fb2565b613ce0919061503b565b60226000828254613cf191906150fe565b9250508190555060155460165482613d099190614fb2565b613d13919061503b565b60216000828254613d2491906150fe565b9250508190555060155460175482613d3c9190614fb2565b613d46919061503b565b60236000828254613d5791906150fe565b925050819055505b5b6000811115613d7557613d74883083613e9f565b5b8086613d819190615b00565b95505b613d8f888888613e9f565b50505050505b505050565b6000838311158290613de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd99190614a1b565b60405180910390fd5b5060008385613df19190615b00565b9050809150509392505050565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0590615708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f749061579a565b60405180910390fd5b613f888383836145b9565b613ff381604051806060016040528060268152602001615f00602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614086816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141259190614b5b565b60405180910390a3505050565b600061413d30611670565b9050600060235460215460225461415491906150fe565b61415e91906150fe565b905060008060008414806141725750600083145b1561418057505050506144f3565b6014600a5461418f9190614fb2565b8411156141a8576014600a546141a59190614fb2565b93505b6000600284602254876141bb9190614fb2565b6141c5919061503b565b6141cf919061503b565b905060006141e682876145be90919063ffffffff16565b905060004790506141f682614608565b600061420b82476145be90919063ffffffff16565b9050600061423688614228602154856144f590919063ffffffff16565b61456f90919063ffffffff16565b9050600061426189614253602354866144f590919063ffffffff16565b61456f90919063ffffffff16565b905060008183856142729190615b00565b61427c9190615b00565b90506000602281905550600060218190555060006023819055506000871180156142a65750600081115b80156142be5750601d60009054906101000a900460ff165b1561430f576142cd8782614845565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260225460405161430293929190615b34565b60405180910390a16143bf565b601d60009054906101000a900460ff166143be57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600347614369919061503b565b60405161437590615b9c565b60006040518083038185875af1925050503d80600081146143b2576040519150601f19603f3d011682016040523d82523d6000602084013e6143b7565b606091505b5050809950505b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600247614405919061503b565b60405161441190615b9c565b60006040518083038185875af1925050503d806000811461444e576040519150601f19603f3d011682016040523d82523d6000602084013e614453565b606091505b505080995050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161449f90615b9c565b60006040518083038185875af1925050503d80600081146144dc576040519150601f19603f3d011682016040523d82523d6000602084013e6144e1565b606091505b50508098505050505050505050505050505b565b60008083036145075760009050614569565b600082846145159190614fb2565b9050828482614524919061503b565b14614564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455b90615c23565b60405180910390fd5b809150505b92915050565b60006145b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061491f565b905092915050565b505050565b600061460083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d9a565b905092915050565b6000600267ffffffffffffffff81111561462557614624615c43565b5b6040519080825280602002602001820160405280156146535781602001602082028036833780820191505090505b509050308160008151811061466b5761466a615c72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147349190615cb6565b8160018151811061474857614747615c72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147ad307f000000000000000000000000000000000000000000000000000000000000000084612ac1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161480f959493929190615ddc565b600060405180830381600087803b15801561482957600080fd5b505af115801561483d573d6000803e3d6000fd5b505050505050565b614870307f000000000000000000000000000000000000000000000000000000000000000084612ac1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016148d596959493929190615e36565b60606040518083038185885af11580156148f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906149189190615eac565b5050505050565b60008083118290614966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161495d9190614a1b565b60405180910390fd5b5060008385614975919061503b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149bc5780820151818401526020810190506149a1565b838111156149cb576000848401525b50505050565b6000601f19601f8301169050919050565b60006149ed82614982565b6149f7818561498d565b9350614a0781856020860161499e565b614a10816149d1565b840191505092915050565b60006020820190508181036000830152614a3581846149e2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614a6d82614a42565b9050919050565b614a7d81614a62565b8114614a8857600080fd5b50565b600081359050614a9a81614a74565b92915050565b6000819050919050565b614ab381614aa0565b8114614abe57600080fd5b50565b600081359050614ad081614aaa565b92915050565b60008060408385031215614aed57614aec614a3d565b5b6000614afb85828601614a8b565b9250506020614b0c85828601614ac1565b9150509250929050565b60008115159050919050565b614b2b81614b16565b82525050565b6000602082019050614b466000830184614b22565b92915050565b614b5581614aa0565b82525050565b6000602082019050614b706000830184614b4c565b92915050565b600060208284031215614b8c57614b8b614a3d565b5b6000614b9a84828501614a8b565b91505092915050565b6000819050919050565b6000614bc8614bc3614bbe84614a42565b614ba3565b614a42565b9050919050565b6000614bda82614bad565b9050919050565b6000614bec82614bcf565b9050919050565b614bfc81614be1565b82525050565b6000602082019050614c176000830184614bf3565b92915050565b600060208284031215614c3357614c32614a3d565b5b6000614c4184828501614ac1565b91505092915050565b60008060008060008060c08789031215614c6757614c66614a3d565b5b6000614c7589828a01614ac1565b9650506020614c8689828a01614ac1565b9550506040614c9789828a01614ac1565b9450506060614ca889828a01614ac1565b9350506080614cb989828a01614ac1565b92505060a0614cca89828a01614ac1565b9150509295509295509295565b600080600060608486031215614cf057614cef614a3d565b5b6000614cfe86828701614a8b565b9350506020614d0f86828701614a8b565b9250506040614d2086828701614ac1565b9150509250925092565b614d3381614b16565b8114614d3e57600080fd5b50565b600081359050614d5081614d2a565b92915050565b60008060408385031215614d6d57614d6c614a3d565b5b6000614d7b85828601614a8b565b9250506020614d8c85828601614d41565b9150509250929050565b600060ff82169050919050565b614dac81614d96565b82525050565b6000602082019050614dc76000830184614da3565b92915050565b600060208284031215614de357614de2614a3d565b5b6000614df184828501614d41565b91505092915050565b614e0381614a62565b82525050565b6000602082019050614e1e6000830184614dfa565b92915050565b600080600060608486031215614e3d57614e3c614a3d565b5b6000614e4b86828701614ac1565b9350506020614e5c86828701614ac1565b9250506040614e6d86828701614ac1565b9150509250925092565b60008060408385031215614e8e57614e8d614a3d565b5b6000614e9c85828601614a8b565b9250506020614ead85828601614a8b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614efe57607f821691505b602082108103614f1157614f10614eb7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614f4d60208361498d565b9150614f5882614f17565b602082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614fbd82614aa0565b9150614fc883614aa0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561500157615000614f83565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504682614aa0565b915061505183614aa0565b9250826150615761506061500c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c8602f8361498d565b91506150d38261506c565b604082019050919050565b600060208201905081810360008301526150f7816150bb565b9050919050565b600061510982614aa0565b915061511483614aa0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561514957615148614f83565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061518a601d8361498d565b915061519582615154565b602082019050919050565b600060208201905081810360008301526151b98161517d565b9050919050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c69737400000000600082015250565b60006151f6601c8361498d565b9150615201826151c0565b602082019050919050565b60006020820190508181036000830152615225816151e9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061528860398361498d565b91506152938261522c565b604082019050919050565b600060208201905081810360008301526152b78161527b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061531a60248361498d565b9150615325826152be565b604082019050919050565b600060208201905081810360008301526153498161530d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153ac60358361498d565b91506153b782615350565b604082019050919050565b600060208201905081810360008301526153db8161539f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061543e60348361498d565b9150615449826153e2565b604082019050919050565b6000602082019050818103600083015261546d81615431565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154d060268361498d565b91506154db82615474565b604082019050919050565b600060208201905081810360008301526154ff816154c3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061553c601b8361498d565b915061554782615506565b602082019050919050565b6000602082019050818103600083015261556b8161552f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ce60248361498d565b91506155d982615572565b604082019050919050565b600060208201905081810360008301526155fd816155c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061566060228361498d565b915061566b82615604565b604082019050919050565b6000602082019050818103600083015261568f81615653565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156f260258361498d565b91506156fd82615696565b604082019050919050565b60006020820190508181036000830152615721816156e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061578460238361498d565b915061578f82615728565b604082019050919050565b600060208201905081810360008301526157b381615777565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b600061581660318361498d565b9150615821826157ba565b604082019050919050565b6000602082019050818103600083015261584581615809565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061588260168361498d565b915061588d8261584c565b602082019050919050565b600060208201905081810360008301526158b181615875565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061593a60498361498d565b9150615945826158b8565b606082019050919050565b600060208201905081810360008301526159698161592d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159cc60358361498d565b91506159d782615970565b604082019050919050565b600060208201905081810360008301526159fb816159bf565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a3860138361498d565b9150615a4382615a02565b602082019050919050565b60006020820190508181036000830152615a6781615a2b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615aca60368361498d565b9150615ad582615a6e565b604082019050919050565b60006020820190508181036000830152615af981615abd565b9050919050565b6000615b0b82614aa0565b9150615b1683614aa0565b925082821015615b2957615b28614f83565b5b828203905092915050565b6000606082019050615b496000830186614b4c565b615b566020830185614b4c565b615b636040830184614b4c565b949350505050565b600081905092915050565b50565b6000615b86600083615b6b565b9150615b9182615b76565b600082019050919050565b6000615ba782615b79565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c0d60218361498d565b9150615c1882615bb1565b604082019050919050565b60006020820190508181036000830152615c3c81615c00565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615cb081614a74565b92915050565b600060208284031215615ccc57615ccb614a3d565b5b6000615cda84828501615ca1565b91505092915050565b6000819050919050565b6000615d08615d03615cfe84615ce3565b614ba3565b614aa0565b9050919050565b615d1881615ced565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d5381614a62565b82525050565b6000615d658383615d4a565b60208301905092915050565b6000602082019050919050565b6000615d8982615d1e565b615d938185615d29565b9350615d9e83615d3a565b8060005b83811015615dcf578151615db68882615d59565b9750615dc183615d71565b925050600181019050615da2565b5085935050505092915050565b600060a082019050615df16000830188614b4c565b615dfe6020830187615d0f565b8181036040830152615e108186615d7e565b9050615e1f6060830185614dfa565b615e2c6080830184614b4c565b9695505050505050565b600060c082019050615e4b6000830189614dfa565b615e586020830188614b4c565b615e656040830187615d0f565b615e726060830186615d0f565b615e7f6080830185614dfa565b615e8c60a0830184614b4c565b979650505050505050565b600081519050615ea681614aaa565b92915050565b600080600060608486031215615ec557615ec4614a3d565b5b6000615ed386828701615e97565b9350506020615ee486828701615e97565b9250506040615ef586828701615e97565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205270b3c38036a0686f4463ec208cab210564ebb87ff0582c222960568a9c4c4c64736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106103bc5760003560e01c8063924de9b7116101f2578063bbc0c7421161010d578063dd62ed3e116100a0578063e8ba854f1161006f578063e8ba854f14610e39578063f2fde38b14610e62578063f52f4b6f14610e8b578063f8b45b0514610ea2576103c3565b8063dd62ed3e14610d7b578063de0aad5314610db8578063e2f4560514610de3578063e884f26014610e0e576103c3565b8063c8c8ebe4116100dc578063c8c8ebe414610cbd578063d257b34f14610ce8578063d5dd9b1714610d25578063d85ba06314610d50576103c3565b8063bbc0c74214610c15578063c024666814610c40578063c18bc19514610c69578063c876d0b914610c92576103c3565b8063a265777811610185578063a9059cbb11610154578063a9059cbb14610b45578063b048a4bb14610b82578063b62496f514610bad578063b8cf008b14610bea576103c3565b8063a265777814610a89578063a457c2d714610ab2578063a4d15b6414610aef578063a7fc9e2114610b1a576103c3565b80639c3b4fdc116101c15780639c3b4fdc146109dd5780639fccce3214610a08578063a002959c14610a33578063a0d82dc514610a5e576103c3565b8063924de9b714610935578063937340e11461095e57806395d89b41146109895780639a7a23d6146109b4576103c3565b80634a62bb65116102e257806373a942921161027557806378dd7d411161024457806378dd7d411461089f5780638095d564146108ca5780638a8c523c146108f35780638da5cb5b1461090a576103c3565b806373a94292146107f5578063751039fc146108205780637571336a1461084b5780637654fc7f14610874576103c3565b80636a486a8e116102b15780636a486a8e1461074b5780636ddd17131461077657806370a08231146107a1578063715018a6146107de576103c3565b80634a62bb651461068d5780634fbee193146106b857806356bb127d146106f5578063659ffb9c14610720576103c3565b806322d3e2aa1161035a578063313ce56711610329578063313ce567146105d1578063346a9742146105fc578063395093511461062557806349bd5a5e14610662576103c3565b806322d3e2aa1461051757806323b872dd146105405780632a02f3e61461057d5780632d5a5d34146105a8576103c3565b806310d5de531161039657806310d5de531461045b5780631694505e1461049857806318160ddd146104c3578063203e727e146104ee576103c3565b806306fdde03146103c8578063095ea7b3146103f35780630cfe2f3f14610430576103c3565b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610ecd565b6040516103ea9190614a1b565b60405180910390f35b3480156103ff57600080fd5b5061041a60048036038101906104159190614ad6565b610f5f565b6040516104279190614b31565b60405180910390f35b34801561043c57600080fd5b50610445610f7d565b6040516104529190614b5b565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d9190614b76565b610f83565b60405161048f9190614b31565b60405180910390f35b3480156104a457600080fd5b506104ad610fa3565b6040516104ba9190614c02565b60405180910390f35b3480156104cf57600080fd5b506104d8610fc7565b6040516104e59190614b5b565b60405180910390f35b3480156104fa57600080fd5b5061051560048036038101906105109190614c1d565b610fd1565b005b34801561052357600080fd5b5061053e60048036038101906105399190614c4a565b6110fb565b005b34801561054c57600080fd5b5061056760048036038101906105629190614cd7565b61122d565b6040516105749190614b31565b60405180910390f35b34801561058957600080fd5b50610592611306565b60405161059f9190614b5b565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca9190614d56565b61130c565b005b3480156105dd57600080fd5b506105e661144e565b6040516105f39190614db2565b60405180910390f35b34801561060857600080fd5b50610623600480360381019061061e9190614dcd565b611457565b005b34801561063157600080fd5b5061064c60048036038101906106479190614ad6565b61150b565b6040516106599190614b31565b60405180910390f35b34801561066e57600080fd5b506106776115be565b6040516106849190614e09565b60405180910390f35b34801561069957600080fd5b506106a26115e2565b6040516106af9190614b31565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da9190614b76565b6115f5565b6040516106ec9190614b31565b60405180910390f35b34801561070157600080fd5b5061070a61164b565b6040516107179190614b5b565b60405180910390f35b34801561072c57600080fd5b50610735611651565b6040516107429190614b5b565b60405180910390f35b34801561075757600080fd5b50610760611657565b60405161076d9190614b5b565b60405180910390f35b34801561078257600080fd5b5061078b61165d565b6040516107989190614b31565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c39190614b76565b611670565b6040516107d59190614b5b565b60405180910390f35b3480156107ea57600080fd5b506107f36116b8565b005b34801561080157600080fd5b5061080a611810565b6040516108179190614b5b565b60405180910390f35b34801561082c57600080fd5b50610835611816565b6040516108429190614b31565b60405180910390f35b34801561085757600080fd5b50610872600480360381019061086d9190614d56565b6118d1565b005b34801561088057600080fd5b506108896119c3565b6040516108969190614b5b565b60405180910390f35b3480156108ab57600080fd5b506108b46119c9565b6040516108c19190614b5b565b60405180910390f35b3480156108d657600080fd5b506108f160048036038101906108ec9190614e24565b6119cf565b005b3480156108ff57600080fd5b50610908611ae9565b005b34801561091657600080fd5b5061091f611bbf565b60405161092c9190614e09565b60405180910390f35b34801561094157600080fd5b5061095c60048036038101906109579190614dcd565b611be9565b005b34801561096a57600080fd5b50610973611c9d565b6040516109809190614b5b565b60405180910390f35b34801561099557600080fd5b5061099e611ca3565b6040516109ab9190614a1b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614d56565b611d35565b005b3480156109e957600080fd5b506109f2611e68565b6040516109ff9190614b5b565b60405180910390f35b348015610a1457600080fd5b50610a1d611e6e565b604051610a2a9190614b5b565b60405180910390f35b348015610a3f57600080fd5b50610a48611e74565b604051610a559190614b5b565b60405180910390f35b348015610a6a57600080fd5b50610a73611e7a565b604051610a809190614b5b565b60405180910390f35b348015610a9557600080fd5b50610ab06004803603810190610aab9190614dcd565b611e80565b005b348015610abe57600080fd5b50610ad96004803603810190610ad49190614ad6565b611f34565b604051610ae69190614b31565b60405180910390f35b348015610afb57600080fd5b50610b04612001565b604051610b119190614b31565b60405180910390f35b348015610b2657600080fd5b50610b2f612014565b604051610b3c9190614b5b565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614ad6565b61201a565b604051610b799190614b31565b60405180910390f35b348015610b8e57600080fd5b50610b97612038565b604051610ba49190614b31565b60405180910390f35b348015610bb957600080fd5b50610bd46004803603810190610bcf9190614b76565b61204b565b604051610be19190614b31565b60405180910390f35b348015610bf657600080fd5b50610bff61206b565b604051610c0c9190614b5b565b60405180910390f35b348015610c2157600080fd5b50610c2a612071565b604051610c379190614b31565b60405180910390f35b348015610c4c57600080fd5b50610c676004803603810190610c629190614d56565b612084565b005b348015610c7557600080fd5b50610c906004803603810190610c8b9190614c1d565b6121c4565b005b348015610c9e57600080fd5b50610ca76122ee565b604051610cb49190614b31565b60405180910390f35b348015610cc957600080fd5b50610cd2612301565b604051610cdf9190614b5b565b60405180910390f35b348015610cf457600080fd5b50610d0f6004803603810190610d0a9190614c1d565b612307565b604051610d1c9190614b31565b60405180910390f35b348015610d3157600080fd5b50610d3a612477565b604051610d479190614b5b565b60405180910390f35b348015610d5c57600080fd5b50610d6561247d565b604051610d729190614b5b565b60405180910390f35b348015610d8757600080fd5b50610da26004803603810190610d9d9190614e77565b612483565b604051610daf9190614b5b565b60405180910390f35b348015610dc457600080fd5b50610dcd61250a565b604051610dda9190614b5b565b60405180910390f35b348015610def57600080fd5b50610df8612510565b604051610e059190614b5b565b60405180910390f35b348015610e1a57600080fd5b50610e23612516565b604051610e309190614b31565b60405180910390f35b348015610e4557600080fd5b50610e606004803603810190610e5b9190614e77565b6125d1565b005b348015610e6e57600080fd5b50610e896004803603810190610e849190614b76565b6127e6565b005b348015610e9757600080fd5b50610ea06129ac565b005b348015610eae57600080fd5b50610eb7612a55565b604051610ec49190614b5b565b60405180910390f35b606060038054610edc90614ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054610f0890614ee6565b8015610f555780601f10610f2a57610100808354040283529160200191610f55565b820191906000526020600020905b815481529060010190602001808311610f3857829003601f168201915b5050505050905090565b6000610f73610f6c612ab9565b8484612ac1565b6001905092915050565b60185481565b60266020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610fd9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90614f63565b60405180910390fd5b670de0b6b3a76400006103e8600161107e610fc7565b6110889190614fb2565b611092919061503b565b61109c919061503b565b8110156110de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d5906150de565b60405180910390fd5b670de0b6b3a7640000816110f29190614fb2565b60098190555050565b611103612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118990614f63565b60405180910390fd5b84601a8190555085601b8190555083601c8190555082601e819055508160208190555080601f81905550601a54601b54601c546111cf91906150fe565b6111d991906150fe565b60198190555060146019541115611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c906151a0565b60405180910390fd5b505050505050565b600061123a848484612c8a565b6112fb84611246612ab9565b6112f685604051806060016040528060288152602001615f2660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112ac612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b612ac1565b600190509392505050565b60135481565b611314612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90614f63565b60405180910390fd5b60286024546113b291906150fe565b43106113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea9061520c565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006012905090565b61145f612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e590614f63565b60405180910390fd5b80601d60006101000a81548160ff02191690831515021790555050565b60006115b4611518612ab9565b846115af8560016000611529612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5b90919063ffffffff16565b612ac1565b6001905092915050565b7f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823381565b600c60009054906101000a900460ff1681565b6000602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b601a5481565b60195481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116c0612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174690614f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b6000611820612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690614f63565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506001905090565b6118d9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90614f63565b60405180910390fd5b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b60165481565b6119d7612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90614f63565b60405180910390fd5b826017819055508160168190555080601881905550601654601854601754611a8e91906150fe565b611a9891906150fe565b60158190555060146015541115611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb906151a0565b60405180910390fd5b505050565b611af1612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790614f63565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff02191690831515021790555043602481905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611bf1612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7790614f63565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60205481565b606060048054611cb290614ee6565b80601f0160208091040260200160405190810160405280929190818152602001828054611cde90614ee6565b8015611d2b5780601f10611d0057610100808354040283529160200191611d2b565b820191906000526020600020905b815481529060010190602001808311611d0e57829003601f168201915b5050505050905090565b611d3d612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc390614f63565b60405180910390fd5b7f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e519061529e565b60405180910390fd5b611e648282613dfe565b5050565b60175481565b60235481565b60225481565b601b5481565b611e88612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0e90614f63565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b6000611ff7611f41612ab9565b84611ff285604051806060016040528060258152602001615f4e6025913960016000611f6b612ab9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b612ac1565b6001905092915050565b600c60039054906101000a900460ff1681565b601f5481565b600061202e612027612ab9565b8484612c8a565b6001905092915050565b601d60009054906101000a900460ff1681565b60276020528060005260406000206000915054906101000a900460ff1681565b601e5481565b600c60019054906101000a900460ff1681565b61208c612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290614f63565b60405180910390fd5b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121b89190614b31565b60405180910390a25050565b6121cc612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290614f63565b60405180910390fd5b670de0b6b3a76400006103e86005612271610fc7565b61227b9190614fb2565b612285919061503b565b61228f919061503b565b8110156122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c890615330565b60405180910390fd5b670de0b6b3a7640000816122e59190614fb2565b600b8190555050565b601060009054906101000a900460ff1681565b60095481565b6000612311612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239790614f63565b60405180910390fd5b620186a060016123ae610fc7565b6123b89190614fb2565b6123c2919061503b565b821015612404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fb906153c2565b60405180910390fd5b6103e86005612411610fc7565b61241b9190614fb2565b612425919061503b565b821115612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e90615454565b60405180910390fd5b81600a8190555060019050919050565b60215481565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601c5481565b600a5481565b6000612520612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a690614f63565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b6125d9612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90614f63565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fba8a74f87db3edea870277fd7964be772c6d9340ec078b2304f38ae1b9f0e5d260405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6127ee612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461287d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287490614f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e3906154e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6129b4612ab9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3a90614f63565b60405180910390fd5b60006014819055506000601381905550565b600b5481565b6000808284612a6a91906150fe565b905083811015612aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa690615552565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b27906155e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9690615676565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c7d9190614b5b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf090615708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5f9061579a565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612e0c5750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e429061582c565b60405180910390fd5b60008103612e6457612e5f83836000613e9f565b613d95565b600c60009054906101000a900460ff161561352757612e81611bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eef5750612ebf611bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f285750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f62575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f7b5750600560149054906101000a900460ff16155b1561352657600c60019054906101000a900460ff1661307557602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130355750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306b90615898565b60405180910390fd5b5b601060009054906101000a900460ff161561323d57613092611bbf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561311957507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561317157507f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561323c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee90615950565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132e05750602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133875760095481111561332a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613321906159e2565b60405180910390fd5b600b5461333683611670565b8261334191906150fe565b1115613382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337990615a4e565b60405180910390fd5b613525565b602760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561342a5750602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561347957600954811115613474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346b90615ae0565b60405180910390fd5b613524565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661352357600b546134d683611670565b826134e191906150fe565b1115613522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161351990615a4e565b60405180910390fd5b5b5b5b5b5b7f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156135ce57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561360d57506135dd611bbf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561364b576136286001601254612a5b90919063ffffffff16565b6012819055506136446001601354612a5b90919063ffffffff16565b6013819055505b7f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136d7576136b46001601154612a5b90919063ffffffff16565b6011819055506136d06001601454612a5b90919063ffffffff16565b6014819055505b60007f0000000000000000000000007e3e502dad5ee9df79fdf05145aba487d49c823373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16149050801580156137445750600c60039054906101000a900460ff165b1561382f576000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141580156137e657504262015180600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137e391906150fe565b10155b1561382a57601e54601c81905550601f54601b81905550602054601a81905550601a54601c54601b5461381991906150fe565b61382391906150fe565b6019819055505b6138bc565b6000600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036138bb5742600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b60006138c730611670565b90506000600a5482101590508080156138ec5750600c60029054906101000a900460ff165b80156139055750600560149054906101000a900460ff16155b801561395b5750602760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156139b15750602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a075750602560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a4b576001600560146101000a81548160ff021916908315150217905550613a2f614132565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050602560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613b015750602560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613b0b57600090505b60008115613d8457602760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b6e57506000601954115b15613c3b57613b9b6064613b8d601954896144f590919063ffffffff16565b61456f90919063ffffffff16565b9050601954601c5482613bae9190614fb2565b613bb8919061503b565b60226000828254613bc991906150fe565b92505081905550601954601a5482613be19190614fb2565b613beb919061503b565b60216000828254613bfc91906150fe565b92505081905550601954601b5482613c149190614fb2565b613c1e919061503b565b60236000828254613c2f91906150fe565b92505081905550613d60565b602760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613c9657506000601554115b15613d5f57613cc36064613cb5601554896144f590919063ffffffff16565b61456f90919063ffffffff16565b905060155460185482613cd69190614fb2565b613ce0919061503b565b60226000828254613cf191906150fe565b9250508190555060155460165482613d099190614fb2565b613d13919061503b565b60216000828254613d2491906150fe565b9250508190555060155460175482613d3c9190614fb2565b613d46919061503b565b60236000828254613d5791906150fe565b925050819055505b5b6000811115613d7557613d74883083613e9f565b5b8086613d819190615b00565b95505b613d8f888888613e9f565b50505050505b505050565b6000838311158290613de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd99190614a1b565b60405180910390fd5b5060008385613df19190615b00565b9050809150509392505050565b80602760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0590615708565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f749061579a565b60405180910390fd5b613f888383836145b9565b613ff381604051806060016040528060268152602001615f00602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d9a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614086816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5b90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141259190614b5b565b60405180910390a3505050565b600061413d30611670565b9050600060235460215460225461415491906150fe565b61415e91906150fe565b905060008060008414806141725750600083145b1561418057505050506144f3565b6014600a5461418f9190614fb2565b8411156141a8576014600a546141a59190614fb2565b93505b6000600284602254876141bb9190614fb2565b6141c5919061503b565b6141cf919061503b565b905060006141e682876145be90919063ffffffff16565b905060004790506141f682614608565b600061420b82476145be90919063ffffffff16565b9050600061423688614228602154856144f590919063ffffffff16565b61456f90919063ffffffff16565b9050600061426189614253602354866144f590919063ffffffff16565b61456f90919063ffffffff16565b905060008183856142729190615b00565b61427c9190615b00565b90506000602281905550600060218190555060006023819055506000871180156142a65750600081115b80156142be5750601d60009054906101000a900460ff165b1561430f576142cd8782614845565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260225460405161430293929190615b34565b60405180910390a16143bf565b601d60009054906101000a900460ff166143be57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600347614369919061503b565b60405161437590615b9c565b60006040518083038185875af1925050503d80600081146143b2576040519150601f19603f3d011682016040523d82523d6000602084013e6143b7565b606091505b5050809950505b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600247614405919061503b565b60405161441190615b9c565b60006040518083038185875af1925050503d806000811461444e576040519150601f19603f3d011682016040523d82523d6000602084013e614453565b606091505b505080995050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161449f90615b9c565b60006040518083038185875af1925050503d80600081146144dc576040519150601f19603f3d011682016040523d82523d6000602084013e6144e1565b606091505b50508098505050505050505050505050505b565b60008083036145075760009050614569565b600082846145159190614fb2565b9050828482614524919061503b565b14614564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161455b90615c23565b60405180910390fd5b809150505b92915050565b60006145b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061491f565b905092915050565b505050565b600061460083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d9a565b905092915050565b6000600267ffffffffffffffff81111561462557614624615c43565b5b6040519080825280602002602001820160405280156146535781602001602082028036833780820191505090505b509050308160008151811061466b5761466a615c72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147349190615cb6565b8160018151811061474857614747615c72565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147ad307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612ac1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161480f959493929190615ddc565b600060405180830381600087803b15801561482957600080fd5b505af115801561483d573d6000803e3d6000fd5b505050505050565b614870307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612ac1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008030426040518863ffffffff1660e01b81526004016148d596959493929190615e36565b60606040518083038185885af11580156148f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906149189190615eac565b5050505050565b60008083118290614966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161495d9190614a1b565b60405180910390fd5b5060008385614975919061503b565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156149bc5780820151818401526020810190506149a1565b838111156149cb576000848401525b50505050565b6000601f19601f8301169050919050565b60006149ed82614982565b6149f7818561498d565b9350614a0781856020860161499e565b614a10816149d1565b840191505092915050565b60006020820190508181036000830152614a3581846149e2565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614a6d82614a42565b9050919050565b614a7d81614a62565b8114614a8857600080fd5b50565b600081359050614a9a81614a74565b92915050565b6000819050919050565b614ab381614aa0565b8114614abe57600080fd5b50565b600081359050614ad081614aaa565b92915050565b60008060408385031215614aed57614aec614a3d565b5b6000614afb85828601614a8b565b9250506020614b0c85828601614ac1565b9150509250929050565b60008115159050919050565b614b2b81614b16565b82525050565b6000602082019050614b466000830184614b22565b92915050565b614b5581614aa0565b82525050565b6000602082019050614b706000830184614b4c565b92915050565b600060208284031215614b8c57614b8b614a3d565b5b6000614b9a84828501614a8b565b91505092915050565b6000819050919050565b6000614bc8614bc3614bbe84614a42565b614ba3565b614a42565b9050919050565b6000614bda82614bad565b9050919050565b6000614bec82614bcf565b9050919050565b614bfc81614be1565b82525050565b6000602082019050614c176000830184614bf3565b92915050565b600060208284031215614c3357614c32614a3d565b5b6000614c4184828501614ac1565b91505092915050565b60008060008060008060c08789031215614c6757614c66614a3d565b5b6000614c7589828a01614ac1565b9650506020614c8689828a01614ac1565b9550506040614c9789828a01614ac1565b9450506060614ca889828a01614ac1565b9350506080614cb989828a01614ac1565b92505060a0614cca89828a01614ac1565b9150509295509295509295565b600080600060608486031215614cf057614cef614a3d565b5b6000614cfe86828701614a8b565b9350506020614d0f86828701614a8b565b9250506040614d2086828701614ac1565b9150509250925092565b614d3381614b16565b8114614d3e57600080fd5b50565b600081359050614d5081614d2a565b92915050565b60008060408385031215614d6d57614d6c614a3d565b5b6000614d7b85828601614a8b565b9250506020614d8c85828601614d41565b9150509250929050565b600060ff82169050919050565b614dac81614d96565b82525050565b6000602082019050614dc76000830184614da3565b92915050565b600060208284031215614de357614de2614a3d565b5b6000614df184828501614d41565b91505092915050565b614e0381614a62565b82525050565b6000602082019050614e1e6000830184614dfa565b92915050565b600080600060608486031215614e3d57614e3c614a3d565b5b6000614e4b86828701614ac1565b9350506020614e5c86828701614ac1565b9250506040614e6d86828701614ac1565b9150509250925092565b60008060408385031215614e8e57614e8d614a3d565b5b6000614e9c85828601614a8b565b9250506020614ead85828601614a8b565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614efe57607f821691505b602082108103614f1157614f10614eb7565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614f4d60208361498d565b9150614f5882614f17565b602082019050919050565b60006020820190508181036000830152614f7c81614f40565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614fbd82614aa0565b9150614fc883614aa0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561500157615000614f83565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061504682614aa0565b915061505183614aa0565b9250826150615761506061500c565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006150c8602f8361498d565b91506150d38261506c565b604082019050919050565b600060208201905081810360008301526150f7816150bb565b9050919050565b600061510982614aa0565b915061511483614aa0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561514957615148614f83565b5b828201905092915050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061518a601d8361498d565b915061519582615154565b602082019050919050565b600060208201905081810360008301526151b98161517d565b9050919050565b7f57616974656420746f6f206c6f6e6720746f20626c61636b6c69737400000000600082015250565b60006151f6601c8361498d565b9150615201826151c0565b602082019050919050565b60006020820190508181036000830152615225816151e9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061528860398361498d565b91506152938261522c565b604082019050919050565b600060208201905081810360008301526152b78161527b565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061531a60248361498d565b9150615325826152be565b604082019050919050565b600060208201905081810360008301526153498161530d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006153ac60358361498d565b91506153b782615350565b604082019050919050565b600060208201905081810360008301526153db8161539f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061543e60348361498d565b9150615449826153e2565b604082019050919050565b6000602082019050818103600083015261546d81615431565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006154d060268361498d565b91506154db82615474565b604082019050919050565b600060208201905081810360008301526154ff816154c3565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061553c601b8361498d565b915061554782615506565b602082019050919050565b6000602082019050818103600083015261556b8161552f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006155ce60248361498d565b91506155d982615572565b604082019050919050565b600060208201905081810360008301526155fd816155c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061566060228361498d565b915061566b82615604565b604082019050919050565b6000602082019050818103600083015261568f81615653565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006156f260258361498d565b91506156fd82615696565b604082019050919050565b60006020820190508181036000830152615721816156e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061578460238361498d565b915061578f82615728565b604082019050919050565b600060208201905081810360008301526157b381615777565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b600061581660318361498d565b9150615821826157ba565b604082019050919050565b6000602082019050818103600083015261584581615809565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061588260168361498d565b915061588d8261584c565b602082019050919050565b600060208201905081810360008301526158b181615875565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061593a60498361498d565b9150615945826158b8565b606082019050919050565b600060208201905081810360008301526159698161592d565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006159cc60358361498d565b91506159d782615970565b604082019050919050565b600060208201905081810360008301526159fb816159bf565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615a3860138361498d565b9150615a4382615a02565b602082019050919050565b60006020820190508181036000830152615a6781615a2b565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615aca60368361498d565b9150615ad582615a6e565b604082019050919050565b60006020820190508181036000830152615af981615abd565b9050919050565b6000615b0b82614aa0565b9150615b1683614aa0565b925082821015615b2957615b28614f83565b5b828203905092915050565b6000606082019050615b496000830186614b4c565b615b566020830185614b4c565b615b636040830184614b4c565b949350505050565b600081905092915050565b50565b6000615b86600083615b6b565b9150615b9182615b76565b600082019050919050565b6000615ba782615b79565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615c0d60218361498d565b9150615c1882615bb1565b604082019050919050565b60006020820190508181036000830152615c3c81615c00565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615cb081614a74565b92915050565b600060208284031215615ccc57615ccb614a3d565b5b6000615cda84828501615ca1565b91505092915050565b6000819050919050565b6000615d08615d03615cfe84615ce3565b614ba3565b614aa0565b9050919050565b615d1881615ced565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d5381614a62565b82525050565b6000615d658383615d4a565b60208301905092915050565b6000602082019050919050565b6000615d8982615d1e565b615d938185615d29565b9350615d9e83615d3a565b8060005b83811015615dcf578151615db68882615d59565b9750615dc183615d71565b925050600181019050615da2565b5085935050505092915050565b600060a082019050615df16000830188614b4c565b615dfe6020830187615d0f565b8181036040830152615e108186615d7e565b9050615e1f6060830185614dfa565b615e2c6080830184614b4c565b9695505050505050565b600060c082019050615e4b6000830189614dfa565b615e586020830188614b4c565b615e656040830187615d0f565b615e726060830186615d0f565b615e7f6080830185614dfa565b615e8c60a0830184614b4c565b979650505050505050565b600081519050615ea681614aaa565b92915050565b600080600060608486031215615ec557615ec4614a3d565b5b6000615ed386828701615e97565b9350506020615ee486828701615e97565b9250506040615ef586828701615e97565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205270b3c38036a0686f4463ec208cab210564ebb87ff0582c222960568a9c4c4c64736f6c634300080f0033
Deployed Bytecode Sourcemap
29091:17197:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7189:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9363:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30505:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31027:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29170:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8312:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35534:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36898:570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10015:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30324:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37668:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8153:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36424:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10780:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29228:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29689:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38634:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30366:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30577:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30542:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29769:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8484:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21691:148;;;;;;;;;;;;;:::i;:::-;;30251:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34640:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36001:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30287:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30443:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36544:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34439:148;;;;;;;;;;;;;:::i;:::-;;21047:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36242:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30791:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7409:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37894:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30474:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30902:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30865:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30609:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34965:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11502:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29807:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30754:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8825:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30676:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31100:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30714:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29729;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37477:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35777:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30199:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29573:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35139:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30831:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30409;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9064:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30641:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29615:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34822:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38343:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21995:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43530:121;;;;;;;;;;;;;:::i;:::-;;29655:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7189:100;7243:13;7276:5;7269:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7189:100;:::o;9363:169::-;9446:4;9463:39;9472:12;:10;:12::i;:::-;9486:7;9495:6;9463:8;:39::i;:::-;9520:4;9513:11;;9363:169;;;;:::o;30505:27::-;;;;:::o;31027:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;29170:51::-;;;:::o;8312:108::-;8373:7;8400:12;;8393:19;;8312:108;:::o;35534:234::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35653:4:::1;35647;35643:1;35627:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35626:31;;;;:::i;:::-;35616:6;:41;;35608:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;35753:6;35743;:17;;;;:::i;:::-;35720:20;:40;;;;35534:234:::0;:::o;36898:570::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37103:7:::1;37090:10;:20;;;;37134:7;37121:10;:20;;;;37168:13;37152;:29;;;;37213:19;37192:18;:40;;;;37261:16;37243:15;:34;;;;37306:16;37288:15;:34;;;;37378:10;;37365;;37349:13;;:26;;;;:::i;:::-;:39;;;;:::i;:::-;37333:13;:55;;;;37424:2;37407:13;;:19;;37399:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36898:570:::0;;;;;;:::o;10015:355::-;10155:4;10172:36;10182:6;10190:9;10201:6;10172:9;:36::i;:::-;10219:121;10228:6;10236:12;:10;:12::i;:::-;10250:89;10288:6;10250:89;;;;;;;;;;;;;;;;;:11;:19;10262:6;10250:19;;;;;;;;;;;;;;;:33;10270:12;:10;:12::i;:::-;10250:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10219:8;:121::i;:::-;10358:4;10351:11;;10015:355;;;;;:::o;30324:35::-;;;;:::o;37668:217::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37796:2:::1;37783:10;;:15;;;;:::i;:::-;37768:12;:30;37760:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;37864:13;37842:10;:19;37853:7;37842:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;37668:217:::0;;:::o;8153:93::-;8211:5;8236:2;8229:9;;8153:93;:::o;36424:111::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36520:7:::1;36501:16;;:26;;;;;;;;;;;;;;;;;;36424:111:::0;:::o;10780:218::-;10868:4;10885:83;10894:12;:10;:12::i;:::-;10908:7;10917:50;10956:10;10917:11;:25;10929:12;:10;:12::i;:::-;10917:25;;;;;;;;;;;;;;;:34;10943:7;10917:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10885:8;:83::i;:::-;10986:4;10979:11;;10780:218;;;;:::o;29228:38::-;;;:::o;29689:33::-;;;;;;;;;;;;;:::o;38634:125::-;38699:4;38723:19;:28;38743:7;38723:28;;;;;;;;;;;;;;;;;;;;;;;;;38716:35;;38634:125;;;:::o;30366:34::-;;;;:::o;30577:25::-;;;;:::o;30542:28::-;;;;:::o;29769:31::-;;;;;;;;;;;;;:::o;8484:127::-;8558:7;8585:9;:18;8595:7;8585:18;;;;;;;;;;;;;;;;8578:25;;8484:127;;;:::o;21691:148::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21798:1:::1;21761:40;;21782:6;;;;;;;;;;;21761:40;;;;;;;;;;;;21829:1;21812:6;;:19;;;;;;;;;;;;;;;;;;21691:148::o:0;30251:29::-;;;;:::o;34640:120::-;34692:4;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34725:5:::1;34708:14;;:22;;;;;;;;;;;;;;;;;;34748:4;34741:11;;34640:120:::0;:::o;36001:144::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36133:4:::1;36091:31;:39;36123:6;36091:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;36001:144:::0;;:::o;30287:30::-;;;;:::o;30443:24::-;;;;:::o;36544:345::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36669:10:::1;36657:9;:22;;;;36702:7;36690:9;:19;;;;36735:13;36720:12;:28;;;;36801:9;;36786:12;;36774:9;;:24;;;;:::i;:::-;:36;;;;:::i;:::-;36759:12;:51;;;;36845:2;36829:12;;:18;;36821:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;36544:345:::0;;;:::o;34439:148::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34510:4:::1;34494:13;;:20;;;;;;;;;;;;;;;;;;34539:4;34525:11;;:18;;;;;;;;;;;;;;;;;;34567:12;34554:10;:25;;;;34439:148::o:0;21047:79::-;21085:7;21112:6;;;;;;;;;;;21105:13;;21047:79;:::o;36242:101::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36328:7:::1;36314:11;;:21;;;;;;;;;;;;;;;;;;36242:101:::0;:::o;30791:30::-;;;;:::o;7409:104::-;7465:13;7498:7;7491:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7409:104;:::o;37894:242::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38001:13:::1;37993:21;;:4;:21;;::::0;37985:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;38087:41;38116:4;38122:5;38087:28;:41::i;:::-;37894:242:::0;;:::o;30474:24::-;;;;:::o;30902:27::-;;;;:::o;30865:30::-;;;;:::o;30609:25::-;;;;:::o;34965:102::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35054:5:::1;35033:18;;:26;;;;;;;;;;;;;;;;;;34965:102:::0;:::o;11502:269::-;11595:4;11612:129;11621:12;:10;:12::i;:::-;11635:7;11644:96;11683:15;11644:96;;;;;;;;;;;;;;;;;:11;:25;11656:12;:10;:12::i;:::-;11644:25;;;;;;;;;;;;;;;:34;11670:7;11644:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11612:8;:129::i;:::-;11759:4;11752:11;;11502:269;;;;:::o;29807:37::-;;;;;;;;;;;;;:::o;30754:30::-;;;;:::o;8825:175::-;8911:4;8928:42;8938:12;:10;:12::i;:::-;8952:9;8963:6;8928:9;:42::i;:::-;8988:4;8981:11;;8825:175;;;;:::o;30676:28::-;;;;;;;;;;;;;:::o;31100:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;30714:33::-;;;;:::o;29729:::-;;;;;;;;;;;;;:::o;37477:182::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37593:8:::1;37562:19;:28;37582:7;37562:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;37633:7;37617:34;;;37642:8;37617:34;;;;;;:::i;:::-;;;;;;;;37477:182:::0;;:::o;35777:215::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35899:4:::1;35893;35889:1;35873:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35872:31;;;;:::i;:::-;35862:6;:41;;35854:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;35977:6;35967;:17;;;;:::i;:::-;35955:9;:29;;;;35777:215:::0;:::o;30199:39::-;;;;;;;;;;;;;:::o;29573:35::-;;;;:::o;35139:386::-;35220:4;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35277:6:::1;35273:1;35257:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;35244:9;:39;;35236:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;35393:4;35389:1;35373:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;35360:9;:37;;35352:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;35486:9;35465:18;:30;;;;35513:4;35506:11;;35139:386:::0;;;:::o;30831:27::-;;;;:::o;30409:::-;;;;:::o;9064:151::-;9153:7;9180:11;:18;9192:5;9180:18;;;;;;;;;;;;;;;:27;9199:7;9180:27;;;;;;;;;;;;;;;;9173:34;;9064:151;;;;:::o;30641:28::-;;;;:::o;29615:33::-;;;;:::o;34822:134::-;34882:4;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34921:5:::1;34898:20;;:28;;;;;;;;;;;;;;;;;;34944:4;34937:11;;34822:134:::0;:::o;38343:282::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38478:9:::1;;;;;;;;;;;38446:42;;38463:13;38446:42;;;;;;;;;;;;38511:13;38499:9;;:25;;;;;;;;;;;;;;;;;;38572:9;;;;;;;;;;;38541:41;;38558:12;38541:41;;;;;;;;;;;;38605:12;38593:9;;:24;;;;;;;;;;;;;;;;;;38343:282:::0;;:::o;21995:244::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22104:1:::1;22084:22;;:8;:22;;::::0;22076:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22194:8;22165:38;;22186:6;;;;;;;;;;;22165:38;;;;;;;;;;;;22223:8;22214:6;;:17;;;;;;;;;;;;;;;;;;21995:244:::0;:::o;43530:121::-;21270:12;:10;:12::i;:::-;21260:22;;:6;;;;;;;;;;;:22;;;21252:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43611:1:::1;43593:15;:19;;;;43642:1;43623:16;:20;;;;43530:121::o:0;29655:24::-;;;;:::o;16079:182::-;16137:7;16157:9;16173:1;16169;:5;;;;:::i;:::-;16157:17;;16198:1;16193;:6;;16185:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16252:1;16245:8;;;16079:182;;;;:::o;393:98::-;446:7;473:10;466:17;;393:98;:::o;14698:381::-;14851:1;14834:19;;:5;:19;;;14826:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14932:1;14913:21;;:7;:21;;;14905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15017:6;14987:11;:18;14999:5;14987:18;;;;;;;;;;;;;;;:27;15006:7;14987:27;;;;;;;;;;;;;;;:36;;;;15055:7;15039:32;;15048:5;15039:32;;;15064:6;15039:32;;;;;;:::i;:::-;;;;;;;;14698:381;;;:::o;38819:4703::-;38967:1;38951:18;;:4;:18;;;38943:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39044:1;39030:16;;:2;:16;;;39022:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39106:10;:14;39117:2;39106:14;;;;;;;;;;;;;;;;;;;;;;;;;39105:15;:36;;;;;39125:10;:16;39136:4;39125:16;;;;;;;;;;;;;;;;;;;;;;;;;39124:17;39105:36;39097:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;39220:1;39210:6;:11;39207:92;;39238:28;39254:4;39260:2;39264:1;39238:15;:28::i;:::-;39281:7;;39207:92;39315:14;;;;;;;;;;;39312:1611;;;39375:7;:5;:7::i;:::-;39367:15;;:4;:15;;;;:49;;;;;39409:7;:5;:7::i;:::-;39403:13;;:2;:13;;;;39367:49;:86;;;;;39451:1;39437:16;;:2;:16;;;;39367:86;:128;;;;;39488:6;39474:21;;:2;:21;;;;39367:128;:158;;;;;39517:8;;;;;;;;;;;39516:9;39367:158;39345:1567;;;39563:13;;;;;;;;;;;39559:148;;39608:19;:25;39628:4;39608:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39637:19;:23;39657:2;39637:23;;;;;;;;;;;;;;;;;;;;;;;;;39608:52;39600:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;39559:148;39729:20;;;;;;;;;;;39725:423;;;39783:7;:5;:7::i;:::-;39777:13;;:2;:13;;;;:47;;;;;39808:15;39794:30;;:2;:30;;;;39777:47;:79;;;;;39842:13;39828:28;;:2;:28;;;;39777:79;39773:356;;;39934:12;39892:28;:39;39921:9;39892:39;;;;;;;;;;;;;;;;:54;39884:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;40093:12;40051:28;:39;40080:9;40051:39;;;;;;;;;;;;;;;:54;;;;39773:356;39725:423;40170:25;:31;40196:4;40170:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40206:31;:35;40238:2;40206:35;;;;;;;;;;;;;;;;;;;;;;;;;40205:36;40170:71;40166:731;;;40288:20;;40278:6;:30;;40270:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40427:9;;40410:13;40420:2;40410:9;:13::i;:::-;40401:6;:22;;;;:::i;:::-;:35;;40393:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40166:731;;;40507:25;:29;40533:2;40507:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40541:31;:37;40573:4;40541:37;;;;;;;;;;;;;;;;;;;;;;;;;40540:38;40507:71;40503:394;;;40625:20;;40615:6;:30;;40607:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40503:394;;;40751:31;:35;40783:2;40751:35;;;;;;;;;;;;;;;;;;;;;;;;;40747:150;;40844:9;;40827:13;40837:2;40827:9;:13::i;:::-;40818:6;:22;;;;:::i;:::-;:35;;40810:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40747:150;40503:394;40166:731;39345:1567;39312:1611;40943:13;40937:19;;:2;:19;;;:55;;;;;40976:15;40960:32;;:4;:32;;;;40937:55;:83;;;;;41012:7;:5;:7::i;:::-;40996:24;;:4;:24;;;;40937:83;40933:205;;;41051:18;41067:1;41051:11;;:15;;:18;;;;:::i;:::-;41037:11;:32;;;;41103:23;41124:1;41103:16;;:20;;:23;;;;:::i;:::-;41084:16;:42;;;;40933:205;41159:13;41151:21;;:4;:21;;;41148:137;;41201:17;41216:1;41201:10;;:14;;:17;;;;:::i;:::-;41188:10;:30;;;;41251:22;41271:1;41251:15;;:19;;:22;;;;:::i;:::-;41233:15;:40;;;;41148:137;41304:10;41325:13;41317:21;;:4;:21;;;41304:34;;41354:5;41353:6;:28;;;;;41363:18;;;;;;;;;;;41353:28;41349:577;;;41436:1;41402:24;:30;41427:4;41402:30;;;;;;;;;;;;;;;;:35;;:120;;;;;41506:15;41493:8;41459:24;:30;41484:4;41459:30;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:62;;41402:120;41398:364;;;41560:18;;41544:13;:34;;;;41610:15;;41597:10;:28;;;;41657:15;;41644:10;:28;;;;41736:10;;41720:13;;41707:10;;:26;;;;:::i;:::-;:39;;;;:::i;:::-;41691:13;:55;;;;41398:364;41349:577;;;41831:1;41799:24;:28;41824:2;41799:28;;;;;;;;;;;;;;;;:33;41795:120;;41884:15;41853:24;:28;41878:2;41853:28;;;;;;;;;;;;;;;:46;;;;41795:120;41349:577;41939:28;41970:24;41988:4;41970:9;:24::i;:::-;41939:55;;42008:12;42047:18;;42023:20;:42;;42008:57;;42097:7;:35;;;;;42121:11;;;;;;;;;;;42097:35;:61;;;;;42150:8;;;;;;;;;;;42149:9;42097:61;:110;;;;;42176:25;:31;42202:4;42176:31;;;;;;;;;;;;;;;;;;;;;;;;;42175:32;42097:110;:153;;;;;42225:19;:25;42245:4;42225:25;;;;;;;;;;;;;;;;;;;;;;;;;42224:26;42097:153;:194;;;;;42268:19;:23;42288:2;42268:23;;;;;;;;;;;;;;;;;;;;;;;;;42267:24;42097:194;42079:328;;;42329:4;42318:8;;:15;;;;;;;;;;;;;;;;;;42351:10;:8;:10::i;:::-;42390:5;42379:8;;:16;;;;;;;;;;;;;;;;;;42079:328;42417:12;42433:8;;;;;;;;;;;42432:9;42417:24;;42458:19;:25;42478:4;42458:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42487:19;:23;42507:2;42487:23;;;;;;;;;;;;;;;;;;;;;;;;;42458:52;42455:99;;;42537:5;42527:15;;42455:99;42567:12;42597:7;42594:874;;;42624:25;:29;42650:2;42624:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;42673:1;42657:13;;:17;42624:50;42620:695;;;42701:34;42731:3;42701:25;42712:13;;42701:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42694:41;;42796:13;;42780;;42773:4;:20;;;;:::i;:::-;:36;;;;:::i;:::-;42754:15;;:55;;;;;;;:::i;:::-;;;;;;;;42864:13;;42851:10;;42844:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;42828:12;;:49;;;;;;;:::i;:::-;;;;;;;;42932:13;;42919:10;;42912:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;42896:12;;:49;;;;;;;:::i;:::-;;;;;;;;42620:695;;;42983:25;:31;43009:4;42983:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;43033:1;43018:12;;:16;42983:51;42980:335;;;43062:33;43091:3;43062:24;43073:12;;43062:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;43055:40;;43155:12;;43140;;43133:4;:19;;;;:::i;:::-;:34;;;;:::i;:::-;43114:15;;:53;;;;;;;:::i;:::-;;;;;;;;43221:12;;43209:9;;43202:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;43186:12;;:47;;;;;;;:::i;:::-;;;;;;;;43287:12;;43275:9;;43268:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;43252:12;;:47;;;;;;;:::i;:::-;;;;;;;;42980:335;42620:695;43342:1;43335:4;:8;43332:93;;;43367:42;43383:4;43397;43404;43367:15;:42::i;:::-;43332:93;43452:4;43442:14;;;;;:::i;:::-;;;42594:874;43481:33;43497:4;43503:2;43507:6;43481:15;:33::i;:::-;38932:4590;;;;;38819:4703;;;;:::o;16985:193::-;17071:7;17104:1;17099;:6;;17107:12;17091:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17131:9;17147:1;17143;:5;;;;:::i;:::-;17131:17;;17169:1;17162:8;;;16985:193;;;;;:::o;38145:189::-;38262:5;38228:25;:31;38254:4;38228:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38320:5;38286:40;;38314:4;38286:40;;;;;;;;;;;;38145:189;;:::o;12262:575::-;12420:1;12402:20;;:6;:20;;;12394:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12504:1;12483:23;;:9;:23;;;12475:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12560:47;12581:6;12589:9;12600:6;12560:20;:47::i;:::-;12641:71;12663:6;12641:71;;;;;;;;;;;;;;;;;:9;:17;12651:6;12641:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12621:9;:17;12631:6;12621:17;;;;;;;;;;;;;;;:91;;;;12746:32;12771:6;12746:9;:20;12756:9;12746:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12723:9;:20;12733:9;12723:20;;;;;;;;;;;;;;;:55;;;;12811:9;12794:35;;12803:6;12794:35;;;12822:6;12794:35;;;;;;:::i;:::-;;;;;;;;12262:575;;;:::o;44572:1711::-;44611:23;44637:24;44655:4;44637:9;:24::i;:::-;44611:50;;44672:25;44733:12;;44718;;44700:15;;:30;;;;:::i;:::-;:45;;;;:::i;:::-;44672:73;;44756:12;44779:13;44827:1;44808:15;:20;:46;;;;44853:1;44832:17;:22;44808:46;44805:60;;;44857:7;;;;;;44805:60;44920:2;44899:18;;:23;;;;:::i;:::-;44881:15;:41;44878:111;;;44975:2;44954:18;;:23;;;;:::i;:::-;44936:41;;44878:111;45048:23;45130:1;45110:17;45092:15;;45074;:33;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;45048:83;;45142:26;45171:36;45191:15;45171;:19;;:36;;;;:::i;:::-;45142:65;;45221:25;45249:21;45221:49;;45284:36;45301:18;45284:16;:36::i;:::-;45335:18;45356:44;45382:17;45356:21;:25;;:44;;;;:::i;:::-;45335:65;;45414:17;45434:51;45467:17;45434:28;45449:12;;45434:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;45414:71;;45496:17;45516:51;45549:17;45516:28;45531:12;;45516:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;45496:71;;45578:23;45629:9;45617;45604:10;:22;;;;:::i;:::-;:34;;;;:::i;:::-;45578:60;;45673:1;45655:15;:19;;;;45700:1;45685:12;:16;;;;45727:1;45712:12;:16;;;;45763:1;45745:15;:19;:42;;;;;45786:1;45768:15;:19;45745:42;:62;;;;;45791:16;;;;;;;;;;;45745:62;45742:356;;;45823:46;45836:15;45853;45823:12;:46::i;:::-;45889:68;45904:18;45924:15;45941;;45889:68;;;;;;;;:::i;:::-;;;;;;;;45742:356;;;45978:16;;;;;;;;;;;45974:124;;46031:13;;;;;;;;;;;46023:27;;46080:1;46058:21;:23;;;;:::i;:::-;46023:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46010:76;;;;;45974:124;45742:356;46142:9;;;;;;;;;;;46134:23;;46187:1;46165:21;:23;;;;:::i;:::-;46134:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46121:72;;;;;46226:9;;;;;;;;;;;46218:23;;46249:21;46218:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46204:71;;;;;44600:1683;;;;;;;;;;;44572:1711;:::o;17438:473::-;17496:7;17746:1;17741;:6;17737:47;;17771:1;17764:8;;;;17737:47;17797:9;17813:1;17809;:5;;;;:::i;:::-;17797:17;;17842:1;17837;17833;:5;;;;:::i;:::-;:10;17825:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17902:1;17895:8;;;17438:473;;;;;:::o;18388:132::-;18446:7;18473:39;18477:1;18480;18473:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18466:46;;18388:132;;;;:::o;15683:125::-;;;;:::o;16545:136::-;16603:7;16630:43;16634:1;16637;16630:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16623:50;;16545:136;;;;:::o;43659:475::-;43725:21;43763:1;43749:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43725:40;;43794:4;43776;43781:1;43776:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43820:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43810:4;43815:1;43810:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;43853:62;43870:4;43885:15;43903:11;43853:8;:62::i;:::-;43926:15;:66;;;44007:11;44033:1;44050:4;44077;44097:15;43926:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43714:420;43659:475;:::o;44143:420::-;44224:62;44241:4;44256:15;44274:11;44224:8;:62::i;:::-;44297:15;:31;;;44336:9;44369:4;44389:11;44415:1;44458;44509:4;44529:15;44297:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44143:420;;:::o;19017:279::-;19103:7;19135:1;19131;:5;19138:12;19123:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19162:9;19178:1;19174;:5;;;;:::i;:::-;19162:17;;19287:1;19280:8;;;19017:279;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:329::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:53;5463:7;5454:6;5443:9;5439:22;5418:53;:::i;:::-;5408:63;;5364:117;5159:329;;;;:::o;5494:1057::-;5598:6;5606;5614;5622;5630;5638;5687:3;5675:9;5666:7;5662:23;5658:33;5655:120;;;5694:79;;:::i;:::-;5655:120;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;6197:2;6223:53;6268:7;6259:6;6248:9;6244:22;6223:53;:::i;:::-;6213:63;;6168:118;6325:3;6352:53;6397:7;6388:6;6377:9;6373:22;6352:53;:::i;:::-;6342:63;;6296:119;6454:3;6481:53;6526:7;6517:6;6506:9;6502:22;6481:53;:::i;:::-;6471:63;;6425:119;5494:1057;;;;;;;;:::o;6557:619::-;6634:6;6642;6650;6699:2;6687:9;6678:7;6674:23;6670:32;6667:119;;;6705:79;;:::i;:::-;6667:119;6825:1;6850:53;6895:7;6886:6;6875:9;6871:22;6850:53;:::i;:::-;6840:63;;6796:117;6952:2;6978:53;7023:7;7014:6;7003:9;6999:22;6978:53;:::i;:::-;6968:63;;6923:118;7080:2;7106:53;7151:7;7142:6;7131:9;7127:22;7106:53;:::i;:::-;7096:63;;7051:118;6557:619;;;;;:::o;7182:116::-;7252:21;7267:5;7252:21;:::i;:::-;7245:5;7242:32;7232:60;;7288:1;7285;7278:12;7232:60;7182:116;:::o;7304:133::-;7347:5;7385:6;7372:20;7363:29;;7401:30;7425:5;7401:30;:::i;:::-;7304:133;;;;:::o;7443:468::-;7508:6;7516;7565:2;7553:9;7544:7;7540:23;7536:32;7533:119;;;7571:79;;:::i;:::-;7533:119;7691:1;7716:53;7761:7;7752:6;7741:9;7737:22;7716:53;:::i;:::-;7706:63;;7662:117;7818:2;7844:50;7886:7;7877:6;7866:9;7862:22;7844:50;:::i;:::-;7834:60;;7789:115;7443:468;;;;;:::o;7917:86::-;7952:7;7992:4;7985:5;7981:16;7970:27;;7917:86;;;:::o;8009:112::-;8092:22;8108:5;8092:22;:::i;:::-;8087:3;8080:35;8009:112;;:::o;8127:214::-;8216:4;8254:2;8243:9;8239:18;8231:26;;8267:67;8331:1;8320:9;8316:17;8307:6;8267:67;:::i;:::-;8127:214;;;;:::o;8347:323::-;8403:6;8452:2;8440:9;8431:7;8427:23;8423:32;8420:119;;;8458:79;;:::i;:::-;8420:119;8578:1;8603:50;8645:7;8636:6;8625:9;8621:22;8603:50;:::i;:::-;8593:60;;8549:114;8347:323;;;;:::o;8676:118::-;8763:24;8781:5;8763:24;:::i;:::-;8758:3;8751:37;8676:118;;:::o;8800:222::-;8893:4;8931:2;8920:9;8916:18;8908:26;;8944:71;9012:1;9001:9;8997:17;8988:6;8944:71;:::i;:::-;8800:222;;;;:::o;9028:619::-;9105:6;9113;9121;9170:2;9158:9;9149:7;9145:23;9141:32;9138:119;;;9176:79;;:::i;:::-;9138:119;9296:1;9321:53;9366:7;9357:6;9346:9;9342:22;9321:53;:::i;:::-;9311:63;;9267:117;9423:2;9449:53;9494:7;9485:6;9474:9;9470:22;9449:53;:::i;:::-;9439:63;;9394:118;9551:2;9577:53;9622:7;9613:6;9602:9;9598:22;9577:53;:::i;:::-;9567:63;;9522:118;9028:619;;;;;:::o;9653:474::-;9721:6;9729;9778:2;9766:9;9757:7;9753:23;9749:32;9746:119;;;9784:79;;:::i;:::-;9746:119;9904:1;9929:53;9974:7;9965:6;9954:9;9950:22;9929:53;:::i;:::-;9919:63;;9875:117;10031:2;10057:53;10102:7;10093:6;10082:9;10078:22;10057:53;:::i;:::-;10047:63;;10002:118;9653:474;;;;;:::o;10133:180::-;10181:77;10178:1;10171:88;10278:4;10275:1;10268:15;10302:4;10299:1;10292:15;10319:320;10363:6;10400:1;10394:4;10390:12;10380:22;;10447:1;10441:4;10437:12;10468:18;10458:81;;10524:4;10516:6;10512:17;10502:27;;10458:81;10586:2;10578:6;10575:14;10555:18;10552:38;10549:84;;10605:18;;:::i;:::-;10549:84;10370:269;10319:320;;;:::o;10645:182::-;10785:34;10781:1;10773:6;10769:14;10762:58;10645:182;:::o;10833:366::-;10975:3;10996:67;11060:2;11055:3;10996:67;:::i;:::-;10989:74;;11072:93;11161:3;11072:93;:::i;:::-;11190:2;11185:3;11181:12;11174:19;;10833:366;;;:::o;11205:419::-;11371:4;11409:2;11398:9;11394:18;11386:26;;11458:9;11452:4;11448:20;11444:1;11433:9;11429:17;11422:47;11486:131;11612:4;11486:131;:::i;:::-;11478:139;;11205:419;;;:::o;11630:180::-;11678:77;11675:1;11668:88;11775:4;11772:1;11765:15;11799:4;11796:1;11789:15;11816:348;11856:7;11879:20;11897:1;11879:20;:::i;:::-;11874:25;;11913:20;11931:1;11913:20;:::i;:::-;11908:25;;12101:1;12033:66;12029:74;12026:1;12023:81;12018:1;12011:9;12004:17;12000:105;11997:131;;;12108:18;;:::i;:::-;11997:131;12156:1;12153;12149:9;12138:20;;11816:348;;;;:::o;12170:180::-;12218:77;12215:1;12208:88;12315:4;12312:1;12305:15;12339:4;12336:1;12329:15;12356:185;12396:1;12413:20;12431:1;12413:20;:::i;:::-;12408:25;;12447:20;12465:1;12447:20;:::i;:::-;12442:25;;12486:1;12476:35;;12491:18;;:::i;:::-;12476:35;12533:1;12530;12526:9;12521:14;;12356:185;;;;:::o;12547:234::-;12687:34;12683:1;12675:6;12671:14;12664:58;12756:17;12751:2;12743:6;12739:15;12732:42;12547:234;:::o;12787:366::-;12929:3;12950:67;13014:2;13009:3;12950:67;:::i;:::-;12943:74;;13026:93;13115:3;13026:93;:::i;:::-;13144:2;13139:3;13135:12;13128:19;;12787:366;;;:::o;13159:419::-;13325:4;13363:2;13352:9;13348:18;13340:26;;13412:9;13406:4;13402:20;13398:1;13387:9;13383:17;13376:47;13440:131;13566:4;13440:131;:::i;:::-;13432:139;;13159:419;;;:::o;13584:305::-;13624:3;13643:20;13661:1;13643:20;:::i;:::-;13638:25;;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13831:1;13763:66;13759:74;13756:1;13753:81;13750:107;;;13837:18;;:::i;:::-;13750:107;13881:1;13878;13874:9;13867:16;;13584:305;;;;:::o;13895:179::-;14035:31;14031:1;14023:6;14019:14;14012:55;13895:179;:::o;14080:366::-;14222:3;14243:67;14307:2;14302:3;14243:67;:::i;:::-;14236:74;;14319:93;14408:3;14319:93;:::i;:::-;14437:2;14432:3;14428:12;14421:19;;14080:366;;;:::o;14452:419::-;14618:4;14656:2;14645:9;14641:18;14633:26;;14705:9;14699:4;14695:20;14691:1;14680:9;14676:17;14669:47;14733:131;14859:4;14733:131;:::i;:::-;14725:139;;14452:419;;;:::o;14877:178::-;15017:30;15013:1;15005:6;15001:14;14994:54;14877:178;:::o;15061:366::-;15203:3;15224:67;15288:2;15283:3;15224:67;:::i;:::-;15217:74;;15300:93;15389:3;15300:93;:::i;:::-;15418:2;15413:3;15409:12;15402:19;;15061:366;;;:::o;15433:419::-;15599:4;15637:2;15626:9;15622:18;15614:26;;15686:9;15680:4;15676:20;15672:1;15661:9;15657:17;15650:47;15714:131;15840:4;15714:131;:::i;:::-;15706:139;;15433:419;;;:::o;15858:244::-;15998:34;15994:1;15986:6;15982:14;15975:58;16067:27;16062:2;16054:6;16050:15;16043:52;15858:244;:::o;16108:366::-;16250:3;16271:67;16335:2;16330:3;16271:67;:::i;:::-;16264:74;;16347:93;16436:3;16347:93;:::i;:::-;16465:2;16460:3;16456:12;16449:19;;16108:366;;;:::o;16480:419::-;16646:4;16684:2;16673:9;16669:18;16661:26;;16733:9;16727:4;16723:20;16719:1;16708:9;16704:17;16697:47;16761:131;16887:4;16761:131;:::i;:::-;16753:139;;16480:419;;;:::o;16905:223::-;17045:34;17041:1;17033:6;17029:14;17022:58;17114:6;17109:2;17101:6;17097:15;17090:31;16905:223;:::o;17134:366::-;17276:3;17297:67;17361:2;17356:3;17297:67;:::i;:::-;17290:74;;17373:93;17462:3;17373:93;:::i;:::-;17491:2;17486:3;17482:12;17475:19;;17134:366;;;:::o;17506:419::-;17672:4;17710:2;17699:9;17695:18;17687:26;;17759:9;17753:4;17749:20;17745:1;17734:9;17730:17;17723:47;17787:131;17913:4;17787:131;:::i;:::-;17779:139;;17506:419;;;:::o;17931:240::-;18071:34;18067:1;18059:6;18055:14;18048:58;18140:23;18135:2;18127:6;18123:15;18116:48;17931:240;:::o;18177:366::-;18319:3;18340:67;18404:2;18399:3;18340:67;:::i;:::-;18333:74;;18416:93;18505:3;18416:93;:::i;:::-;18534:2;18529:3;18525:12;18518:19;;18177:366;;;:::o;18549:419::-;18715:4;18753:2;18742:9;18738:18;18730:26;;18802:9;18796:4;18792:20;18788:1;18777:9;18773:17;18766:47;18830:131;18956:4;18830:131;:::i;:::-;18822:139;;18549:419;;;:::o;18974:239::-;19114:34;19110:1;19102:6;19098:14;19091:58;19183:22;19178:2;19170:6;19166:15;19159:47;18974:239;:::o;19219:366::-;19361:3;19382:67;19446:2;19441:3;19382:67;:::i;:::-;19375:74;;19458:93;19547:3;19458:93;:::i;:::-;19576:2;19571:3;19567:12;19560:19;;19219:366;;;:::o;19591:419::-;19757:4;19795:2;19784:9;19780:18;19772:26;;19844:9;19838:4;19834:20;19830:1;19819:9;19815:17;19808:47;19872:131;19998:4;19872:131;:::i;:::-;19864:139;;19591:419;;;:::o;20016:225::-;20156:34;20152:1;20144:6;20140:14;20133:58;20225:8;20220:2;20212:6;20208:15;20201:33;20016:225;:::o;20247:366::-;20389:3;20410:67;20474:2;20469:3;20410:67;:::i;:::-;20403:74;;20486:93;20575:3;20486:93;:::i;:::-;20604:2;20599:3;20595:12;20588:19;;20247:366;;;:::o;20619:419::-;20785:4;20823:2;20812:9;20808:18;20800:26;;20872:9;20866:4;20862:20;20858:1;20847:9;20843:17;20836:47;20900:131;21026:4;20900:131;:::i;:::-;20892:139;;20619:419;;;:::o;21044:177::-;21184:29;21180:1;21172:6;21168:14;21161:53;21044:177;:::o;21227:366::-;21369:3;21390:67;21454:2;21449:3;21390:67;:::i;:::-;21383:74;;21466:93;21555:3;21466:93;:::i;:::-;21584:2;21579:3;21575:12;21568:19;;21227:366;;;:::o;21599:419::-;21765:4;21803:2;21792:9;21788:18;21780:26;;21852:9;21846:4;21842:20;21838:1;21827:9;21823:17;21816:47;21880:131;22006:4;21880:131;:::i;:::-;21872:139;;21599:419;;;:::o;22024:223::-;22164:34;22160:1;22152:6;22148:14;22141:58;22233:6;22228:2;22220:6;22216:15;22209:31;22024:223;:::o;22253:366::-;22395:3;22416:67;22480:2;22475:3;22416:67;:::i;:::-;22409:74;;22492:93;22581:3;22492:93;:::i;:::-;22610:2;22605:3;22601:12;22594:19;;22253:366;;;:::o;22625:419::-;22791:4;22829:2;22818:9;22814:18;22806:26;;22878:9;22872:4;22868:20;22864:1;22853:9;22849:17;22842:47;22906:131;23032:4;22906:131;:::i;:::-;22898:139;;22625:419;;;:::o;23050:221::-;23190:34;23186:1;23178:6;23174:14;23167:58;23259:4;23254:2;23246:6;23242:15;23235:29;23050:221;:::o;23277:366::-;23419:3;23440:67;23504:2;23499:3;23440:67;:::i;:::-;23433:74;;23516:93;23605:3;23516:93;:::i;:::-;23634:2;23629:3;23625:12;23618:19;;23277:366;;;:::o;23649:419::-;23815:4;23853:2;23842:9;23838:18;23830:26;;23902:9;23896:4;23892:20;23888:1;23877:9;23873:17;23866:47;23930:131;24056:4;23930:131;:::i;:::-;23922:139;;23649:419;;;:::o;24074:224::-;24214:34;24210:1;24202:6;24198:14;24191:58;24283:7;24278:2;24270:6;24266:15;24259:32;24074:224;:::o;24304:366::-;24446:3;24467:67;24531:2;24526:3;24467:67;:::i;:::-;24460:74;;24543:93;24632:3;24543:93;:::i;:::-;24661:2;24656:3;24652:12;24645:19;;24304:366;;;:::o;24676:419::-;24842:4;24880:2;24869:9;24865:18;24857:26;;24929:9;24923:4;24919:20;24915:1;24904:9;24900:17;24893:47;24957:131;25083:4;24957:131;:::i;:::-;24949:139;;24676:419;;;:::o;25101:222::-;25241:34;25237:1;25229:6;25225:14;25218:58;25310:5;25305:2;25297:6;25293:15;25286:30;25101:222;:::o;25329:366::-;25471:3;25492:67;25556:2;25551:3;25492:67;:::i;:::-;25485:74;;25568:93;25657:3;25568:93;:::i;:::-;25686:2;25681:3;25677:12;25670:19;;25329:366;;;:::o;25701:419::-;25867:4;25905:2;25894:9;25890:18;25882:26;;25954:9;25948:4;25944:20;25940:1;25929:9;25925:17;25918:47;25982:131;26108:4;25982:131;:::i;:::-;25974:139;;25701:419;;;:::o;26126:236::-;26266:34;26262:1;26254:6;26250:14;26243:58;26335:19;26330:2;26322:6;26318:15;26311:44;26126:236;:::o;26368:366::-;26510:3;26531:67;26595:2;26590:3;26531:67;:::i;:::-;26524:74;;26607:93;26696:3;26607:93;:::i;:::-;26725:2;26720:3;26716:12;26709:19;;26368:366;;;:::o;26740:419::-;26906:4;26944:2;26933:9;26929:18;26921:26;;26993:9;26987:4;26983:20;26979:1;26968:9;26964:17;26957:47;27021:131;27147:4;27021:131;:::i;:::-;27013:139;;26740:419;;;:::o;27165:172::-;27305:24;27301:1;27293:6;27289:14;27282:48;27165:172;:::o;27343:366::-;27485:3;27506:67;27570:2;27565:3;27506:67;:::i;:::-;27499:74;;27582:93;27671:3;27582:93;:::i;:::-;27700:2;27695:3;27691:12;27684:19;;27343:366;;;:::o;27715:419::-;27881:4;27919:2;27908:9;27904:18;27896:26;;27968:9;27962:4;27958:20;27954:1;27943:9;27939:17;27932:47;27996:131;28122:4;27996:131;:::i;:::-;27988:139;;27715:419;;;:::o;28140:297::-;28280:34;28276:1;28268:6;28264:14;28257:58;28349:34;28344:2;28336:6;28332:15;28325:59;28418:11;28413:2;28405:6;28401:15;28394:36;28140:297;:::o;28443:366::-;28585:3;28606:67;28670:2;28665:3;28606:67;:::i;:::-;28599:74;;28682:93;28771:3;28682:93;:::i;:::-;28800:2;28795:3;28791:12;28784:19;;28443:366;;;:::o;28815:419::-;28981:4;29019:2;29008:9;29004:18;28996:26;;29068:9;29062:4;29058:20;29054:1;29043:9;29039:17;29032:47;29096:131;29222:4;29096:131;:::i;:::-;29088:139;;28815:419;;;:::o;29240:240::-;29380:34;29376:1;29368:6;29364:14;29357:58;29449:23;29444:2;29436:6;29432:15;29425:48;29240:240;:::o;29486:366::-;29628:3;29649:67;29713:2;29708:3;29649:67;:::i;:::-;29642:74;;29725:93;29814:3;29725:93;:::i;:::-;29843:2;29838:3;29834:12;29827:19;;29486:366;;;:::o;29858:419::-;30024:4;30062:2;30051:9;30047:18;30039:26;;30111:9;30105:4;30101:20;30097:1;30086:9;30082:17;30075:47;30139:131;30265:4;30139:131;:::i;:::-;30131:139;;29858:419;;;:::o;30283:169::-;30423:21;30419:1;30411:6;30407:14;30400:45;30283:169;:::o;30458:366::-;30600:3;30621:67;30685:2;30680:3;30621:67;:::i;:::-;30614:74;;30697:93;30786:3;30697:93;:::i;:::-;30815:2;30810:3;30806:12;30799:19;;30458:366;;;:::o;30830:419::-;30996:4;31034:2;31023:9;31019:18;31011:26;;31083:9;31077:4;31073:20;31069:1;31058:9;31054:17;31047:47;31111:131;31237:4;31111:131;:::i;:::-;31103:139;;30830:419;;;:::o;31255:241::-;31395:34;31391:1;31383:6;31379:14;31372:58;31464:24;31459:2;31451:6;31447:15;31440:49;31255:241;:::o;31502:366::-;31644:3;31665:67;31729:2;31724:3;31665:67;:::i;:::-;31658:74;;31741:93;31830:3;31741:93;:::i;:::-;31859:2;31854:3;31850:12;31843:19;;31502:366;;;:::o;31874:419::-;32040:4;32078:2;32067:9;32063:18;32055:26;;32127:9;32121:4;32117:20;32113:1;32102:9;32098:17;32091:47;32155:131;32281:4;32155:131;:::i;:::-;32147:139;;31874:419;;;:::o;32299:191::-;32339:4;32359:20;32377:1;32359:20;:::i;:::-;32354:25;;32393:20;32411:1;32393:20;:::i;:::-;32388:25;;32432:1;32429;32426:8;32423:34;;;32437:18;;:::i;:::-;32423:34;32482:1;32479;32475:9;32467:17;;32299:191;;;;:::o;32496:442::-;32645:4;32683:2;32672:9;32668:18;32660:26;;32696:71;32764:1;32753:9;32749:17;32740:6;32696:71;:::i;:::-;32777:72;32845:2;32834:9;32830:18;32821:6;32777:72;:::i;:::-;32859;32927:2;32916:9;32912:18;32903:6;32859:72;:::i;:::-;32496:442;;;;;;:::o;32944:147::-;33045:11;33082:3;33067:18;;32944:147;;;;:::o;33097:114::-;;:::o;33217:398::-;33376:3;33397:83;33478:1;33473:3;33397:83;:::i;:::-;33390:90;;33489:93;33578:3;33489:93;:::i;:::-;33607:1;33602:3;33598:11;33591:18;;33217:398;;;:::o;33621:379::-;33805:3;33827:147;33970:3;33827:147;:::i;:::-;33820:154;;33991:3;33984:10;;33621:379;;;:::o;34006:220::-;34146:34;34142:1;34134:6;34130:14;34123:58;34215:3;34210:2;34202:6;34198:15;34191:28;34006:220;:::o;34232:366::-;34374:3;34395:67;34459:2;34454:3;34395:67;:::i;:::-;34388:74;;34471:93;34560:3;34471:93;:::i;:::-;34589:2;34584:3;34580:12;34573:19;;34232:366;;;:::o;34604:419::-;34770:4;34808:2;34797:9;34793:18;34785:26;;34857:9;34851:4;34847:20;34843:1;34832:9;34828:17;34821:47;34885:131;35011:4;34885:131;:::i;:::-;34877:139;;34604:419;;;:::o;35029:180::-;35077:77;35074:1;35067:88;35174:4;35171:1;35164:15;35198:4;35195:1;35188:15;35215:180;35263:77;35260:1;35253:88;35360:4;35357:1;35350:15;35384:4;35381:1;35374:15;35401:143;35458:5;35489:6;35483:13;35474:22;;35505:33;35532:5;35505:33;:::i;:::-;35401:143;;;;:::o;35550:351::-;35620:6;35669:2;35657:9;35648:7;35644:23;35640:32;35637:119;;;35675:79;;:::i;:::-;35637:119;35795:1;35820:64;35876:7;35867:6;35856:9;35852:22;35820:64;:::i;:::-;35810:74;;35766:128;35550:351;;;;:::o;35907:85::-;35952:7;35981:5;35970:16;;35907:85;;;:::o;35998:158::-;36056:9;36089:61;36107:42;36116:32;36142:5;36116:32;:::i;:::-;36107:42;:::i;:::-;36089:61;:::i;:::-;36076:74;;35998:158;;;:::o;36162:147::-;36257:45;36296:5;36257:45;:::i;:::-;36252:3;36245:58;36162:147;;:::o;36315:114::-;36382:6;36416:5;36410:12;36400:22;;36315:114;;;:::o;36435:184::-;36534:11;36568:6;36563:3;36556:19;36608:4;36603:3;36599:14;36584:29;;36435:184;;;;:::o;36625:132::-;36692:4;36715:3;36707:11;;36745:4;36740:3;36736:14;36728:22;;36625:132;;;:::o;36763:108::-;36840:24;36858:5;36840:24;:::i;:::-;36835:3;36828:37;36763:108;;:::o;36877:179::-;36946:10;36967:46;37009:3;37001:6;36967:46;:::i;:::-;37045:4;37040:3;37036:14;37022:28;;36877:179;;;;:::o;37062:113::-;37132:4;37164;37159:3;37155:14;37147:22;;37062:113;;;:::o;37211:732::-;37330:3;37359:54;37407:5;37359:54;:::i;:::-;37429:86;37508:6;37503:3;37429:86;:::i;:::-;37422:93;;37539:56;37589:5;37539:56;:::i;:::-;37618:7;37649:1;37634:284;37659:6;37656:1;37653:13;37634:284;;;37735:6;37729:13;37762:63;37821:3;37806:13;37762:63;:::i;:::-;37755:70;;37848:60;37901:6;37848:60;:::i;:::-;37838:70;;37694:224;37681:1;37678;37674:9;37669:14;;37634:284;;;37638:14;37934:3;37927:10;;37335:608;;;37211:732;;;;:::o;37949:831::-;38212:4;38250:3;38239:9;38235:19;38227:27;;38264:71;38332:1;38321:9;38317:17;38308:6;38264:71;:::i;:::-;38345:80;38421:2;38410:9;38406:18;38397:6;38345:80;:::i;:::-;38472:9;38466:4;38462:20;38457:2;38446:9;38442:18;38435:48;38500:108;38603:4;38594:6;38500:108;:::i;:::-;38492:116;;38618:72;38686:2;38675:9;38671:18;38662:6;38618:72;:::i;:::-;38700:73;38768:3;38757:9;38753:19;38744:6;38700:73;:::i;:::-;37949:831;;;;;;;;:::o;38786:807::-;39035:4;39073:3;39062:9;39058:19;39050:27;;39087:71;39155:1;39144:9;39140:17;39131:6;39087:71;:::i;:::-;39168:72;39236:2;39225:9;39221:18;39212:6;39168:72;:::i;:::-;39250:80;39326:2;39315:9;39311:18;39302:6;39250:80;:::i;:::-;39340;39416:2;39405:9;39401:18;39392:6;39340:80;:::i;:::-;39430:73;39498:3;39487:9;39483:19;39474:6;39430:73;:::i;:::-;39513;39581:3;39570:9;39566:19;39557:6;39513:73;:::i;:::-;38786:807;;;;;;;;;:::o;39599:143::-;39656:5;39687:6;39681:13;39672:22;;39703:33;39730:5;39703:33;:::i;:::-;39599:143;;;;:::o;39748:663::-;39836:6;39844;39852;39901:2;39889:9;39880:7;39876:23;39872:32;39869:119;;;39907:79;;:::i;:::-;39869:119;40027:1;40052:64;40108:7;40099:6;40088:9;40084:22;40052:64;:::i;:::-;40042:74;;39998:128;40165:2;40191:64;40247:7;40238:6;40227:9;40223:22;40191:64;:::i;:::-;40181:74;;40136:129;40304:2;40330:64;40386:7;40377:6;40366:9;40362:22;40330:64;:::i;:::-;40320:74;;40275:129;39748:663;;;;;:::o
Swarm Source
ipfs://5270b3c38036a0686f4463ec208cab210564ebb87ff0582c222960568a9c4c4c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.