ERC-20
Overview
Max Total Supply
1,000,000,000,000 chaos
Holders
136
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
434,767,379.668703843770074644 chaosValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Order
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-22 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.9; 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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. */ 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} * - `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. * 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 Order is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; // 25 = .25% bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyLiquidityFee; uint256 public sellTotalFees; uint256 public sellLiquidityFee; uint256 public tokensForLiquidity; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Balance", "chaos") { 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 _upsideFee = 3; uint256 _downsideFee = 3; uint256 totalSupply = 1 * 1e12 * 1e18; //maxTransactionAmount = totalSupply * 50 / 1000; // 0.70% maxTransactionAmountTxn maxTransactionAmount = 7000000000 * 1e18; maxWallet = totalSupply * 15 / 1000; // 1.5% maxWallet swapTokensAtAmount = totalSupply * 15 / 10000; // 0.15% swap wallet buyLiquidityFee = _upsideFee; buyTotalFees = buyLiquidityFee; sellLiquidityFee = _downsideFee; sellTotalFees = sellLiquidityFee; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), 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; lastLpBurnTime = block.timestamp; } // 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; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _liquidityFee) external onlyOwner { buyLiquidityFee = _liquidityFee; buyTotalFees = buyLiquidityFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees(uint256 _liquidityFee) external onlyOwner { sellLiquidityFee = _liquidityFee; sellTotalFees = sellLiquidityFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } 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 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"); 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."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. 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; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if(!swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from]){ autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForLiquidity = ethBalance; tokensForLiquidity = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } } function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner { require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes"); require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%"); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool){ lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){ require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish"); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0){ super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"sellLiquidityFee","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":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"tokensForLiquidity","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":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260196009556001600a60006101000a81548160ff021916908315150217905550610e10600b55610708600d556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055506001601160006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280600781526020017f42616c616e6365000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6368616f7300000000000000000000000000000000000000000000000000000081525081600390805190602001906200012e92919062000aca565b5080600490805190602001906200014792919062000aca565b50505060006200015c6200059660201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002278160016200059e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a257600080fd5b505afa158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000be4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034057600080fd5b505afa15801562000355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037b919062000be4565b6040518363ffffffff1660e01b81526004016200039a92919062000c27565b602060405180830381600087803b158015620003b557600080fd5b505af1158015620003ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f0919062000be4565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200043860a05160016200059e60201b60201c565b6200044d60a05160016200069b60201b60201c565b60006003905060006003905060006c0c9f2c9cd04674edea4000000090506b169e43a85eb381aa580000006006819055506103e8600f8262000490919062000c8d565b6200049c919062000d1d565b600881905550612710600f82620004b4919062000c8d565b620004c0919062000d1d565b600781905550826013819055506013546012819055508160158190555060155460148190555062000508620004fa6200073c60201b60201c565b60016200076660201b60201c565b6200051b3060016200076660201b60201c565b6200053061dead60016200076660201b60201c565b62000552620005446200073c60201b60201c565b60016200059e60201b60201c565b620005653060016200059e60201b60201c565b6200057a61dead60016200059e60201b60201c565b6200058c3382620008b360201b60201c565b5050505062000fe6565b600033905090565b620005ae6200059660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000640576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006379062000db6565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007766200059660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000808576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ff9062000db6565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008a7919062000df5565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091d9062000e62565b60405180910390fd5b6200093a6000838362000a6260201b60201c565b620009568160025462000a6760201b620026431790919060201c565b600281905550620009b4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a6760201b620026431790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a56919062000e95565b60405180910390a35050565b505050565b600080828462000a78919062000eb2565b90508381101562000ac0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab79062000f5f565b60405180910390fd5b8091505092915050565b82805462000ad89062000fb0565b90600052602060002090601f01602090048101928262000afc576000855562000b48565b82601f1062000b1757805160ff191683800117855562000b48565b8280016001018555821562000b48579182015b8281111562000b4757825182559160200191906001019062000b2a565b5b50905062000b57919062000b5b565b5090565b5b8082111562000b7657600081600090555060010162000b5c565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bac8262000b7f565b9050919050565b62000bbe8162000b9f565b811462000bca57600080fd5b50565b60008151905062000bde8162000bb3565b92915050565b60006020828403121562000bfd5762000bfc62000b7a565b5b600062000c0d8482850162000bcd565b91505092915050565b62000c218162000b9f565b82525050565b600060408201905062000c3e600083018562000c16565b62000c4d602083018462000c16565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c9a8262000c54565b915062000ca78362000c54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ce35762000ce262000c5e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d2a8262000c54565b915062000d378362000c54565b92508262000d4a5762000d4962000cee565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d9e60208362000d55565b915062000dab8262000d66565b602082019050919050565b6000602082019050818103600083015262000dd18162000d8f565b9050919050565b60008115159050919050565b62000def8162000dd8565b82525050565b600060208201905062000e0c600083018462000de4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000e4a601f8362000d55565b915062000e578262000e12565b602082019050919050565b6000602082019050818103600083015262000e7d8162000e3b565b9050919050565b62000e8f8162000c54565b82525050565b600060208201905062000eac600083018462000e84565b92915050565b600062000ebf8262000c54565b915062000ecc8362000c54565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f045762000f0362000c5e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000f47601b8362000d55565b915062000f548262000f0f565b602082019050919050565b6000602082019050818103600083015262000f7a8162000f38565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000fc957607f821691505b6020821081141562000fe05762000fdf62000f81565b5b50919050565b60805160a05161579e6200106e6000396000818161105701528181611972015281816124970152818161255d0152818161258a01528181612c2c01528181613af801528181613bc00152613bed015260008181610d3901528181612bd401528181613df501528181613ee501528181613f0c01528181613fa80152613fcf015261579e6000f3fe6080604052600436106103035760003560e01c80638a8c523c11610190578063c876d0b9116100dc578063e884f26011610095578063f2fde38b1161006f578063f2fde38b14610bab578063f637434214610bd4578063f8b45b0514610bff578063fe72b27a14610c2a5761030a565b8063e884f26014610b2c578063eba4c33314610b57578063f11a24d314610b805761030a565b8063c876d0b914610a06578063c8c8ebe414610a31578063d257b34f14610a5c578063d85ba06314610a99578063dd62ed3e14610ac4578063e2f4560514610b015761030a565b8063a457c2d711610149578063b62496f511610123578063b62496f51461094c578063bbc0c74214610989578063c0246668146109b4578063c18bc195146109dd5761030a565b8063a457c2d7146108a7578063a4c82a00146108e4578063a9059cbb1461090f5761030a565b80638a8c523c146107bd5780638da5cb5b146107d4578063924de9b7146107ff57806395d89b41146108285780639a7a23d6146108535780639ec22c0e1461087c5761030a565b8063313ce5671161024f5780636ddd17131161020857806371fc4688116101e257806371fc468814610717578063730c188814610740578063751039fc146107695780637571336a146107945761030a565b80636ddd17131461069857806370a08231146106c3578063715018a6146107005761030a565b8063313ce56714610572578063395093511461059d57806349bd5a5e146105da5780634a62bb65146106055780634fbee193146106305780636a486a8e1461066d5761030a565b8063199ffc72116102bc57806323b872dd1161029657806323b872dd146104b457806327c8f835146104f15780632c3e486c1461051c5780632e82f1a0146105475761030a565b8063199ffc72146104355780631a8145bb14610460578063203e727e1461048b5761030a565b806306fdde031461030f578063095ea7b31461033a57806310d5de53146103775780631694505e146103b457806318160ddd146103df578063184c16c51461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c67565b6040516103319190614126565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c91906141e1565b610cf9565b60405161036e919061423c565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190614257565b610d17565b6040516103ab919061423c565b60405180910390f35b3480156103c057600080fd5b506103c9610d37565b6040516103d691906142e3565b60405180910390f35b3480156103eb57600080fd5b506103f4610d5b565b604051610401919061430d565b60405180910390f35b34801561041657600080fd5b5061041f610d65565b60405161042c919061430d565b60405180910390f35b34801561044157600080fd5b5061044a610d6b565b604051610457919061430d565b60405180910390f35b34801561046c57600080fd5b50610475610d71565b604051610482919061430d565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190614328565b610d77565b005b3480156104c057600080fd5b506104db60048036038101906104d69190614355565b610ea1565b6040516104e8919061423c565b60405180910390f35b3480156104fd57600080fd5b50610506610f7a565b60405161051391906143b7565b60405180910390f35b34801561052857600080fd5b50610531610f80565b60405161053e919061430d565b60405180910390f35b34801561055357600080fd5b5061055c610f86565b604051610569919061423c565b60405180910390f35b34801561057e57600080fd5b50610587610f99565b60405161059491906143ee565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf91906141e1565b610fa2565b6040516105d1919061423c565b60405180910390f35b3480156105e657600080fd5b506105ef611055565b6040516105fc91906143b7565b60405180910390f35b34801561061157600080fd5b5061061a611079565b604051610627919061423c565b60405180910390f35b34801561063c57600080fd5b5061065760048036038101906106529190614257565b61108c565b604051610664919061423c565b60405180910390f35b34801561067957600080fd5b506106826110e2565b60405161068f919061430d565b60405180910390f35b3480156106a457600080fd5b506106ad6110e8565b6040516106ba919061423c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614257565b6110fb565b6040516106f7919061430d565b60405180910390f35b34801561070c57600080fd5b50610715611143565b005b34801561072357600080fd5b5061073e60048036038101906107399190614328565b61129b565b005b34801561074c57600080fd5b5061076760048036038101906107629190614435565b61138b565b005b34801561077557600080fd5b5061077e6114e6565b60405161078b919061423c565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190614488565b6115a1565b005b3480156107c957600080fd5b506107d2611693565b005b3480156107e057600080fd5b506107e9611769565b6040516107f691906143b7565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906144c8565b611793565b005b34801561083457600080fd5b5061083d611847565b60405161084a9190614126565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190614488565b6118d9565b005b34801561088857600080fd5b50610891611a0d565b60405161089e919061430d565b60405180910390f35b3480156108b357600080fd5b506108ce60048036038101906108c991906141e1565b611a13565b6040516108db919061423c565b60405180910390f35b3480156108f057600080fd5b506108f9611ae0565b604051610906919061430d565b60405180910390f35b34801561091b57600080fd5b50610936600480360381019061093191906141e1565b611ae6565b604051610943919061423c565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190614257565b611b04565b604051610980919061423c565b60405180910390f35b34801561099557600080fd5b5061099e611b24565b6040516109ab919061423c565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614488565b611b37565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190614328565b611c77565b005b348015610a1257600080fd5b50610a1b611da1565b604051610a28919061423c565b60405180910390f35b348015610a3d57600080fd5b50610a46611db4565b604051610a53919061430d565b60405180910390f35b348015610a6857600080fd5b50610a836004803603810190610a7e9190614328565b611dba565b604051610a90919061423c565b60405180910390f35b348015610aa557600080fd5b50610aae611f2a565b604051610abb919061430d565b60405180910390f35b348015610ad057600080fd5b50610aeb6004803603810190610ae691906144f5565b611f30565b604051610af8919061430d565b60405180910390f35b348015610b0d57600080fd5b50610b16611fb7565b604051610b23919061430d565b60405180910390f35b348015610b3857600080fd5b50610b41611fbd565b604051610b4e919061423c565b60405180910390f35b348015610b6357600080fd5b50610b7e6004803603810190610b799190614328565b612078565b005b348015610b8c57600080fd5b50610b95612168565b604051610ba2919061430d565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd9190614257565b61216e565b005b348015610be057600080fd5b50610be9612335565b604051610bf6919061430d565b60405180910390f35b348015610c0b57600080fd5b50610c1461233b565b604051610c21919061430d565b60405180910390f35b348015610c3657600080fd5b50610c516004803603810190610c4c9190614328565b612341565b604051610c5e919061423c565b60405180910390f35b606060038054610c7690614564565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca290614564565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b5050505050905090565b6000610d0d610d066126a1565b84846126a9565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600d5481565b60095481565b60165481565b610d7f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e05906145e2565b60405180910390fd5b670de0b6b3a76400006103e86001610e24610d5b565b610e2e9190614631565b610e3891906146ba565b610e4291906146ba565b811015610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b9061475d565b60405180910390fd5b670de0b6b3a764000081610e989190614631565b60068190555050565b6000610eae848484612874565b610f6f84610eba6126a1565b610f6a8560405180606001604052806028815260200161571c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f206126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6126a9565b600190509392505050565b61dead81565b600b5481565b600a60009054906101000a900460ff1681565b60006012905090565b600061104b610faf6126a1565b846110468560016000610fc06126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264390919063ffffffff16565b6126a9565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61114b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d1906145e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112a36126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611329906145e2565b60405180910390fd5b8060138190555060135460128190555060146012541115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906147c9565b60405180910390fd5b50565b6113936126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906145e2565b60405180910390fd5b610258831015611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e9061485b565b60405180910390fd5b6103e8821115801561147a575060008210155b6114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906148ed565b60405180910390fd5b82600b819055508160098190555080600a60006101000a81548160ff021916908315150217905550505050565b60006114f06126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611576906145e2565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b6115a96126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f906145e2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61169b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611721906145e2565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555042600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61179b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906145e2565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b60606004805461185690614564565b80601f016020809104026020016040519081016040528092919081815260200182805461188290614564565b80156118cf5780601f106118a4576101008083540402835291602001916118cf565b820191906000526020600020905b8154815290600101906020018083116118b257829003601f168201915b5050505050905090565b6118e16126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611967906145e2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f69061497f565b60405180910390fd5b611a0982826135a4565b5050565b600e5481565b6000611ad6611a206126a1565b84611ad1856040518060600160405280602581526020016157446025913960016000611a4a6126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6126a9565b6001905092915050565b600c5481565b6000611afa611af36126a1565b8484612874565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611b3f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906145e2565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c6b919061423c565b60405180910390a25050565b611c7f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d05906145e2565b60405180910390fd5b670de0b6b3a76400006103e86005611d24610d5b565b611d2e9190614631565b611d3891906146ba565b611d4291906146ba565b811015611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90614a11565b60405180910390fd5b670de0b6b3a764000081611d989190614631565b60088190555050565b601160009054906101000a900460ff1681565b60065481565b6000611dc46126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a906145e2565b60405180910390fd5b620186a06001611e61610d5b565b611e6b9190614631565b611e7591906146ba565b821015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90614aa3565b60405180910390fd5b6103e86005611ec4610d5b565b611ece9190614631565b611ed891906146ba565b821115611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614b35565b60405180910390fd5b8160078190555060019050919050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b6000611fc76126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d906145e2565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6120806126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612106906145e2565b60405180910390fd5b8060158190555060155460148190555060196014541115612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90614ba1565b60405180910390fd5b50565b60135481565b6121766126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc906145e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226c90614c33565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60085481565b600061234b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d1906145e2565b60405180910390fd5b600d54600e546123ea9190614c53565b421161242b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242290614cf5565b60405180910390fd5b6103e8821115612470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246790614d87565b60405180910390fd5b42600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016124d291906143b7565b60206040518083038186803b1580156124ea57600080fd5b505afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190614dbc565b9050600061254d61271061253f868561364590919063ffffffff16565b6136c090919063ffffffff16565b90506000811115612586576125857f000000000000000000000000000000000000000000000000000000000000000061dead8361370a565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846126529190614c53565b905083811015612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e90614e35565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090614ec7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278090614f59565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612867919061430d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90614feb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b9061507d565b60405180910390fd5b600081141561296e576129698383600061370a565b61353b565b600f60009054906101000a900460ff16156130315761298b611769565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129f957506129c9611769565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a325750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a855750600560149054906101000a900460ff16155b1561303057600f60019054906101000a900460ff16612b7f57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b3f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b75906150e9565b60405180910390fd5b5b601160009054906101000a900460ff1615612d4757612b9c611769565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c2357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d465743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf8906151a1565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dea5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9157600654811115612e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2b90615233565b60405180910390fd5b600854612e40836110fb565b82612e4b9190614c53565b1115612e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e839061529f565b60405180910390fd5b61302f565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f345750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8357600654811115612f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7590615331565b60405180910390fd5b61302e565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57600854612fe0836110fb565b82612feb9190614c53565b111561302c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130239061529f565b60405180910390fd5b5b5b5b5b5b600061303c306110fb565b9050600060075482101590508080156130615750600f60029054906101000a900460ff165b801561307a5750600560149054906101000a900460ff16155b80156130d05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131265750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561317c5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c0576001600560146101000a81548160ff0219169083151502179055506131a461399f565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156132265750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561323e5750600a60009054906101000a900460ff165b80156132595750600b54600c546132559190614c53565b4210155b80156132af5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132be576132bc613acf565b505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133745750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337e57600090505b6000811561352b57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133e157506000601454115b156134485761340e60646134006014548861364590919063ffffffff16565b6136c090919063ffffffff16565b9050601454601554826134219190614631565b61342b91906146ba565b6016600082825461343c9190614c53565b92505081905550613507565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134a357506000601254115b15613506576134d060646134c26012548861364590919063ffffffff16565b6136c090919063ffffffff16565b9050601254601354826134e39190614631565b6134ed91906146ba565b601660008282546134fe9190614c53565b925050819055505b5b600081111561351c5761351b87308361370a565b5b80856135289190615351565b94505b61353687878761370a565b505050505b505050565b6000838311158290613588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357f9190614126565b60405180910390fd5b50600083856135979190615351565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561365857600090506136ba565b600082846136669190614631565b905082848261367591906146ba565b146136b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ac906153f7565b60405180910390fd5b809150505b92915050565b600061370283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ca4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561377a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377190614feb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e19061507d565b60405180910390fd5b6137f5838383613d07565b613860816040518060600160405280602681526020016156f6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613992919061430d565b60405180910390a3505050565b60006139aa306110fb565b90506000601654905060008214806139c25750600081145b156139ce575050613acd565b60146007546139dd9190614631565b8211156139f65760146007546139f39190614631565b91505b600060028260165485613a099190614631565b613a1391906146ba565b613a1d91906146ba565b90506000613a348285613d0c90919063ffffffff16565b90506000479050613a4482613d56565b6000613a598247613d0c90919063ffffffff16565b905060008190506000601681905550600085118015613a785750600081115b15613ac557613a878582613fa2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482601654604051613abc93929190615417565b60405180910390a15b505050505050505b565b600042600c8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613b3391906143b7565b60206040518083038186803b158015613b4b57600080fd5b505afa158015613b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b839190614dbc565b90506000613bb0612710613ba26009548561364590919063ffffffff16565b6136c090919063ffffffff16565b90506000811115613be957613be87f000000000000000000000000000000000000000000000000000000000000000061dead8361370a565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c5657600080fd5b505af1158015613c6a573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b60008083118290613ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce29190614126565b60405180910390fd5b5060008385613cfa91906146ba565b9050809150509392505050565b505050565b6000613d4e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613540565b905092915050565b6000600267ffffffffffffffff811115613d7357613d7261544e565b5b604051908082528060200260200182016040528015613da15781602001602082028036833780820191505090505b5090503081600081518110613db957613db861547d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9191906154c1565b81600181518110613ea557613ea461547d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f0a307f0000000000000000000000000000000000000000000000000000000000000000846126a9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f6c9594939291906155e7565b600060405180830381600087803b158015613f8657600080fd5b505af1158015613f9a573d6000803e3d6000fd5b505050505050565b613fcd307f0000000000000000000000000000000000000000000000000000000000000000846126a9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161403496959493929190615641565b6060604051808303818588803b15801561404d57600080fd5b505af1158015614061573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061408691906156a2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140c75780820151818401526020810190506140ac565b838111156140d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006140f88261408d565b6141028185614098565b93506141128185602086016140a9565b61411b816140dc565b840191505092915050565b6000602082019050818103600083015261414081846140ed565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141788261414d565b9050919050565b6141888161416d565b811461419357600080fd5b50565b6000813590506141a58161417f565b92915050565b6000819050919050565b6141be816141ab565b81146141c957600080fd5b50565b6000813590506141db816141b5565b92915050565b600080604083850312156141f8576141f7614148565b5b600061420685828601614196565b9250506020614217858286016141cc565b9150509250929050565b60008115159050919050565b61423681614221565b82525050565b6000602082019050614251600083018461422d565b92915050565b60006020828403121561426d5761426c614148565b5b600061427b84828501614196565b91505092915050565b6000819050919050565b60006142a96142a461429f8461414d565b614284565b61414d565b9050919050565b60006142bb8261428e565b9050919050565b60006142cd826142b0565b9050919050565b6142dd816142c2565b82525050565b60006020820190506142f860008301846142d4565b92915050565b614307816141ab565b82525050565b600060208201905061432260008301846142fe565b92915050565b60006020828403121561433e5761433d614148565b5b600061434c848285016141cc565b91505092915050565b60008060006060848603121561436e5761436d614148565b5b600061437c86828701614196565b935050602061438d86828701614196565b925050604061439e868287016141cc565b9150509250925092565b6143b18161416d565b82525050565b60006020820190506143cc60008301846143a8565b92915050565b600060ff82169050919050565b6143e8816143d2565b82525050565b600060208201905061440360008301846143df565b92915050565b61441281614221565b811461441d57600080fd5b50565b60008135905061442f81614409565b92915050565b60008060006060848603121561444e5761444d614148565b5b600061445c868287016141cc565b935050602061446d868287016141cc565b925050604061447e86828701614420565b9150509250925092565b6000806040838503121561449f5761449e614148565b5b60006144ad85828601614196565b92505060206144be85828601614420565b9150509250929050565b6000602082840312156144de576144dd614148565b5b60006144ec84828501614420565b91505092915050565b6000806040838503121561450c5761450b614148565b5b600061451a85828601614196565b925050602061452b85828601614196565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061457c57607f821691505b602082108114156145905761458f614535565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145cc602083614098565b91506145d782614596565b602082019050919050565b600060208201905081810360008301526145fb816145bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061463c826141ab565b9150614647836141ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146805761467f614602565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146c5826141ab565b91506146d0836141ab565b9250826146e0576146df61468b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614747602f83614098565b9150614752826146eb565b604082019050919050565b600060208201905081810360008301526147768161473a565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006147b3601d83614098565b91506147be8261477d565b602082019050919050565b600060208201905081810360008301526147e2816147a6565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614845603383614098565b9150614850826147e9565b604082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006148d7603083614098565b91506148e28261487b565b604082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614969603983614098565b91506149748261490d565b604082019050919050565b600060208201905081810360008301526149988161495c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149fb602483614098565b9150614a068261499f565b604082019050919050565b60006020820190508181036000830152614a2a816149ee565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a8d603583614098565b9150614a9882614a31565b604082019050919050565b60006020820190508181036000830152614abc81614a80565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b1f603483614098565b9150614b2a82614ac3565b604082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614b8b601d83614098565b9150614b9682614b55565b602082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c1d602683614098565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b6000614c5e826141ab565b9150614c69836141ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c9e57614c9d614602565b5b828201905092915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614cdf602083614098565b9150614cea82614ca9565b602082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614d71602a83614098565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b600081519050614db6816141b5565b92915050565b600060208284031215614dd257614dd1614148565b5b6000614de084828501614da7565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e1f601b83614098565b9150614e2a82614de9565b602082019050919050565b60006020820190508181036000830152614e4e81614e12565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614eb1602483614098565b9150614ebc82614e55565b604082019050919050565b60006020820190508181036000830152614ee081614ea4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f43602283614098565b9150614f4e82614ee7565b604082019050919050565b60006020820190508181036000830152614f7281614f36565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614fd5602583614098565b9150614fe082614f79565b604082019050919050565b6000602082019050818103600083015261500481614fc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615067602383614098565b91506150728261500b565b604082019050919050565b600060208201905081810360008301526150968161505a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150d3601683614098565b91506150de8261509d565b602082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061518b604983614098565b915061519682615109565b606082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061521d603583614098565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615289601383614098565b915061529482615253565b602082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061531b603683614098565b9150615326826152bf565b604082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b600061535c826141ab565b9150615367836141ab565b92508282101561537a57615379614602565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006153e1602183614098565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b600060608201905061542c60008301866142fe565b61543960208301856142fe565b61544660408301846142fe565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154bb8161417f565b92915050565b6000602082840312156154d7576154d6614148565b5b60006154e5848285016154ac565b91505092915050565b6000819050919050565b600061551361550e615509846154ee565b614284565b6141ab565b9050919050565b615523816154f8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61555e8161416d565b82525050565b60006155708383615555565b60208301905092915050565b6000602082019050919050565b600061559482615529565b61559e8185615534565b93506155a983615545565b8060005b838110156155da5781516155c18882615564565b97506155cc8361557c565b9250506001810190506155ad565b5085935050505092915050565b600060a0820190506155fc60008301886142fe565b615609602083018761551a565b818103604083015261561b8186615589565b905061562a60608301856143a8565b61563760808301846142fe565b9695505050505050565b600060c08201905061565660008301896143a8565b61566360208301886142fe565b615670604083018761551a565b61567d606083018661551a565b61568a60808301856143a8565b61569760a08301846142fe565b979650505050505050565b6000806000606084860312156156bb576156ba614148565b5b60006156c986828701614da7565b93505060206156da86828701614da7565b92505060406156eb86828701614da7565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209edb7493658e43fad1ac4a1b34784321c7320249d92259437fd77f02f6017b1d64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106103035760003560e01c80638a8c523c11610190578063c876d0b9116100dc578063e884f26011610095578063f2fde38b1161006f578063f2fde38b14610bab578063f637434214610bd4578063f8b45b0514610bff578063fe72b27a14610c2a5761030a565b8063e884f26014610b2c578063eba4c33314610b57578063f11a24d314610b805761030a565b8063c876d0b914610a06578063c8c8ebe414610a31578063d257b34f14610a5c578063d85ba06314610a99578063dd62ed3e14610ac4578063e2f4560514610b015761030a565b8063a457c2d711610149578063b62496f511610123578063b62496f51461094c578063bbc0c74214610989578063c0246668146109b4578063c18bc195146109dd5761030a565b8063a457c2d7146108a7578063a4c82a00146108e4578063a9059cbb1461090f5761030a565b80638a8c523c146107bd5780638da5cb5b146107d4578063924de9b7146107ff57806395d89b41146108285780639a7a23d6146108535780639ec22c0e1461087c5761030a565b8063313ce5671161024f5780636ddd17131161020857806371fc4688116101e257806371fc468814610717578063730c188814610740578063751039fc146107695780637571336a146107945761030a565b80636ddd17131461069857806370a08231146106c3578063715018a6146107005761030a565b8063313ce56714610572578063395093511461059d57806349bd5a5e146105da5780634a62bb65146106055780634fbee193146106305780636a486a8e1461066d5761030a565b8063199ffc72116102bc57806323b872dd1161029657806323b872dd146104b457806327c8f835146104f15780632c3e486c1461051c5780632e82f1a0146105475761030a565b8063199ffc72146104355780631a8145bb14610460578063203e727e1461048b5761030a565b806306fdde031461030f578063095ea7b31461033a57806310d5de53146103775780631694505e146103b457806318160ddd146103df578063184c16c51461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c67565b6040516103319190614126565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c91906141e1565b610cf9565b60405161036e919061423c565b60405180910390f35b34801561038357600080fd5b5061039e60048036038101906103999190614257565b610d17565b6040516103ab919061423c565b60405180910390f35b3480156103c057600080fd5b506103c9610d37565b6040516103d691906142e3565b60405180910390f35b3480156103eb57600080fd5b506103f4610d5b565b604051610401919061430d565b60405180910390f35b34801561041657600080fd5b5061041f610d65565b60405161042c919061430d565b60405180910390f35b34801561044157600080fd5b5061044a610d6b565b604051610457919061430d565b60405180910390f35b34801561046c57600080fd5b50610475610d71565b604051610482919061430d565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190614328565b610d77565b005b3480156104c057600080fd5b506104db60048036038101906104d69190614355565b610ea1565b6040516104e8919061423c565b60405180910390f35b3480156104fd57600080fd5b50610506610f7a565b60405161051391906143b7565b60405180910390f35b34801561052857600080fd5b50610531610f80565b60405161053e919061430d565b60405180910390f35b34801561055357600080fd5b5061055c610f86565b604051610569919061423c565b60405180910390f35b34801561057e57600080fd5b50610587610f99565b60405161059491906143ee565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf91906141e1565b610fa2565b6040516105d1919061423c565b60405180910390f35b3480156105e657600080fd5b506105ef611055565b6040516105fc91906143b7565b60405180910390f35b34801561061157600080fd5b5061061a611079565b604051610627919061423c565b60405180910390f35b34801561063c57600080fd5b5061065760048036038101906106529190614257565b61108c565b604051610664919061423c565b60405180910390f35b34801561067957600080fd5b506106826110e2565b60405161068f919061430d565b60405180910390f35b3480156106a457600080fd5b506106ad6110e8565b6040516106ba919061423c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614257565b6110fb565b6040516106f7919061430d565b60405180910390f35b34801561070c57600080fd5b50610715611143565b005b34801561072357600080fd5b5061073e60048036038101906107399190614328565b61129b565b005b34801561074c57600080fd5b5061076760048036038101906107629190614435565b61138b565b005b34801561077557600080fd5b5061077e6114e6565b60405161078b919061423c565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190614488565b6115a1565b005b3480156107c957600080fd5b506107d2611693565b005b3480156107e057600080fd5b506107e9611769565b6040516107f691906143b7565b60405180910390f35b34801561080b57600080fd5b50610826600480360381019061082191906144c8565b611793565b005b34801561083457600080fd5b5061083d611847565b60405161084a9190614126565b60405180910390f35b34801561085f57600080fd5b5061087a60048036038101906108759190614488565b6118d9565b005b34801561088857600080fd5b50610891611a0d565b60405161089e919061430d565b60405180910390f35b3480156108b357600080fd5b506108ce60048036038101906108c991906141e1565b611a13565b6040516108db919061423c565b60405180910390f35b3480156108f057600080fd5b506108f9611ae0565b604051610906919061430d565b60405180910390f35b34801561091b57600080fd5b50610936600480360381019061093191906141e1565b611ae6565b604051610943919061423c565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e9190614257565b611b04565b604051610980919061423c565b60405180910390f35b34801561099557600080fd5b5061099e611b24565b6040516109ab919061423c565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d69190614488565b611b37565b005b3480156109e957600080fd5b50610a0460048036038101906109ff9190614328565b611c77565b005b348015610a1257600080fd5b50610a1b611da1565b604051610a28919061423c565b60405180910390f35b348015610a3d57600080fd5b50610a46611db4565b604051610a53919061430d565b60405180910390f35b348015610a6857600080fd5b50610a836004803603810190610a7e9190614328565b611dba565b604051610a90919061423c565b60405180910390f35b348015610aa557600080fd5b50610aae611f2a565b604051610abb919061430d565b60405180910390f35b348015610ad057600080fd5b50610aeb6004803603810190610ae691906144f5565b611f30565b604051610af8919061430d565b60405180910390f35b348015610b0d57600080fd5b50610b16611fb7565b604051610b23919061430d565b60405180910390f35b348015610b3857600080fd5b50610b41611fbd565b604051610b4e919061423c565b60405180910390f35b348015610b6357600080fd5b50610b7e6004803603810190610b799190614328565b612078565b005b348015610b8c57600080fd5b50610b95612168565b604051610ba2919061430d565b60405180910390f35b348015610bb757600080fd5b50610bd26004803603810190610bcd9190614257565b61216e565b005b348015610be057600080fd5b50610be9612335565b604051610bf6919061430d565b60405180910390f35b348015610c0b57600080fd5b50610c1461233b565b604051610c21919061430d565b60405180910390f35b348015610c3657600080fd5b50610c516004803603810190610c4c9190614328565b612341565b604051610c5e919061423c565b60405180910390f35b606060038054610c7690614564565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca290614564565b8015610cef5780601f10610cc457610100808354040283529160200191610cef565b820191906000526020600020905b815481529060010190602001808311610cd257829003601f168201915b5050505050905090565b6000610d0d610d066126a1565b84846126a9565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600d5481565b60095481565b60165481565b610d7f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e05906145e2565b60405180910390fd5b670de0b6b3a76400006103e86001610e24610d5b565b610e2e9190614631565b610e3891906146ba565b610e4291906146ba565b811015610e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7b9061475d565b60405180910390fd5b670de0b6b3a764000081610e989190614631565b60068190555050565b6000610eae848484612874565b610f6f84610eba6126a1565b610f6a8560405180606001604052806028815260200161571c60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f206126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6126a9565b600190509392505050565b61dead81565b600b5481565b600a60009054906101000a900460ff1681565b60006012905090565b600061104b610faf6126a1565b846110468560016000610fc06126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264390919063ffffffff16565b6126a9565b6001905092915050565b7f000000000000000000000000736f46705352133895201d2853bd2e6941b4597181565b600f60009054906101000a900460ff1681565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60145481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61114b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d1906145e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112a36126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611332576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611329906145e2565b60405180910390fd5b8060138190555060135460128190555060146012541115611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906147c9565b60405180910390fd5b50565b6113936126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611419906145e2565b60405180910390fd5b610258831015611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e9061485b565b60405180910390fd5b6103e8821115801561147a575060008210155b6114b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b0906148ed565b60405180910390fd5b82600b819055508160098190555080600a60006101000a81548160ff021916908315150217905550505050565b60006114f06126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611576906145e2565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b6115a96126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f906145e2565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61169b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461172a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611721906145e2565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff02191690831515021790555042600c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61179b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906145e2565b60405180910390fd5b80600f60026101000a81548160ff02191690831515021790555050565b60606004805461185690614564565b80601f016020809104026020016040519081016040528092919081815260200182805461188290614564565b80156118cf5780601f106118a4576101008083540402835291602001916118cf565b820191906000526020600020905b8154815290600101906020018083116118b257829003601f168201915b5050505050905090565b6118e16126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611970576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611967906145e2565b60405180910390fd5b7f000000000000000000000000736f46705352133895201d2853bd2e6941b4597173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f69061497f565b60405180910390fd5b611a0982826135a4565b5050565b600e5481565b6000611ad6611a206126a1565b84611ad1856040518060600160405280602581526020016157446025913960016000611a4a6126a1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6126a9565b6001905092915050565b600c5481565b6000611afa611af36126a1565b8484612874565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b600f60019054906101000a900460ff1681565b611b3f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906145e2565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c6b919061423c565b60405180910390a25050565b611c7f6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d05906145e2565b60405180910390fd5b670de0b6b3a76400006103e86005611d24610d5b565b611d2e9190614631565b611d3891906146ba565b611d4291906146ba565b811015611d84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7b90614a11565b60405180910390fd5b670de0b6b3a764000081611d989190614631565b60088190555050565b601160009054906101000a900460ff1681565b60065481565b6000611dc46126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4a906145e2565b60405180910390fd5b620186a06001611e61610d5b565b611e6b9190614631565b611e7591906146ba565b821015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae90614aa3565b60405180910390fd5b6103e86005611ec4610d5b565b611ece9190614631565b611ed891906146ba565b821115611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614b35565b60405180910390fd5b8160078190555060019050919050565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b6000611fc76126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d906145e2565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b6120806126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612106906145e2565b60405180910390fd5b8060158190555060155460148190555060196014541115612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90614ba1565b60405180910390fd5b50565b60135481565b6121766126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc906145e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226c90614c33565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b60085481565b600061234b6126a1565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d1906145e2565b60405180910390fd5b600d54600e546123ea9190614c53565b421161242b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242290614cf5565b60405180910390fd5b6103e8821115612470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246790614d87565b60405180910390fd5b42600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000736f46705352133895201d2853bd2e6941b459716040518263ffffffff1660e01b81526004016124d291906143b7565b60206040518083038186803b1580156124ea57600080fd5b505afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190614dbc565b9050600061254d61271061253f868561364590919063ffffffff16565b6136c090919063ffffffff16565b90506000811115612586576125857f000000000000000000000000736f46705352133895201d2853bd2e6941b4597161dead8361370a565b5b60007f000000000000000000000000736f46705352133895201d2853bd2e6941b4597190508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125f357600080fd5b505af1158015612607573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b60008082846126529190614c53565b905083811015612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e90614e35565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271090614ec7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278090614f59565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612867919061430d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128db90614feb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b9061507d565b60405180910390fd5b600081141561296e576129698383600061370a565b61353b565b600f60009054906101000a900460ff16156130315761298b611769565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129f957506129c9611769565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a325750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a855750600560149054906101000a900460ff16155b1561303057600f60019054906101000a900460ff16612b7f57601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b3f5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b75906150e9565b60405180910390fd5b5b601160009054906101000a900460ff1615612d4757612b9c611769565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612c2357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c7b57507f000000000000000000000000736f46705352133895201d2853bd2e6941b4597173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612d465743601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf8906151a1565b60405180910390fd5b43601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612dea5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9157600654811115612e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2b90615233565b60405180910390fd5b600854612e40836110fb565b82612e4b9190614c53565b1115612e8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e839061529f565b60405180910390fd5b61302f565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f345750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8357600654811115612f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7590615331565b60405180910390fd5b61302e565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302d57600854612fe0836110fb565b82612feb9190614c53565b111561302c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130239061529f565b60405180910390fd5b5b5b5b5b5b600061303c306110fb565b9050600060075482101590508080156130615750600f60029054906101000a900460ff165b801561307a5750600560149054906101000a900460ff16155b80156130d05750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131265750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561317c5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131c0576001600560146101000a81548160ff0219169083151502179055506131a461399f565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff161580156132265750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561323e5750600a60009054906101000a900460ff165b80156132595750600b54600c546132559190614c53565b4210155b80156132af5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132be576132bc613acf565b505b6000600560149054906101000a900460ff16159050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806133745750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561337e57600090505b6000811561352b57601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133e157506000601454115b156134485761340e60646134006014548861364590919063ffffffff16565b6136c090919063ffffffff16565b9050601454601554826134219190614631565b61342b91906146ba565b6016600082825461343c9190614c53565b92505081905550613507565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134a357506000601254115b15613506576134d060646134c26012548861364590919063ffffffff16565b6136c090919063ffffffff16565b9050601254601354826134e39190614631565b6134ed91906146ba565b601660008282546134fe9190614c53565b925050819055505b5b600081111561351c5761351b87308361370a565b5b80856135289190615351565b94505b61353687878761370a565b505050505b505050565b6000838311158290613588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357f9190614126565b60405180910390fd5b50600083856135979190615351565b9050809150509392505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60008083141561365857600090506136ba565b600082846136669190614631565b905082848261367591906146ba565b146136b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ac906153f7565b60405180910390fd5b809150505b92915050565b600061370283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ca4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561377a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161377190614feb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e19061507d565b60405180910390fd5b6137f5838383613d07565b613860816040518060600160405280602681526020016156f6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135409092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138f3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461264390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613992919061430d565b60405180910390a3505050565b60006139aa306110fb565b90506000601654905060008214806139c25750600081145b156139ce575050613acd565b60146007546139dd9190614631565b8211156139f65760146007546139f39190614631565b91505b600060028260165485613a099190614631565b613a1391906146ba565b613a1d91906146ba565b90506000613a348285613d0c90919063ffffffff16565b90506000479050613a4482613d56565b6000613a598247613d0c90919063ffffffff16565b905060008190506000601681905550600085118015613a785750600081115b15613ac557613a878582613fa2565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482601654604051613abc93929190615417565b60405180910390a15b505050505050505b565b600042600c8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000736f46705352133895201d2853bd2e6941b459716040518263ffffffff1660e01b8152600401613b3391906143b7565b60206040518083038186803b158015613b4b57600080fd5b505afa158015613b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b839190614dbc565b90506000613bb0612710613ba26009548561364590919063ffffffff16565b6136c090919063ffffffff16565b90506000811115613be957613be87f000000000000000000000000736f46705352133895201d2853bd2e6941b4597161dead8361370a565b5b60007f000000000000000000000000736f46705352133895201d2853bd2e6941b4597190508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c5657600080fd5b505af1158015613c6a573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b60008083118290613ceb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce29190614126565b60405180910390fd5b5060008385613cfa91906146ba565b9050809150509392505050565b505050565b6000613d4e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613540565b905092915050565b6000600267ffffffffffffffff811115613d7357613d7261544e565b5b604051908082528060200260200182016040528015613da15781602001602082028036833780820191505090505b5090503081600081518110613db957613db861547d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5957600080fd5b505afa158015613e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9191906154c1565b81600181518110613ea557613ea461547d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f0a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126a9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f6c9594939291906155e7565b600060405180830381600087803b158015613f8657600080fd5b505af1158015613f9a573d6000803e3d6000fd5b505050505050565b613fcd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846126a9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161403496959493929190615641565b6060604051808303818588803b15801561404d57600080fd5b505af1158015614061573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061408691906156a2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156140c75780820151818401526020810190506140ac565b838111156140d6576000848401525b50505050565b6000601f19601f8301169050919050565b60006140f88261408d565b6141028185614098565b93506141128185602086016140a9565b61411b816140dc565b840191505092915050565b6000602082019050818103600083015261414081846140ed565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141788261414d565b9050919050565b6141888161416d565b811461419357600080fd5b50565b6000813590506141a58161417f565b92915050565b6000819050919050565b6141be816141ab565b81146141c957600080fd5b50565b6000813590506141db816141b5565b92915050565b600080604083850312156141f8576141f7614148565b5b600061420685828601614196565b9250506020614217858286016141cc565b9150509250929050565b60008115159050919050565b61423681614221565b82525050565b6000602082019050614251600083018461422d565b92915050565b60006020828403121561426d5761426c614148565b5b600061427b84828501614196565b91505092915050565b6000819050919050565b60006142a96142a461429f8461414d565b614284565b61414d565b9050919050565b60006142bb8261428e565b9050919050565b60006142cd826142b0565b9050919050565b6142dd816142c2565b82525050565b60006020820190506142f860008301846142d4565b92915050565b614307816141ab565b82525050565b600060208201905061432260008301846142fe565b92915050565b60006020828403121561433e5761433d614148565b5b600061434c848285016141cc565b91505092915050565b60008060006060848603121561436e5761436d614148565b5b600061437c86828701614196565b935050602061438d86828701614196565b925050604061439e868287016141cc565b9150509250925092565b6143b18161416d565b82525050565b60006020820190506143cc60008301846143a8565b92915050565b600060ff82169050919050565b6143e8816143d2565b82525050565b600060208201905061440360008301846143df565b92915050565b61441281614221565b811461441d57600080fd5b50565b60008135905061442f81614409565b92915050565b60008060006060848603121561444e5761444d614148565b5b600061445c868287016141cc565b935050602061446d868287016141cc565b925050604061447e86828701614420565b9150509250925092565b6000806040838503121561449f5761449e614148565b5b60006144ad85828601614196565b92505060206144be85828601614420565b9150509250929050565b6000602082840312156144de576144dd614148565b5b60006144ec84828501614420565b91505092915050565b6000806040838503121561450c5761450b614148565b5b600061451a85828601614196565b925050602061452b85828601614196565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061457c57607f821691505b602082108114156145905761458f614535565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145cc602083614098565b91506145d782614596565b602082019050919050565b600060208201905081810360008301526145fb816145bf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061463c826141ab565b9150614647836141ab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146805761467f614602565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146c5826141ab565b91506146d0836141ab565b9250826146e0576146df61468b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614747602f83614098565b9150614752826146eb565b604082019050919050565b600060208201905081810360008301526147768161473a565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b60006147b3601d83614098565b91506147be8261477d565b602082019050919050565b600060208201905081810360008301526147e2816147a6565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614845603383614098565b9150614850826147e9565b604082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006148d7603083614098565b91506148e28261487b565b604082019050919050565b60006020820190508181036000830152614906816148ca565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614969603983614098565b91506149748261490d565b604082019050919050565b600060208201905081810360008301526149988161495c565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006149fb602483614098565b9150614a068261499f565b604082019050919050565b60006020820190508181036000830152614a2a816149ee565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614a8d603583614098565b9150614a9882614a31565b604082019050919050565b60006020820190508181036000830152614abc81614a80565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614b1f603483614098565b9150614b2a82614ac3565b604082019050919050565b60006020820190508181036000830152614b4e81614b12565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614b8b601d83614098565b9150614b9682614b55565b602082019050919050565b60006020820190508181036000830152614bba81614b7e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c1d602683614098565b9150614c2882614bc1565b604082019050919050565b60006020820190508181036000830152614c4c81614c10565b9050919050565b6000614c5e826141ab565b9150614c69836141ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c9e57614c9d614602565b5b828201905092915050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614cdf602083614098565b9150614cea82614ca9565b602082019050919050565b60006020820190508181036000830152614d0e81614cd2565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614d71602a83614098565b9150614d7c82614d15565b604082019050919050565b60006020820190508181036000830152614da081614d64565b9050919050565b600081519050614db6816141b5565b92915050565b600060208284031215614dd257614dd1614148565b5b6000614de084828501614da7565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e1f601b83614098565b9150614e2a82614de9565b602082019050919050565b60006020820190508181036000830152614e4e81614e12565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614eb1602483614098565b9150614ebc82614e55565b604082019050919050565b60006020820190508181036000830152614ee081614ea4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614f43602283614098565b9150614f4e82614ee7565b604082019050919050565b60006020820190508181036000830152614f7281614f36565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614fd5602583614098565b9150614fe082614f79565b604082019050919050565b6000602082019050818103600083015261500481614fc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615067602383614098565b91506150728261500b565b604082019050919050565b600060208201905081810360008301526150968161505a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006150d3601683614098565b91506150de8261509d565b602082019050919050565b60006020820190508181036000830152615102816150c6565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061518b604983614098565b915061519682615109565b606082019050919050565b600060208201905081810360008301526151ba8161517e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061521d603583614098565b9150615228826151c1565b604082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615289601383614098565b915061529482615253565b602082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061531b603683614098565b9150615326826152bf565b604082019050919050565b6000602082019050818103600083015261534a8161530e565b9050919050565b600061535c826141ab565b9150615367836141ab565b92508282101561537a57615379614602565b5b828203905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006153e1602183614098565b91506153ec82615385565b604082019050919050565b60006020820190508181036000830152615410816153d4565b9050919050565b600060608201905061542c60008301866142fe565b61543960208301856142fe565b61544660408301846142fe565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154bb8161417f565b92915050565b6000602082840312156154d7576154d6614148565b5b60006154e5848285016154ac565b91505092915050565b6000819050919050565b600061551361550e615509846154ee565b614284565b6141ab565b9050919050565b615523816154f8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61555e8161416d565b82525050565b60006155708383615555565b60208301905092915050565b6000602082019050919050565b600061559482615529565b61559e8185615534565b93506155a983615545565b8060005b838110156155da5781516155c18882615564565b97506155cc8361557c565b9250506001810190506155ad565b5085935050505092915050565b600060a0820190506155fc60008301886142fe565b615609602083018761551a565b818103604083015261561b8186615589565b905061562a60608301856143a8565b61563760808301846142fe565b9695505050505050565b600060c08201905061565660008301896143a8565b61566360208301886142fe565b615670604083018761551a565b61567d606083018661551a565b61568a60808301856143a8565b61569760a08301846142fe565b979650505050505050565b6000806000606084860312156156bb576156ba614148565b5b60006156c986828701614da7565b93505060206156da86828701614da7565b92505060406156eb86828701614da7565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209edb7493658e43fad1ac4a1b34784321c7320249d92259437fd77f02f6017b1d64736f6c63430008090033
Deployed Bytecode Sourcemap
28488:15674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6949:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9116:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29872:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28563:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8069:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29068:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28879:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29685:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33382:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9728:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28666:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28974:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28935:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7911:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10492:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28621:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29166:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35365:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29600:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29246:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8240:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21115:148;;;;;;;;;;;;;:::i;:::-;;34208:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41880:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32595:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33851:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32384:155;;;;;;;;;;;;;:::i;:::-;;20481:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34095:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7168:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34917:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29122:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11213:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29026:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8580:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29999:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29206:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34727:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33624:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29469:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28760:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32989:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29517:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8818:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28802:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32780:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34467:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29557:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21418:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29641:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28842:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43151:1008;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6949:100;7003:13;7036:5;7029:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6949:100;:::o;9116:169::-;9199:4;9216:39;9225:12;:10;:12::i;:::-;9239:7;9248:6;9216:8;:39::i;:::-;9273:4;9266:11;;9116:169;;;;:::o;29872:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;28563:51::-;;;:::o;8069:108::-;8130:7;8157:12;;8150:19;;8069:108;:::o;29068:47::-;;;;:::o;28879:36::-;;;;:::o;29685:33::-;;;;:::o;33382:234::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33501:4:::1;33495;33491:1;33475:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33474:31;;;;:::i;:::-;33464:6;:41;;33456:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;33601:6;33591;:17;;;;:::i;:::-;33568:20;:40;;;;33382:234:::0;:::o;9728:355::-;9868:4;9885:36;9895:6;9903:9;9914:6;9885:9;:36::i;:::-;9932:121;9941:6;9949:12;:10;:12::i;:::-;9963:89;10001:6;9963:89;;;;;;;;;;;;;;;;;:11;:19;9975:6;9963:19;;;;;;;;;;;;;;;:33;9983:12;:10;:12::i;:::-;9963:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9932:8;:121::i;:::-;10071:4;10064:11;;9728:355;;;;;:::o;28666:53::-;28712:6;28666:53;:::o;28974:45::-;;;;:::o;28935:32::-;;;;;;;;;;;;;:::o;7911:93::-;7969:5;7994:2;7987:9;;7911:93;:::o;10492:218::-;10580:4;10597:83;10606:12;:10;:12::i;:::-;10620:7;10629:50;10668:10;10629:11;:25;10641:12;:10;:12::i;:::-;10629:25;;;;;;;;;;;;;;;:34;10655:7;10629:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10597:8;:83::i;:::-;10698:4;10691:11;;10492:218;;;;:::o;28621:38::-;;;:::o;29166:33::-;;;;;;;;;;;;;:::o;35365:125::-;35430:4;35454:19;:28;35474:7;35454:28;;;;;;;;;;;;;;;;;;;;;;;;;35447:35;;35365:125;;;:::o;29600:28::-;;;;:::o;29246:31::-;;;;;;;;;;;;;:::o;8240:127::-;8314:7;8341:9;:18;8351:7;8341:18;;;;;;;;;;;;;;;;8334:25;;8240:127;;;:::o;21115:148::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21222:1:::1;21185:40;;21206:6;;;;;;;;;;;21185:40;;;;;;;;;;;;21253:1;21236:6;;:19;;;;;;;;;;;;;;;;;;21115:148::o:0;34208:247::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34312:13:::1;34294:15;:31;;;;34361:15;;34346:12;:30;;;;34411:2;34395:12;;:18;;34387:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;34208:247:::0;:::o;41880:447::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42034:3:::1;42011:19;:26;;42003:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;42124:4;42112:8;:16;;:33;;;;;42144:1;42132:8;:13;;42112:33;42104:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;42227:19;42209:15;:37;;;;42276:8;42257:16;:27;;;;42311:8;42295:13;;:24;;;;;;;;;;;;;;;;;;41880:447:::0;;;:::o;32595:120::-;32647:4;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32680:5:::1;32663:14;;:22;;;;;;;;;;;;;;;;;;32703:4;32696:11;;32595:120:::0;:::o;33851:144::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33983:4:::1;33941:31;:39;33973:6;33941:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33851:144:::0;;:::o;32384:155::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32455:4:::1;32439:13;;:20;;;;;;;;;;;;;;;;;;32484:4;32470:11;;:18;;;;;;;;;;;;;;;;;;32516:15;32499:14;:32;;;;32384:155::o:0;20481:79::-;20519:7;20546:6;;;;;;;;;;;20539:13;;20481:79;:::o;34095:101::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34181:7:::1;34167:11;;:21;;;;;;;;;;;;;;;;;;34095:101:::0;:::o;7168:104::-;7224:13;7257:7;7250:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7168:104;:::o;34917:244::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35024:13:::1;35016:21;;:4;:21;;;;35008:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;35112:41;35141:4;35147:5;35112:28;:41::i;:::-;34917:244:::0;;:::o;29122:35::-;;;;:::o;11213:269::-;11306:4;11323:129;11332:12;:10;:12::i;:::-;11346:7;11355:96;11394:15;11355:96;;;;;;;;;;;;;;;;;:11;:25;11367:12;:10;:12::i;:::-;11355:25;;;;;;;;;;;;;;;:34;11381:7;11355:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11323:8;:129::i;:::-;11470:4;11463:11;;11213:269;;;;:::o;29026:29::-;;;;:::o;8580:175::-;8666:4;8683:42;8693:12;:10;:12::i;:::-;8707:9;8718:6;8683:9;:42::i;:::-;8743:4;8736:11;;8580:175;;;;:::o;29999:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;29206:33::-;;;;;;;;;;;;;:::o;34727:182::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34843:8:::1;34812:19;:28;34832:7;34812:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34883:7;34867:34;;;34892:8;34867:34;;;;;;:::i;:::-;;;;;;;;34727:182:::0;;:::o;33624:215::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33746:4:::1;33740;33736:1;33720:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33719:31;;;;:::i;:::-;33709:6;:41;;33701:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;33824:6;33814;:17;;;;:::i;:::-;33802:9;:29;;;;33624:215:::0;:::o;29469:39::-;;;;;;;;;;;;;:::o;28760:35::-;;;;:::o;32989:381::-;33070:4;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33126:6:::1;33122:1;33106:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;33093:9;:39;;33085:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;33241:4;33237:1;33221:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33208:9;:37;;33200:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;33333:9;33312:18;:30;;;;33359:4;33352:11;;32989:381:::0;;;:::o;29517:27::-;;;;:::o;8818:151::-;8907:7;8934:11;:18;8946:5;8934:18;;;;;;;;;;;;;;;:27;8953:7;8934:27;;;;;;;;;;;;;;;;8927:34;;8818:151;;;;:::o;28802:33::-;;;;:::o;32780:134::-;32840:4;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32879:5:::1;32856:20;;:28;;;;;;;;;;;;;;;;;;32902:4;32895:11;;32780:134:::0;:::o;34467:252::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34573:13:::1;34554:16;:32;;;;34623:16;;34607:13;:32;;;;34675:2;34658:13;;:19;;34650:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34467:252:::0;:::o;29557:30::-;;;;:::o;21418:244::-;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21527:1:::1;21507:22;;:8;:22;;;;21499:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21617:8;21588:38;;21609:6;;;;;;;;;;;21588:38;;;;;;;;;;;;21646:8;21637:6;;:17;;;;;;;;;;;;;;;;;;21418:244:::0;:::o;29641:31::-;;;;:::o;28842:24::-;;;;:::o;43151:1008::-;43235:4;20703:12;:10;:12::i;:::-;20693:22;;:6;;;;;;;;;;;:22;;;20685:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43300:19:::1;;43277:20;;:42;;;;:::i;:::-;43259:15;:60;43251:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;43387:4;43376:7;:15;;43368:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;43472:15;43449:20;:38;;;;43550:28;43581:4;:14;;;43596:13;43581:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43550:60;;43668:20;43691:44;43729:5;43691:33;43716:7;43691:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;43668:67;;43863:1;43848:12;:16;43844:109;;;43880:61;43896:13;43919:6;43928:12;43880:15;:61::i;:::-;43844:109;44026:19;44063:13;44026:51;;44088:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;44115:14;;;;;;;;;;44147:4;44140:11;;;;;43151:1008:::0;;;:::o;15622:181::-;15680:7;15700:9;15716:1;15712;:5;;;;:::i;:::-;15700:17;;15741:1;15736;:6;;15728:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15794:1;15787:8;;;15622:181;;;;:::o;145:98::-;198:7;225:10;218:17;;145:98;:::o;14292:380::-;14445:1;14428:19;;:5;:19;;;;14420:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14526:1;14507:21;;:7;:21;;;;14499:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14610:6;14580:11;:18;14592:5;14580:18;;;;;;;;;;;;;;;:27;14599:7;14580:27;;;;;;;;;;;;;;;:36;;;;14648:7;14632:32;;14641:5;14632:32;;;14657:6;14632:32;;;;;;:::i;:::-;;;;;;;;14292:380;;;:::o;35552:4037::-;35700:1;35684:18;;:4;:18;;;;35676:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35777:1;35763:16;;:2;:16;;;;35755:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;35854:1;35844:6;:11;35841:92;;;35872:28;35888:4;35894:2;35898:1;35872:15;:28::i;:::-;35915:7;;35841:92;35956:14;;;;;;;;;;;35953:1841;;;36016:7;:5;:7::i;:::-;36008:15;;:4;:15;;;;:49;;;;;36050:7;:5;:7::i;:::-;36044:13;;:2;:13;;;;36008:49;:86;;;;;36092:1;36078:16;;:2;:16;;;;36008:86;:128;;;;;36129:6;36115:21;;:2;:21;;;;36008:128;:158;;;;;36158:8;;;;;;;;;;;36157:9;36008:158;35986:1797;;;36204:13;;;;;;;;;;;36200:148;;36249:19;:25;36269:4;36249:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;36278:19;:23;36298:2;36278:23;;;;;;;;;;;;;;;;;;;;;;;;;36249:52;36241:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;36200:148;36506:20;;;;;;;;;;;36502:423;;;36560:7;:5;:7::i;:::-;36554:13;;:2;:13;;;;:47;;;;;36585:15;36571:30;;:2;:30;;;;36554:47;:79;;;;;36619:13;36605:28;;:2;:28;;;;36554:79;36550:356;;;36711:12;36669:28;:39;36698:9;36669:39;;;;;;;;;;;;;;;;:54;36661:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;36870:12;36828:28;:39;36857:9;36828:39;;;;;;;;;;;;;;;:54;;;;36550:356;36502:423;36994:25;:31;37020:4;36994:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;37030:31;:35;37062:2;37030:35;;;;;;;;;;;;;;;;;;;;;;;;;37029:36;36994:71;36990:778;;;37112:20;;37102:6;:30;;37094:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;37251:9;;37234:13;37244:2;37234:9;:13::i;:::-;37225:6;:22;;;;:::i;:::-;:35;;37217:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36990:778;;;37378:25;:29;37404:2;37378:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;37412:31;:37;37444:4;37412:37;;;;;;;;;;;;;;;;;;;;;;;;;37411:38;37378:71;37374:394;;;37496:20;;37486:6;:30;;37478:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;37374:394;;;37622:31;:35;37654:2;37622:35;;;;;;;;;;;;;;;;;;;;;;;;;37618:150;;37715:9;;37698:13;37708:2;37698:9;:13::i;:::-;37689:6;:22;;;;:::i;:::-;:35;;37681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37618:150;37374:394;36990:778;35986:1797;35953:1841;37808:28;37839:24;37857:4;37839:9;:24::i;:::-;37808:55;;37884:12;37923:18;;37899:20;:42;;37884:57;;37972:7;:35;;;;;37996:11;;;;;;;;;;;37972:35;:61;;;;;38025:8;;;;;;;;;;;38024:9;37972:61;:110;;;;;38051:25;:31;38077:4;38051:31;;;;;;;;;;;;;;;;;;;;;;;;;38050:32;37972:110;:153;;;;;38100:19;:25;38120:4;38100:25;;;;;;;;;;;;;;;;;;;;;;;;;38099:26;37972:153;:194;;;;;38143:19;:23;38163:2;38143:23;;;;;;;;;;;;;;;;;;;;;;;;;38142:24;37972:194;37954:338;;;38204:4;38193:8;;:15;;;;;;;;;;;;;;;;;;38237:10;:8;:10::i;:::-;38275:5;38264:8;;:16;;;;;;;;;;;;;;;;;;37954:338;38316:8;;;;;;;;;;;38315:9;:42;;;;;38328:25;:29;38354:2;38328:29;;;;;;;;;;;;;;;;;;;;;;;;;38315:42;:59;;;;;38361:13;;;;;;;;;;;38315:59;:114;;;;;38414:15;;38397:14;;:32;;;;:::i;:::-;38378:15;:51;;38315:114;:144;;;;;38434:19;:25;38454:4;38434:25;;;;;;;;;;;;;;;;;;;;;;;;;38433:26;38315:144;38312:204;;;38475:29;:27;:29::i;:::-;;38312:204;38528:12;38544:8;;;;;;;;;;;38543:9;38528:24;;38653:19;:25;38673:4;38653:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;38682:19;:23;38702:2;38682:23;;;;;;;;;;;;;;;;;;;;;;;;;38653:52;38650:99;;;38732:5;38722:15;;38650:99;38769:12;38873:7;38870:666;;;38924:25;:29;38950:2;38924:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;38973:1;38957:13;;:17;38924:50;38920:456;;;39001:34;39031:3;39001:25;39012:13;;39001:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;38994:41;;39102:13;;39083:16;;39076:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;39054:18;;:61;;;;;;;:::i;:::-;;;;;;;;38920:456;;;39176:25;:31;39202:4;39176:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;39226:1;39211:12;;:16;39176:51;39173:203;;;39252:33;39281:3;39252:24;39263:12;;39252:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;39245:40;;39348:12;;39330:15;;39323:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;39301:18;;:59;;;;;;;:::i;:::-;;;;;;;;39173:203;38920:456;39414:1;39407:4;:8;39404:93;;;39439:42;39455:4;39469;39476;39439:15;:42::i;:::-;39404:93;39520:4;39510:14;;;;;:::i;:::-;;;38870:666;39548:33;39564:4;39570:2;39574:6;39548:15;:33::i;:::-;35665:3924;;;;35552:4037;;;;:::o;16477:192::-;16563:7;16596:1;16591;:6;;16599:12;16583:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16623:9;16639:1;16635;:5;;;;:::i;:::-;16623:17;;16660:1;16653:8;;;16477:192;;;;;:::o;35169:188::-;35286:5;35252:25;:31;35278:4;35252:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35343:5;35309:40;;35337:4;35309:40;;;;;;;;;;;;35169:188;;:::o;16904:471::-;16962:7;17212:1;17207;:6;17203:47;;;17237:1;17230:8;;;;17203:47;17262:9;17278:1;17274;:5;;;;:::i;:::-;17262:17;;17307:1;17302;17298;:5;;;;:::i;:::-;:10;17290:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17366:1;17359:8;;;16904:471;;;;;:::o;17834:132::-;17892:7;17919:39;17923:1;17926;17919:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;17912:46;;17834:132;;;;:::o;11972:573::-;12130:1;12112:20;;:6;:20;;;;12104:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12214:1;12193:23;;:9;:23;;;;12185:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12269:47;12290:6;12298:9;12309:6;12269:20;:47::i;:::-;12349:71;12371:6;12349:71;;;;;;;;;;;;;;;;;:9;:17;12359:6;12349:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12329:9;:17;12339:6;12329:17;;;;;;;;;;;;;;;:91;;;;12454:32;12479:6;12454:9;:20;12464:9;12454:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12431:9;:20;12441:9;12431:20;;;;;;;;;;;;;;;:55;;;;12519:9;12502:35;;12511:6;12502:35;;;12530:6;12502:35;;;;;;:::i;:::-;;;;;;;;11972:573;;;:::o;40735:1133::-;40774:23;40800:24;40818:4;40800:9;:24::i;:::-;40774:50;;40835:25;40863:18;;40835:46;;40934:1;40915:15;:20;:46;;;;40960:1;40939:17;:22;40915:46;40912:60;;;40964:7;;;;40912:60;41026:2;41005:18;;:23;;;;:::i;:::-;40987:15;:41;40984:111;;;41081:2;41060:18;;:23;;;;:::i;:::-;41042:41;;40984:111;41164:23;41249:1;41229:17;41208:18;;41190:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;41164:86;;41261:26;41290:36;41310:15;41290;:19;;:36;;;;:::i;:::-;41261:65;;41347:25;41375:21;41347:49;;41409:36;41426:18;41409:16;:36::i;:::-;41467:18;41488:44;41514:17;41488:21;:25;;:44;;;;:::i;:::-;41467:65;;41553:23;41579:10;41553:36;;41631:1;41610:18;:22;;;;41672:1;41654:15;:19;:42;;;;;41695:1;41677:15;:19;41654:42;41651:210;;;41712:46;41725:15;41742;41712:12;:46::i;:::-;41778:71;41793:18;41813:15;41830:18;;41778:71;;;;;;;;:::i;:::-;;;;;;;;41651:210;40763:1105;;;;;;;40735:1133;:::o;42339:804::-;42396:4;42439:15;42422:14;:32;;;;42517:28;42548:4;:14;;;42563:13;42548:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42517:60;;42635:20;42658:53;42705:5;42658:42;42683:16;;42658:20;:24;;:42;;;;:::i;:::-;:46;;:53;;;;:::i;:::-;42635:76;;42839:1;42824:12;:16;42820:109;;;42856:61;42872:13;42895:6;42904:12;42856:15;:61::i;:::-;42820:109;43012:19;43049:13;43012:51;;43074:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43101:12;;;;;;;;;;43131:4;43124:11;;;;;42339:804;:::o;18462:278::-;18548:7;18580:1;18576;:5;18583:12;18568:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18607:9;18623:1;18619;:5;;;;:::i;:::-;18607:17;;18731:1;18724:8;;;18462:278;;;;;:::o;15251:125::-;;;;:::o;16062:136::-;16120:7;16147:43;16151:1;16154;16147:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;16140:50;;16062:136;;;;:::o;39597:601::-;39725:21;39763:1;39749:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39725:40;;39794:4;39776;39781:1;39776:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;39820:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39810:4;39815:1;39810:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;39855:62;39872:4;39887:15;39905:11;39855:8;:62::i;:::-;39956:15;:66;;;40037:11;40063:1;40107:4;40134;40154:15;39956:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39652:546;39597:601;:::o;40210:517::-;40358:62;40375:4;40390:15;40408:11;40358:8;:62::i;:::-;40463:15;:31;;;40502:9;40535:4;40555:11;40581:1;40624;28712:6;40693:15;40463:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40210:517;;:::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:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::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:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:613::-;7236:6;7244;7252;7301:2;7289:9;7280:7;7276:23;7272:32;7269:119;;;7307:79;;:::i;:::-;7269:119;7427:1;7452:53;7497:7;7488:6;7477:9;7473:22;7452:53;:::i;:::-;7442:63;;7398:117;7554:2;7580:53;7625:7;7616:6;7605:9;7601:22;7580:53;:::i;:::-;7570:63;;7525:118;7682:2;7708:50;7750:7;7741:6;7730:9;7726:22;7708:50;:::i;:::-;7698:60;;7653:115;7162:613;;;;;:::o;7781:468::-;7846:6;7854;7903:2;7891:9;7882:7;7878:23;7874:32;7871:119;;;7909:79;;:::i;:::-;7871:119;8029:1;8054:53;8099:7;8090:6;8079:9;8075:22;8054:53;:::i;:::-;8044:63;;8000:117;8156:2;8182:50;8224:7;8215:6;8204:9;8200:22;8182:50;:::i;:::-;8172:60;;8127:115;7781:468;;;;;:::o;8255:323::-;8311:6;8360:2;8348:9;8339:7;8335:23;8331:32;8328:119;;;8366:79;;:::i;:::-;8328:119;8486:1;8511:50;8553:7;8544:6;8533:9;8529:22;8511:50;:::i;:::-;8501:60;;8457:114;8255:323;;;;:::o;8584:474::-;8652:6;8660;8709:2;8697:9;8688:7;8684:23;8680:32;8677:119;;;8715:79;;:::i;:::-;8677:119;8835:1;8860:53;8905:7;8896:6;8885:9;8881:22;8860:53;:::i;:::-;8850:63;;8806:117;8962:2;8988:53;9033:7;9024:6;9013:9;9009:22;8988:53;:::i;:::-;8978:63;;8933:118;8584:474;;;;;:::o;9064:180::-;9112:77;9109:1;9102:88;9209:4;9206:1;9199:15;9233:4;9230:1;9223:15;9250:320;9294:6;9331:1;9325:4;9321:12;9311:22;;9378:1;9372:4;9368:12;9399:18;9389:81;;9455:4;9447:6;9443:17;9433:27;;9389:81;9517:2;9509:6;9506:14;9486:18;9483:38;9480:84;;;9536:18;;:::i;:::-;9480:84;9301:269;9250:320;;;:::o;9576:182::-;9716:34;9712:1;9704:6;9700:14;9693:58;9576:182;:::o;9764:366::-;9906:3;9927:67;9991:2;9986:3;9927:67;:::i;:::-;9920:74;;10003:93;10092:3;10003:93;:::i;:::-;10121:2;10116:3;10112:12;10105:19;;9764:366;;;:::o;10136:419::-;10302:4;10340:2;10329:9;10325:18;10317:26;;10389:9;10383:4;10379:20;10375:1;10364:9;10360:17;10353:47;10417:131;10543:4;10417:131;:::i;:::-;10409:139;;10136:419;;;:::o;10561:180::-;10609:77;10606:1;10599:88;10706:4;10703:1;10696:15;10730:4;10727:1;10720:15;10747:348;10787:7;10810:20;10828:1;10810:20;:::i;:::-;10805:25;;10844:20;10862:1;10844:20;:::i;:::-;10839:25;;11032:1;10964:66;10960:74;10957:1;10954:81;10949:1;10942:9;10935:17;10931:105;10928:131;;;11039:18;;:::i;:::-;10928:131;11087:1;11084;11080:9;11069:20;;10747:348;;;;:::o;11101:180::-;11149:77;11146:1;11139:88;11246:4;11243:1;11236:15;11270:4;11267:1;11260:15;11287:185;11327:1;11344:20;11362:1;11344:20;:::i;:::-;11339:25;;11378:20;11396:1;11378:20;:::i;:::-;11373:25;;11417:1;11407:35;;11422:18;;:::i;:::-;11407:35;11464:1;11461;11457:9;11452:14;;11287:185;;;;:::o;11478:234::-;11618:34;11614:1;11606:6;11602:14;11595:58;11687:17;11682:2;11674:6;11670:15;11663:42;11478:234;:::o;11718:366::-;11860:3;11881:67;11945:2;11940:3;11881:67;:::i;:::-;11874:74;;11957:93;12046:3;11957:93;:::i;:::-;12075:2;12070:3;12066:12;12059:19;;11718:366;;;:::o;12090:419::-;12256:4;12294:2;12283:9;12279:18;12271:26;;12343:9;12337:4;12333:20;12329:1;12318:9;12314:17;12307:47;12371:131;12497:4;12371:131;:::i;:::-;12363:139;;12090:419;;;:::o;12515:179::-;12655:31;12651:1;12643:6;12639:14;12632:55;12515:179;:::o;12700:366::-;12842:3;12863:67;12927:2;12922:3;12863:67;:::i;:::-;12856:74;;12939:93;13028:3;12939:93;:::i;:::-;13057:2;13052:3;13048:12;13041:19;;12700:366;;;:::o;13072:419::-;13238:4;13276:2;13265:9;13261:18;13253:26;;13325:9;13319:4;13315:20;13311:1;13300:9;13296:17;13289:47;13353:131;13479:4;13353:131;:::i;:::-;13345:139;;13072:419;;;:::o;13497:238::-;13637:34;13633:1;13625:6;13621:14;13614:58;13706:21;13701:2;13693:6;13689:15;13682:46;13497:238;:::o;13741:366::-;13883:3;13904:67;13968:2;13963:3;13904:67;:::i;:::-;13897:74;;13980:93;14069:3;13980:93;:::i;:::-;14098:2;14093:3;14089:12;14082:19;;13741:366;;;:::o;14113:419::-;14279:4;14317:2;14306:9;14302:18;14294:26;;14366:9;14360:4;14356:20;14352:1;14341:9;14337:17;14330:47;14394:131;14520:4;14394:131;:::i;:::-;14386:139;;14113:419;;;:::o;14538:235::-;14678:34;14674:1;14666:6;14662:14;14655:58;14747:18;14742:2;14734:6;14730:15;14723:43;14538:235;:::o;14779:366::-;14921:3;14942:67;15006:2;15001:3;14942:67;:::i;:::-;14935:74;;15018:93;15107:3;15018:93;:::i;:::-;15136:2;15131:3;15127:12;15120:19;;14779:366;;;:::o;15151:419::-;15317:4;15355:2;15344:9;15340:18;15332:26;;15404:9;15398:4;15394:20;15390:1;15379:9;15375:17;15368:47;15432:131;15558:4;15432:131;:::i;:::-;15424:139;;15151:419;;;:::o;15576:244::-;15716:34;15712:1;15704:6;15700:14;15693:58;15785:27;15780:2;15772:6;15768:15;15761:52;15576:244;:::o;15826:366::-;15968:3;15989:67;16053:2;16048:3;15989:67;:::i;:::-;15982:74;;16065:93;16154:3;16065:93;:::i;:::-;16183:2;16178:3;16174:12;16167:19;;15826:366;;;:::o;16198:419::-;16364:4;16402:2;16391:9;16387:18;16379:26;;16451:9;16445:4;16441:20;16437:1;16426:9;16422:17;16415:47;16479:131;16605:4;16479:131;:::i;:::-;16471:139;;16198:419;;;:::o;16623:223::-;16763:34;16759:1;16751:6;16747:14;16740:58;16832:6;16827:2;16819:6;16815:15;16808:31;16623:223;:::o;16852:366::-;16994:3;17015:67;17079:2;17074:3;17015:67;:::i;:::-;17008:74;;17091:93;17180:3;17091:93;:::i;:::-;17209:2;17204:3;17200:12;17193:19;;16852:366;;;:::o;17224:419::-;17390:4;17428:2;17417:9;17413:18;17405:26;;17477:9;17471:4;17467:20;17463:1;17452:9;17448:17;17441:47;17505:131;17631:4;17505:131;:::i;:::-;17497:139;;17224:419;;;:::o;17649:240::-;17789:34;17785:1;17777:6;17773:14;17766:58;17858:23;17853:2;17845:6;17841:15;17834:48;17649:240;:::o;17895:366::-;18037:3;18058:67;18122:2;18117:3;18058:67;:::i;:::-;18051:74;;18134:93;18223:3;18134:93;:::i;:::-;18252:2;18247:3;18243:12;18236:19;;17895:366;;;:::o;18267:419::-;18433:4;18471:2;18460:9;18456:18;18448:26;;18520:9;18514:4;18510:20;18506:1;18495:9;18491:17;18484:47;18548:131;18674:4;18548:131;:::i;:::-;18540:139;;18267:419;;;:::o;18692:239::-;18832:34;18828:1;18820:6;18816:14;18809:58;18901:22;18896:2;18888:6;18884:15;18877:47;18692:239;:::o;18937:366::-;19079:3;19100:67;19164:2;19159:3;19100:67;:::i;:::-;19093:74;;19176:93;19265:3;19176:93;:::i;:::-;19294:2;19289:3;19285:12;19278:19;;18937:366;;;:::o;19309:419::-;19475:4;19513:2;19502:9;19498:18;19490:26;;19562:9;19556:4;19552:20;19548:1;19537:9;19533:17;19526:47;19590:131;19716:4;19590:131;:::i;:::-;19582:139;;19309:419;;;:::o;19734:179::-;19874:31;19870:1;19862:6;19858:14;19851:55;19734:179;:::o;19919:366::-;20061:3;20082:67;20146:2;20141:3;20082:67;:::i;:::-;20075:74;;20158:93;20247:3;20158:93;:::i;:::-;20276:2;20271:3;20267:12;20260:19;;19919:366;;;:::o;20291:419::-;20457:4;20495:2;20484:9;20480:18;20472:26;;20544:9;20538:4;20534:20;20530:1;20519:9;20515:17;20508:47;20572:131;20698:4;20572:131;:::i;:::-;20564:139;;20291:419;;;:::o;20716:225::-;20856:34;20852:1;20844:6;20840:14;20833:58;20925:8;20920:2;20912:6;20908:15;20901:33;20716:225;:::o;20947:366::-;21089:3;21110:67;21174:2;21169:3;21110:67;:::i;:::-;21103:74;;21186:93;21275:3;21186:93;:::i;:::-;21304:2;21299:3;21295:12;21288:19;;20947:366;;;:::o;21319:419::-;21485:4;21523:2;21512:9;21508:18;21500:26;;21572:9;21566:4;21562:20;21558:1;21547:9;21543:17;21536:47;21600:131;21726:4;21600:131;:::i;:::-;21592:139;;21319:419;;;:::o;21744:305::-;21784:3;21803:20;21821:1;21803:20;:::i;:::-;21798:25;;21837:20;21855:1;21837:20;:::i;:::-;21832:25;;21991:1;21923:66;21919:74;21916:1;21913:81;21910:107;;;21997:18;;:::i;:::-;21910:107;22041:1;22038;22034:9;22027:16;;21744:305;;;;:::o;22055:182::-;22195:34;22191:1;22183:6;22179:14;22172:58;22055:182;:::o;22243:366::-;22385:3;22406:67;22470:2;22465:3;22406:67;:::i;:::-;22399:74;;22482:93;22571:3;22482:93;:::i;:::-;22600:2;22595:3;22591:12;22584:19;;22243:366;;;:::o;22615:419::-;22781:4;22819:2;22808:9;22804:18;22796:26;;22868:9;22862:4;22858:20;22854:1;22843:9;22839:17;22832:47;22896:131;23022:4;22896:131;:::i;:::-;22888:139;;22615:419;;;:::o;23040:229::-;23180:34;23176:1;23168:6;23164:14;23157:58;23249:12;23244:2;23236:6;23232:15;23225:37;23040:229;:::o;23275:366::-;23417:3;23438:67;23502:2;23497:3;23438:67;:::i;:::-;23431:74;;23514:93;23603:3;23514:93;:::i;:::-;23632:2;23627:3;23623:12;23616:19;;23275:366;;;:::o;23647:419::-;23813:4;23851:2;23840:9;23836:18;23828:26;;23900:9;23894:4;23890:20;23886:1;23875:9;23871:17;23864:47;23928:131;24054:4;23928:131;:::i;:::-;23920:139;;23647:419;;;:::o;24072:143::-;24129:5;24160:6;24154:13;24145:22;;24176:33;24203:5;24176:33;:::i;:::-;24072:143;;;;:::o;24221:351::-;24291:6;24340:2;24328:9;24319:7;24315:23;24311:32;24308:119;;;24346:79;;:::i;:::-;24308:119;24466:1;24491:64;24547:7;24538:6;24527:9;24523:22;24491:64;:::i;:::-;24481:74;;24437:128;24221:351;;;;:::o;24578:177::-;24718:29;24714:1;24706:6;24702:14;24695:53;24578:177;:::o;24761:366::-;24903:3;24924:67;24988:2;24983:3;24924:67;:::i;:::-;24917:74;;25000:93;25089:3;25000:93;:::i;:::-;25118:2;25113:3;25109:12;25102:19;;24761:366;;;:::o;25133:419::-;25299:4;25337:2;25326:9;25322:18;25314:26;;25386:9;25380:4;25376:20;25372:1;25361:9;25357:17;25350:47;25414:131;25540:4;25414:131;:::i;:::-;25406:139;;25133:419;;;:::o;25558:223::-;25698:34;25694:1;25686:6;25682:14;25675:58;25767:6;25762:2;25754:6;25750:15;25743:31;25558:223;:::o;25787:366::-;25929:3;25950:67;26014:2;26009:3;25950:67;:::i;:::-;25943:74;;26026:93;26115:3;26026:93;:::i;:::-;26144:2;26139:3;26135:12;26128:19;;25787:366;;;:::o;26159:419::-;26325:4;26363:2;26352:9;26348:18;26340:26;;26412:9;26406:4;26402:20;26398:1;26387:9;26383:17;26376:47;26440:131;26566:4;26440:131;:::i;:::-;26432:139;;26159:419;;;:::o;26584:221::-;26724:34;26720:1;26712:6;26708:14;26701:58;26793:4;26788:2;26780:6;26776:15;26769:29;26584:221;:::o;26811:366::-;26953:3;26974:67;27038:2;27033:3;26974:67;:::i;:::-;26967:74;;27050:93;27139:3;27050:93;:::i;:::-;27168:2;27163:3;27159:12;27152:19;;26811:366;;;:::o;27183:419::-;27349:4;27387:2;27376:9;27372:18;27364:26;;27436:9;27430:4;27426:20;27422:1;27411:9;27407:17;27400:47;27464:131;27590:4;27464:131;:::i;:::-;27456:139;;27183:419;;;:::o;27608:224::-;27748:34;27744:1;27736:6;27732:14;27725:58;27817:7;27812:2;27804:6;27800:15;27793:32;27608:224;:::o;27838:366::-;27980:3;28001:67;28065:2;28060:3;28001:67;:::i;:::-;27994:74;;28077:93;28166:3;28077:93;:::i;:::-;28195:2;28190:3;28186:12;28179:19;;27838:366;;;:::o;28210:419::-;28376:4;28414:2;28403:9;28399:18;28391:26;;28463:9;28457:4;28453:20;28449:1;28438:9;28434:17;28427:47;28491:131;28617:4;28491:131;:::i;:::-;28483:139;;28210:419;;;:::o;28635:222::-;28775:34;28771:1;28763:6;28759:14;28752:58;28844:5;28839:2;28831:6;28827:15;28820:30;28635:222;:::o;28863:366::-;29005:3;29026:67;29090:2;29085:3;29026:67;:::i;:::-;29019:74;;29102:93;29191:3;29102:93;:::i;:::-;29220:2;29215:3;29211:12;29204:19;;28863:366;;;:::o;29235:419::-;29401:4;29439:2;29428:9;29424:18;29416:26;;29488:9;29482:4;29478:20;29474:1;29463:9;29459:17;29452:47;29516:131;29642:4;29516:131;:::i;:::-;29508:139;;29235:419;;;:::o;29660:172::-;29800:24;29796:1;29788:6;29784:14;29777:48;29660:172;:::o;29838:366::-;29980:3;30001:67;30065:2;30060:3;30001:67;:::i;:::-;29994:74;;30077:93;30166:3;30077:93;:::i;:::-;30195:2;30190:3;30186:12;30179:19;;29838:366;;;:::o;30210:419::-;30376:4;30414:2;30403:9;30399:18;30391:26;;30463:9;30457:4;30453:20;30449:1;30438:9;30434:17;30427:47;30491:131;30617:4;30491:131;:::i;:::-;30483:139;;30210:419;;;:::o;30635:297::-;30775:34;30771:1;30763:6;30759:14;30752:58;30844:34;30839:2;30831:6;30827:15;30820:59;30913:11;30908:2;30900:6;30896:15;30889:36;30635:297;:::o;30938:366::-;31080:3;31101:67;31165:2;31160:3;31101:67;:::i;:::-;31094:74;;31177:93;31266:3;31177:93;:::i;:::-;31295:2;31290:3;31286:12;31279:19;;30938:366;;;:::o;31310:419::-;31476:4;31514:2;31503:9;31499:18;31491:26;;31563:9;31557:4;31553:20;31549:1;31538:9;31534:17;31527:47;31591:131;31717:4;31591:131;:::i;:::-;31583:139;;31310:419;;;:::o;31735:240::-;31875:34;31871:1;31863:6;31859:14;31852:58;31944:23;31939:2;31931:6;31927:15;31920:48;31735:240;:::o;31981:366::-;32123:3;32144:67;32208:2;32203:3;32144:67;:::i;:::-;32137:74;;32220:93;32309:3;32220:93;:::i;:::-;32338:2;32333:3;32329:12;32322:19;;31981:366;;;:::o;32353:419::-;32519:4;32557:2;32546:9;32542:18;32534:26;;32606:9;32600:4;32596:20;32592:1;32581:9;32577:17;32570:47;32634:131;32760:4;32634:131;:::i;:::-;32626:139;;32353:419;;;:::o;32778:169::-;32918:21;32914:1;32906:6;32902:14;32895:45;32778:169;:::o;32953:366::-;33095:3;33116:67;33180:2;33175:3;33116:67;:::i;:::-;33109:74;;33192:93;33281:3;33192:93;:::i;:::-;33310:2;33305:3;33301:12;33294:19;;32953:366;;;:::o;33325:419::-;33491:4;33529:2;33518:9;33514:18;33506:26;;33578:9;33572:4;33568:20;33564:1;33553:9;33549:17;33542:47;33606:131;33732:4;33606:131;:::i;:::-;33598:139;;33325:419;;;:::o;33750:241::-;33890:34;33886:1;33878:6;33874:14;33867:58;33959:24;33954:2;33946:6;33942:15;33935:49;33750:241;:::o;33997:366::-;34139:3;34160:67;34224:2;34219:3;34160:67;:::i;:::-;34153:74;;34236:93;34325:3;34236:93;:::i;:::-;34354:2;34349:3;34345:12;34338:19;;33997:366;;;:::o;34369:419::-;34535:4;34573:2;34562:9;34558:18;34550:26;;34622:9;34616:4;34612:20;34608:1;34597:9;34593:17;34586:47;34650:131;34776:4;34650:131;:::i;:::-;34642:139;;34369:419;;;:::o;34794:191::-;34834:4;34854:20;34872:1;34854:20;:::i;:::-;34849:25;;34888:20;34906:1;34888:20;:::i;:::-;34883:25;;34927:1;34924;34921:8;34918:34;;;34932:18;;:::i;:::-;34918:34;34977:1;34974;34970:9;34962:17;;34794:191;;;;:::o;34991:220::-;35131:34;35127:1;35119:6;35115:14;35108:58;35200:3;35195:2;35187:6;35183:15;35176:28;34991:220;:::o;35217:366::-;35359:3;35380:67;35444:2;35439:3;35380:67;:::i;:::-;35373:74;;35456:93;35545:3;35456:93;:::i;:::-;35574:2;35569:3;35565:12;35558:19;;35217:366;;;:::o;35589:419::-;35755:4;35793:2;35782:9;35778:18;35770:26;;35842:9;35836:4;35832:20;35828:1;35817:9;35813:17;35806:47;35870:131;35996:4;35870:131;:::i;:::-;35862:139;;35589:419;;;:::o;36014:442::-;36163:4;36201:2;36190:9;36186:18;36178:26;;36214:71;36282:1;36271:9;36267:17;36258:6;36214:71;:::i;:::-;36295:72;36363:2;36352:9;36348:18;36339:6;36295:72;:::i;:::-;36377;36445:2;36434:9;36430:18;36421:6;36377:72;:::i;:::-;36014:442;;;;;;:::o;36462:180::-;36510:77;36507:1;36500:88;36607:4;36604:1;36597:15;36631:4;36628:1;36621:15;36648:180;36696:77;36693:1;36686:88;36793:4;36790:1;36783:15;36817:4;36814:1;36807:15;36834:143;36891:5;36922:6;36916:13;36907:22;;36938:33;36965:5;36938:33;:::i;:::-;36834:143;;;;:::o;36983:351::-;37053:6;37102:2;37090:9;37081:7;37077:23;37073:32;37070:119;;;37108:79;;:::i;:::-;37070:119;37228:1;37253:64;37309:7;37300:6;37289:9;37285:22;37253:64;:::i;:::-;37243:74;;37199:128;36983:351;;;;:::o;37340:85::-;37385:7;37414:5;37403:16;;37340:85;;;:::o;37431:158::-;37489:9;37522:61;37540:42;37549:32;37575:5;37549:32;:::i;:::-;37540:42;:::i;:::-;37522:61;:::i;:::-;37509:74;;37431:158;;;:::o;37595:147::-;37690:45;37729:5;37690:45;:::i;:::-;37685:3;37678:58;37595:147;;:::o;37748:114::-;37815:6;37849:5;37843:12;37833:22;;37748:114;;;:::o;37868:184::-;37967:11;38001:6;37996:3;37989:19;38041:4;38036:3;38032:14;38017:29;;37868:184;;;;:::o;38058:132::-;38125:4;38148:3;38140:11;;38178:4;38173:3;38169:14;38161:22;;38058:132;;;:::o;38196:108::-;38273:24;38291:5;38273:24;:::i;:::-;38268:3;38261:37;38196:108;;:::o;38310:179::-;38379:10;38400:46;38442:3;38434:6;38400:46;:::i;:::-;38478:4;38473:3;38469:14;38455:28;;38310:179;;;;:::o;38495:113::-;38565:4;38597;38592:3;38588:14;38580:22;;38495:113;;;:::o;38644:732::-;38763:3;38792:54;38840:5;38792:54;:::i;:::-;38862:86;38941:6;38936:3;38862:86;:::i;:::-;38855:93;;38972:56;39022:5;38972:56;:::i;:::-;39051:7;39082:1;39067:284;39092:6;39089:1;39086:13;39067:284;;;39168:6;39162:13;39195:63;39254:3;39239:13;39195:63;:::i;:::-;39188:70;;39281:60;39334:6;39281:60;:::i;:::-;39271:70;;39127:224;39114:1;39111;39107:9;39102:14;;39067:284;;;39071:14;39367:3;39360:10;;38768:608;;;38644:732;;;;:::o;39382:831::-;39645:4;39683:3;39672:9;39668:19;39660:27;;39697:71;39765:1;39754:9;39750:17;39741:6;39697:71;:::i;:::-;39778:80;39854:2;39843:9;39839:18;39830:6;39778:80;:::i;:::-;39905:9;39899:4;39895:20;39890:2;39879:9;39875:18;39868:48;39933:108;40036:4;40027:6;39933:108;:::i;:::-;39925:116;;40051:72;40119:2;40108:9;40104:18;40095:6;40051:72;:::i;:::-;40133:73;40201:3;40190:9;40186:19;40177:6;40133:73;:::i;:::-;39382:831;;;;;;;;:::o;40219:807::-;40468:4;40506:3;40495:9;40491:19;40483:27;;40520:71;40588:1;40577:9;40573:17;40564:6;40520:71;:::i;:::-;40601:72;40669:2;40658:9;40654:18;40645:6;40601:72;:::i;:::-;40683:80;40759:2;40748:9;40744:18;40735:6;40683:80;:::i;:::-;40773;40849:2;40838:9;40834:18;40825:6;40773:80;:::i;:::-;40863:73;40931:3;40920:9;40916:19;40907:6;40863:73;:::i;:::-;40946;41014:3;41003:9;40999:19;40990:6;40946:73;:::i;:::-;40219:807;;;;;;;;;:::o;41032:663::-;41120:6;41128;41136;41185:2;41173:9;41164:7;41160:23;41156:32;41153:119;;;41191:79;;:::i;:::-;41153:119;41311:1;41336:64;41392:7;41383:6;41372:9;41368:22;41336:64;:::i;:::-;41326:74;;41282:128;41449:2;41475:64;41531:7;41522:6;41511:9;41507:22;41475:64;:::i;:::-;41465:74;;41420:129;41588:2;41614:64;41670:7;41661:6;41650:9;41646:22;41614:64;:::i;:::-;41604:74;;41559:129;41032:663;;;;;:::o
Swarm Source
ipfs://9edb7493658e43fad1ac4a1b34784321c7320249d92259437fd77f02f6017b1d
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.