ERC-20
Overview
Max Total Supply
100,000,000 GENAI
Holders
174
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
28,697.001147764128515218 GENAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GENAI
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-14 */ // Website: https://genesisai.dev // Telegram: https://t.me/DeployGenesis // X: https://x.com/DeployGenesis // Docs: https://docs.genesisai.dev // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.23; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } 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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GENAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketerWallet; address public DevsWallet; uint256 public maxTx; uint256 public swapTokensAtAmount; uint256 public maxWallets; bool public hasLimitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public hasTransferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarkets; uint256 public tokensForDev; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaxTx; 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 marketerWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); event DevsWalletUpdated( address indexed newWallet, address indexed olDevsWalletallet ); constructor() ERC20("Genesis AI", unicode"GENAI") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); setExcludedFromMaxTX(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); setExcludedFromMaxTX(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 5; uint256 _sellDevFee = 0; buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; uint256 totalSupply = 100_000_000 * 1e18; maxTx = 2_000_000 * 1e18; maxWallets = 2_000_000 * 1e18; swapTokensAtAmount = (totalSupply * 3) / 10000; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); setExcludedFromMaxTX(owner(), true); setExcludedFromMaxTX(address(this), true); setExcludedFromMaxTX(address(0xdead), true); marketerWallet = address(0x3B4A0AF816904942c664aFa25FAA6bcA93b1D405); DevsWallet = address(0x3B4A0AF816904942c664aFa25FAA6bcA93b1D405); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function stopLimitsEffect() external onlyOwner returns (bool) { hasLimitsInEffect = false; return true; } function stopTransferDelay() external onlyOwner returns (bool) { hasTransferDelayEnabled = false; return true; } 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 setMaxTxn(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTx lower than 0.1%" ); maxTx = newNum * (10**18); } function setMaxWalletSize(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallets lower than 0.5%" ); maxWallets = newNum * (10**18); } function changeMarketingWallet(address newmarketerWallet) external onlyOwner { emit marketerWalletUpdated(newmarketerWallet, marketerWallet); marketerWallet = newmarketerWallet; } function changeDevWallet(address newWallet) external onlyOwner { emit DevsWalletUpdated(newWallet, DevsWallet); DevsWallet = newWallet; } function setExcludedFromMaxTX(address updAds, bool isEx) public onlyOwner { _isExcludedmaxTx[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function changeBlacklistAddr(address addr, bool enable) external onlyOwner { _isBlackList[addr] = enable; } function updateFees( uint256 _buyMarketingFee, uint256 _buyDevFee, uint256 _sellMarketingFee, uint256 _sellDevFee) external onlyOwner { buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; require(buyTotalFees <= 75, "Must keep fees at 75% or less"); require(sellTotalFees <= 75, "Must keep fees at 75% 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"); require(!_isBlackList[from], "[from] black list"); require(!_isBlackList[to], "[to] black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (hasLimitsInEffect) { 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 (hasTransferDelayEnabled) { 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] && !_isExcludedmaxTx[to]) { require(amount <= maxTx, "Buy transfer amount exceeds the maxTx."); require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedmaxTx[from]) { require(amount <= maxTx, "Sell transfer amount exceeds the maxTx."); } else if (!_isExcludedmaxTx[to]) { require(amount + balanceOf(to) <= maxWallets, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarkets += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarkets += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function manualSwap(uint256 amount) external { require(_msgSender() == marketerWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarkets + tokensForDev; bool success; if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarkets = 0; tokensForDev = 0; (success, ) = address(DevsWallet).call{value: ethForDev}(""); (success, ) = address(marketerWallet).call{ value: address(this).balance }(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"DevsWalletUpdated","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":[{"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"olDevsWalletallet","type":"address"}],"name":"marketerWalletUpdated","type":"event"},{"inputs":[],"name":"DevsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaxTx","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":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"changeBlacklistAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketerWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasTransferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallets","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"setExcludedFromMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopLimitsEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarkets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateFees","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
60a06040526001600c5f6101000a81548160ff0219169083151502179055505f600c60016101000a81548160ff0219169083151502179055505f600c60026101000a81548160ff0219169083151502179055505f600e5f6101000a81548160ff021916908315150217905550348015610076575f80fd5b506040518060400160405280600a81526020017f47656e65736973204149000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f47454e414900000000000000000000000000000000000000000000000000000081525081600390816100f29190610ca7565b5080600490816101029190610ca7565b50505061012161011661056260201b60201c565b61056960201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061014a81600161062c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101eb9190610dd4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102749190610dd4565b6040518363ffffffff1660e01b8152600401610291929190610e0e565b6020604051808303815f875af11580156102ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d19190610dd4565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061034260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161062c60201b60201c565b61037460065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161070c60201b60201c565b5f600590505f80600590505f836010819055508260118190555060115460105461039e9190610e62565b600f8190555081601381905550806014819055506014546013546103c29190610e62565b6012819055505f6a52b7d2dcc80cd2e400000090506a01a784379d99db420000006009819055506a01a784379d99db42000000600b8190555061271060038261040b9190610e95565b6104159190610f03565b600a8190555061043961042c6107aa60201b60201c565b60016107d260201b60201c565b61044a3060016107d260201b60201c565b61045d61dead60016107d260201b60201c565b61047b61046e6107aa60201b60201c565b600161062c60201b60201c565b61048c30600161062c60201b60201c565b61049f61dead600161062c60201b60201c565b733b4a0af816904942c664afa25faa6bca93b1d40560075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733b4a0af816904942c664afa25faa6bca93b1d40560085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610557338261090060201b60201c565b50505050505061106e565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61063a61056260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1661065e6107aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90610f8d565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107e061056260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166108046107aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461085a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085190610f8d565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108f49190610fc5565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096590611028565b60405180910390fd5b61097f5f8383610a6360201b60201c565b8060025f8282546109909190610e62565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109e29190610e62565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a469190611055565b60405180910390a3610a5f5f8383610a6860201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ae857607f821691505b602082108103610afb57610afa610aa4565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b5d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b22565b610b678683610b22565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610bab610ba6610ba184610b7f565b610b88565b610b7f565b9050919050565b5f819050919050565b610bc483610b91565b610bd8610bd082610bb2565b848454610b2e565b825550505050565b5f90565b610bec610be0565b610bf7818484610bbb565b505050565b5b81811015610c1a57610c0f5f82610be4565b600181019050610bfd565b5050565b601f821115610c5f57610c3081610b01565b610c3984610b13565b81016020851015610c48578190505b610c5c610c5485610b13565b830182610bfc565b50505b505050565b5f82821c905092915050565b5f610c7f5f1984600802610c64565b1980831691505092915050565b5f610c978383610c70565b9150826002028217905092915050565b610cb082610a6d565b67ffffffffffffffff811115610cc957610cc8610a77565b5b610cd38254610ad1565b610cde828285610c1e565b5f60209050601f831160018114610d0f575f8415610cfd578287015190505b610d078582610c8c565b865550610d6e565b601f198416610d1d86610b01565b5f5b82811015610d4457848901518255600182019150602085019450602081019050610d1f565b86831015610d615784890151610d5d601f891682610c70565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610da382610d7a565b9050919050565b610db381610d99565b8114610dbd575f80fd5b50565b5f81519050610dce81610daa565b92915050565b5f60208284031215610de957610de8610d76565b5b5f610df684828501610dc0565b91505092915050565b610e0881610d99565b82525050565b5f604082019050610e215f830185610dff565b610e2e6020830184610dff565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e6c82610b7f565b9150610e7783610b7f565b9250828201905080821115610e8f57610e8e610e35565b5b92915050565b5f610e9f82610b7f565b9150610eaa83610b7f565b9250828202610eb881610b7f565b91508282048414831517610ecf57610ece610e35565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610f0d82610b7f565b9150610f1883610b7f565b925082610f2857610f27610ed6565b5b828204905092915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f610f77602083610f33565b9150610f8282610f43565b602082019050919050565b5f6020820190508181035f830152610fa481610f6b565b9050919050565b5f8115159050919050565b610fbf81610fab565b82525050565b5f602082019050610fd85f830184610fb6565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f611012601f83610f33565b915061101d82610fde565b602082019050919050565b5f6020820190508181035f83015261103f81611006565b9050919050565b61104f81610b7f565b82525050565b5f6020820190506110685f830184611046565b92915050565b608051614d7b6110a25f395f8181610cca015281816128b70152818161335501528181613434015261345b0152614d7b5ff3fe608060405260043610610302575f3560e01c8063924de9b71161018f578063bbc0c742116100db578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610b67578063ea1644d514610ba3578063f2fde38b14610bcb578063fc588c0414610bf357610309565b8063d85ba06314610ad7578063dd62ed3e14610b01578063e2f4560514610b3d57610309565b8063bbc0c742146109d1578063bd8d8211146109fb578063c024666814610a23578063c6616ba114610a4b578063d257b34f14610a73578063d3935bb714610aaf57610309565b8063a0d82dc511610148578063a9059cbb11610122578063a9059cbb14610909578063b62496f514610945578063b70143c914610981578063bb85c6d1146109a957610309565b8063a0d82dc514610879578063a457c2d7146108a3578063a72f4586146108df57610309565b8063924de9b71461078157806395d89b41146107a95780639a7a23d6146107d35780639b636545146107fb5780639c3b4fdc146108255780639fccce321461084f57610309565b80634fbee1931161024e57806370a08231116102075780637bce5a04116101e15780637bce5a04146106ed5780638a8c523c146107175780638da5cb5b1461072d578063921369131461075757610309565b806370a0823114610671578063715018a6146106ad5780637437681e146106c357610309565b80634fbee1931461056557806361528e27146105a157806361fa6254146105cb57806368bd89b7146105f35780636a486a8e1461061d5780636ddd17131461064757610309565b806328857c7b116102bb578063313ce56711610295578063313ce567146104ab57806339509351146104d55780633a4bbfbf1461051157806349bd5a5e1461053b57610309565b806328857c7b1461042d57806330a136ad146104575780633103b39e1461048157610309565b806306fdde031461030d578063095ea7b3146103375780631694505e1461037357806318160ddd1461039d57806323b872dd146103c757806327c8f8351461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e91906139e8565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613a99565b610cab565b60405161036a9190613af1565b60405180910390f35b34801561037e575f80fd5b50610387610cc8565b6040516103949190613b65565b60405180910390f35b3480156103a8575f80fd5b506103b1610cec565b6040516103be9190613b8d565b60405180910390f35b3480156103d2575f80fd5b506103ed60048036038101906103e89190613ba6565b610cf5565b6040516103fa9190613af1565b60405180910390f35b34801561040e575f80fd5b50610417610de7565b6040516104249190613c05565b60405180910390f35b348015610438575f80fd5b50610441610ded565b60405161044e9190613af1565b60405180910390f35b348015610462575f80fd5b5061046b610dff565b6040516104789190613b8d565b60405180910390f35b34801561048c575f80fd5b50610495610e05565b6040516104a29190613c05565b60405180910390f35b3480156104b6575f80fd5b506104bf610e2a565b6040516104cc9190613c39565b60405180910390f35b3480156104e0575f80fd5b506104fb60048036038101906104f69190613a99565b610e32565b6040516105089190613af1565b60405180910390f35b34801561051c575f80fd5b50610525610ed9565b6040516105329190613af1565b60405180910390f35b348015610546575f80fd5b5061054f610f76565b60405161055c9190613c05565b60405180910390f35b348015610570575f80fd5b5061058b60048036038101906105869190613c52565b610f9b565b6040516105989190613af1565b60405180910390f35b3480156105ac575f80fd5b506105b5610fed565b6040516105c29190613b8d565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190613ca7565b610ff3565b005b3480156105fe575f80fd5b506106076110c7565b6040516106149190613af1565b60405180910390f35b348015610628575f80fd5b506106316110d9565b60405161063e9190613b8d565b60405180910390f35b348015610652575f80fd5b5061065b6110df565b6040516106689190613af1565b60405180910390f35b34801561067c575f80fd5b5061069760048036038101906106929190613c52565b6110f2565b6040516106a49190613b8d565b60405180910390f35b3480156106b8575f80fd5b506106c1611137565b005b3480156106ce575f80fd5b506106d76111be565b6040516106e49190613b8d565b60405180910390f35b3480156106f8575f80fd5b506107016111c4565b60405161070e9190613b8d565b60405180910390f35b348015610722575f80fd5b5061072b6111ca565b005b348015610738575f80fd5b5061074161127e565b60405161074e9190613c05565b60405180910390f35b348015610762575f80fd5b5061076b6112a6565b6040516107789190613b8d565b60405180910390f35b34801561078c575f80fd5b506107a760048036038101906107a29190613ce5565b6112ac565b005b3480156107b4575f80fd5b506107bd611345565b6040516107ca91906139e8565b60405180910390f35b3480156107de575f80fd5b506107f960048036038101906107f49190613ca7565b6113d5565b005b348015610806575f80fd5b5061080f6114ee565b60405161081c9190613af1565b60405180910390f35b348015610830575f80fd5b5061083961158b565b6040516108469190613b8d565b60405180910390f35b34801561085a575f80fd5b50610863611591565b6040516108709190613b8d565b60405180910390f35b348015610884575f80fd5b5061088d611597565b60405161089a9190613b8d565b60405180910390f35b3480156108ae575f80fd5b506108c960048036038101906108c49190613a99565b61159d565b6040516108d69190613af1565b60405180910390f35b3480156108ea575f80fd5b506108f3611683565b6040516109009190613c05565b60405180910390f35b348015610914575f80fd5b5061092f600480360381019061092a9190613a99565b6116a8565b60405161093c9190613af1565b60405180910390f35b348015610950575f80fd5b5061096b60048036038101906109669190613c52565b6116c5565b6040516109789190613af1565b60405180910390f35b34801561098c575f80fd5b506109a760048036038101906109a29190613d10565b6116e2565b005b3480156109b4575f80fd5b506109cf60048036038101906109ca9190613c52565b6117a3565b005b3480156109dc575f80fd5b506109e56118dd565b6040516109f29190613af1565b60405180910390f35b348015610a06575f80fd5b50610a216004803603810190610a1c9190613c52565b6118f0565b005b348015610a2e575f80fd5b50610a496004803603810190610a449190613ca7565b611a2a565b005b348015610a56575f80fd5b50610a716004803603810190610a6c9190613d3b565b611b4c565b005b348015610a7e575f80fd5b50610a996004803603810190610a949190613d10565b611ca2565b604051610aa69190613af1565b60405180910390f35b348015610aba575f80fd5b50610ad56004803603810190610ad09190613ca7565b611df6565b005b348015610ae2575f80fd5b50610aeb611eca565b604051610af89190613b8d565b60405180910390f35b348015610b0c575f80fd5b50610b276004803603810190610b229190613d9f565b611ed0565b604051610b349190613b8d565b60405180910390f35b348015610b48575f80fd5b50610b51611f52565b604051610b5e9190613b8d565b60405180910390f35b348015610b72575f80fd5b50610b8d6004803603810190610b889190613c52565b611f58565b604051610b9a9190613af1565b60405180910390f35b348015610bae575f80fd5b50610bc96004803603810190610bc49190613d10565b611f75565b005b348015610bd6575f80fd5b50610bf16004803603810190610bec9190613c52565b612084565b005b348015610bfe575f80fd5b50610c196004803603810190610c149190613d10565b61217a565b005b606060038054610c2a90613e0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690613e0a565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612289565b8484612290565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610d01848484612453565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d48612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90613eaa565b60405180910390fd5b610ddb85610dd3612289565b858403612290565b60019150509392505050565b61dead81565b600c5f9054906101000a900460ff1681565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610ecf610e3e612289565b848460015f610e4b612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eca9190613ef5565b612290565b6001905092915050565b5f610ee2612289565b73ffffffffffffffffffffffffffffffffffffffff16610f0061127e565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90613f72565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b610ffb612289565b73ffffffffffffffffffffffffffffffffffffffff1661101961127e565b73ffffffffffffffffffffffffffffffffffffffff161461106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690613f72565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a900460ff1681565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61113f612289565b73ffffffffffffffffffffffffffffffffffffffff1661115d61127e565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613f72565b60405180910390fd5b6111bc5f613157565b565b60095481565b60105481565b6111d2612289565b73ffffffffffffffffffffffffffffffffffffffff166111f061127e565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f72565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6112b4612289565b73ffffffffffffffffffffffffffffffffffffffff166112d261127e565b73ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613f72565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461135490613e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461138090613e0a565b80156113cb5780601f106113a2576101008083540402835291602001916113cb565b820191905f5260205f20905b8154815290600101906020018083116113ae57829003601f168201915b5050505050905090565b6113dd612289565b73ffffffffffffffffffffffffffffffffffffffff166113fb61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613f72565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790614000565b60405180910390fd5b6114ea828261321a565b5050565b5f6114f7612289565b73ffffffffffffffffffffffffffffffffffffffff1661151561127e565b73ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613f72565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60115481565b60165481565b60145481565b5f8060015f6115aa612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b9061408e565b60405180910390fd5b61167861166f612289565b85858403612290565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6116bb6116b4612289565b8484612453565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611722612289565b73ffffffffffffffffffffffffffffffffffffffff1614611741575f80fd5b61174a306110f2565b811115801561175857505f81115b611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e906140f6565b60405180910390fd5b6117a0816132b8565b50565b6117ab612289565b73ffffffffffffffffffffffffffffffffffffffff166117c961127e565b73ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181690613f72565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b6118f8612289565b73ffffffffffffffffffffffffffffffffffffffff1661191661127e565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613f72565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a32612289565b73ffffffffffffffffffffffffffffffffffffffff16611a5061127e565b73ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90613f72565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b409190613af1565b60405180910390a25050565b611b54612289565b73ffffffffffffffffffffffffffffffffffffffff16611b7261127e565b73ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613f72565b60405180910390fd5b8360108190555082601181905550601154601054611be69190613ef5565b600f819055508160138190555080601481905550601454601354611c0a9190613ef5565b601281905550604b600f541115611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d9061415e565b60405180910390fd5b604b6012541115611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c939061415e565b60405180910390fd5b50505050565b5f611cab612289565b73ffffffffffffffffffffffffffffffffffffffff16611cc961127e565b73ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690613f72565b60405180910390fd5b620186a06001611d2d610cec565b611d37919061417c565b611d4191906141ea565b821015611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a9061428a565b60405180910390fd5b6103e86005611d90610cec565b611d9a919061417c565b611da491906141ea565b821115611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd90614318565b60405180910390fd5b81600a8190555060019050919050565b611dfe612289565b73ffffffffffffffffffffffffffffffffffffffff16611e1c61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613f72565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b611f7d612289565b73ffffffffffffffffffffffffffffffffffffffff16611f9b61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890613f72565b60405180910390fd5b670de0b6b3a76400006103e86005612007610cec565b612011919061417c565b61201b91906141ea565b61202591906141ea565b811015612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906143a6565b60405180910390fd5b670de0b6b3a76400008161207b919061417c565b600b8190555050565b61208c612289565b73ffffffffffffffffffffffffffffffffffffffff166120aa61127e565b73ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613f72565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590614434565b60405180910390fd5b61217781613157565b50565b612182612289565b73ffffffffffffffffffffffffffffffffffffffff166121a061127e565b73ffffffffffffffffffffffffffffffffffffffff16146121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed90613f72565b60405180910390fd5b670de0b6b3a76400006103e8600161220c610cec565b612216919061417c565b61222091906141ea565b61222a91906141ea565b81101561226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639061449c565b60405180910390fd5b670de0b6b3a764000081612280919061417c565b60098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59061452a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361236c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612363906145b8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124469190613b8d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906146d4565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b09061473c565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906147a4565b60405180910390fd5b5f810361265a5761265583835f6134eb565b613152565b600c5f9054906101000a900460ff1615612d025761267661127e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e457506126b461127e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612756575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561276f5750600660149054906101000a900460ff16155b15612d0157600c60019054906101000a900460ff166128635760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612823575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599061480c565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612a275761287f61127e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295f575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a265743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da906148c0565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6b57600954811115612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061494e565b60405180910390fd5b600b54612b1a836110f2565b82612b259190613ef5565b1115612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5d906149b6565b60405180910390fd5b612d00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c08575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5757600954811115612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614a44565b60405180910390fd5b612cff565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600b54612cb1836110f2565b82612cbc9190613ef5565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906149b6565b60405180910390fd5b5b5b5b5b5b5f612d0c306110f2565b90505f600a548210159050808015612d305750600c60029054906101000a900460ff165b8015612d495750600660149054906101000a900460ff16155b8015612d9c5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e85576001600660146101000a81548160ff021916908315150217905550612e6a613760565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f34575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f3d575f90505b5f811561314257601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f9b57505f601254115b1561303357612fc86064612fba6012548861392f90919063ffffffff16565b61394490919063ffffffff16565b905060125460145482612fdb919061417c565b612fe591906141ea565b60165f828254612ff59190613ef5565b925050819055506012546013548261300d919061417c565b61301791906141ea565b60155f8282546130279190613ef5565b9250508190555061311f565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a57505f600f54115b1561311e576130b760646130a9600f548861392f90919063ffffffff16565b61394490919063ffffffff16565b9050600f54601154826130ca919061417c565b6130d491906141ea565b60165f8282546130e49190613ef5565b92505081905550600f54601054826130fc919061417c565b61310691906141ea565b60155f8282546131169190613ef5565b925050819055505b5b5f811115613133576131328730836134eb565b5b808561313f9190614a62565b94505b61314d8787876134eb565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156132d4576132d3614a95565b5b6040519080825280602002602001820160405280156133025781602001602082028036833780820191505090505b50905030815f8151811061331957613318614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133e09190614b03565b816001815181106133f4576133f3614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613459307f000000000000000000000000000000000000000000000000000000000000000084612290565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134ba959493929190614c1e565b5f604051808303815f87803b1580156134d1575f80fd5b505af11580156134e3573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906146d4565b60405180910390fd5b6135d2838383613959565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c90614ce6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136e39190613ef5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137479190613b8d565b60405180910390a361375a84848461395e565b50505050565b5f61376a306110f2565b90505f60165460155461377d9190613ef5565b90505f80830361378f5750505061392d565b6014600a5461379e919061417c565b8311156137b7576014600a546137b4919061417c565b92505b5f4790506137c4846132b8565b5f6137d8824761396390919063ffffffff16565b90505f613802856137f46016548561392f90919063ffffffff16565b61394490919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161385790614d31565b5f6040518083038185875af1925050503d805f8114613891576040519150601f19603f3d011682016040523d82523d5f602084013e613896565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138e190614d31565b5f6040518083038185875af1925050503d805f811461391b576040519150601f19603f3d011682016040523d82523d5f602084013e613920565b606091505b5050809450505050505050505b565b5f818361393c919061417c565b905092915050565b5f818361395191906141ea565b905092915050565b505050565b505050565b5f81836139709190614a62565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139ba82613978565b6139c48185613982565b93506139d4818560208601613992565b6139dd816139a0565b840191505092915050565b5f6020820190508181035f830152613a0081846139b0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3582613a0c565b9050919050565b613a4581613a2b565b8114613a4f575f80fd5b50565b5f81359050613a6081613a3c565b92915050565b5f819050919050565b613a7881613a66565b8114613a82575f80fd5b50565b5f81359050613a9381613a6f565b92915050565b5f8060408385031215613aaf57613aae613a08565b5b5f613abc85828601613a52565b9250506020613acd85828601613a85565b9150509250929050565b5f8115159050919050565b613aeb81613ad7565b82525050565b5f602082019050613b045f830184613ae2565b92915050565b5f819050919050565b5f613b2d613b28613b2384613a0c565b613b0a565b613a0c565b9050919050565b5f613b3e82613b13565b9050919050565b5f613b4f82613b34565b9050919050565b613b5f81613b45565b82525050565b5f602082019050613b785f830184613b56565b92915050565b613b8781613a66565b82525050565b5f602082019050613ba05f830184613b7e565b92915050565b5f805f60608486031215613bbd57613bbc613a08565b5b5f613bca86828701613a52565b9350506020613bdb86828701613a52565b9250506040613bec86828701613a85565b9150509250925092565b613bff81613a2b565b82525050565b5f602082019050613c185f830184613bf6565b92915050565b5f60ff82169050919050565b613c3381613c1e565b82525050565b5f602082019050613c4c5f830184613c2a565b92915050565b5f60208284031215613c6757613c66613a08565b5b5f613c7484828501613a52565b91505092915050565b613c8681613ad7565b8114613c90575f80fd5b50565b5f81359050613ca181613c7d565b92915050565b5f8060408385031215613cbd57613cbc613a08565b5b5f613cca85828601613a52565b9250506020613cdb85828601613c93565b9150509250929050565b5f60208284031215613cfa57613cf9613a08565b5b5f613d0784828501613c93565b91505092915050565b5f60208284031215613d2557613d24613a08565b5b5f613d3284828501613a85565b91505092915050565b5f805f8060808587031215613d5357613d52613a08565b5b5f613d6087828801613a85565b9450506020613d7187828801613a85565b9350506040613d8287828801613a85565b9250506060613d9387828801613a85565b91505092959194509250565b5f8060408385031215613db557613db4613a08565b5b5f613dc285828601613a52565b9250506020613dd385828601613a52565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e2157607f821691505b602082108103613e3457613e33613ddd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613e94602883613982565b9150613e9f82613e3a565b604082019050919050565b5f6020820190508181035f830152613ec181613e88565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613eff82613a66565b9150613f0a83613a66565b9250828201905080821115613f2257613f21613ec8565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f5c602083613982565b9150613f6782613f28565b602082019050919050565b5f6020820190508181035f830152613f8981613f50565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613fea603983613982565b9150613ff582613f90565b604082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614078602583613982565b91506140838261401e565b604082019050919050565b5f6020820190508181035f8301526140a58161406c565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6140e0600c83613982565b91506140eb826140ac565b602082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f614148601d83613982565b915061415382614114565b602082019050919050565b5f6020820190508181035f8301526141758161413c565b9050919050565b5f61418682613a66565b915061419183613a66565b925082820261419f81613a66565b915082820484148315176141b6576141b5613ec8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141f482613a66565b91506141ff83613a66565b92508261420f5761420e6141bd565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614274603583613982565b915061427f8261421a565b604082019050919050565b5f6020820190508181035f8301526142a181614268565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614302603483613982565b915061430d826142a8565b604082019050919050565b5f6020820190508181035f83015261432f816142f6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614390602583613982565b915061439b82614336565b604082019050919050565b5f6020820190508181035f8301526143bd81614384565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61441e602683613982565b9150614429826143c4565b604082019050919050565b5f6020820190508181035f83015261444b81614412565b9050919050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614486602083613982565b915061449182614452565b602082019050919050565b5f6020820190508181035f8301526144b38161447a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614514602483613982565b915061451f826144ba565b604082019050919050565b5f6020820190508181035f83015261454181614508565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145a2602283613982565b91506145ad82614548565b604082019050919050565b5f6020820190508181035f8301526145cf81614596565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614630602583613982565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146be602383613982565b91506146c982614664565b604082019050919050565b5f6020820190508181035f8301526146eb816146b2565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614726601183613982565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61478e600f83613982565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6147f6601683613982565b9150614801826147c2565b602082019050919050565b5f6020820190508181035f830152614823816147ea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6148aa604983613982565b91506148b58261482a565b606082019050919050565b5f6020820190508181035f8301526148d78161489e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614938602683613982565b9150614943826148de565b604082019050919050565b5f6020820190508181035f8301526149658161492c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149a0601383613982565b91506149ab8261496c565b602082019050919050565b5f6020820190508181035f8301526149cd81614994565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a2e602783613982565b9150614a39826149d4565b604082019050919050565b5f6020820190508181035f830152614a5b81614a22565b9050919050565b5f614a6c82613a66565b9150614a7783613a66565b9250828203905081811115614a8f57614a8e613ec8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614afd81613a3c565b92915050565b5f60208284031215614b1857614b17613a08565b5b5f614b2584828501614aef565b91505092915050565b5f819050919050565b5f614b51614b4c614b4784614b2e565b613b0a565b613a66565b9050919050565b614b6181614b37565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b9981613a2b565b82525050565b5f614baa8383614b90565b60208301905092915050565b5f602082019050919050565b5f614bcc82614b67565b614bd68185614b71565b9350614be183614b81565b805f5b83811015614c11578151614bf88882614b9f565b9750614c0383614bb6565b925050600181019050614be4565b5085935050505092915050565b5f60a082019050614c315f830188613b7e565b614c3e6020830187614b58565b8181036040830152614c508186614bc2565b9050614c5f6060830185613bf6565b614c6c6080830184613b7e565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614cd0602683613982565b9150614cdb82614c76565b604082019050919050565b5f6020820190508181035f830152614cfd81614cc4565b9050919050565b5f81905092915050565b50565b5f614d1c5f83614d04565b9150614d2782614d0e565b5f82019050919050565b5f614d3b82614d11565b915081905091905056fea2646970667358221220fdbde4425c6046e2baab8f179dbcb89789be99c9f429821bb41d4da3b70c03ae64736f6c634300081a0033
Deployed Bytecode
0x608060405260043610610302575f3560e01c8063924de9b71161018f578063bbc0c742116100db578063d85ba06311610094578063e6819ba71161006e578063e6819ba714610b67578063ea1644d514610ba3578063f2fde38b14610bcb578063fc588c0414610bf357610309565b8063d85ba06314610ad7578063dd62ed3e14610b01578063e2f4560514610b3d57610309565b8063bbc0c742146109d1578063bd8d8211146109fb578063c024666814610a23578063c6616ba114610a4b578063d257b34f14610a73578063d3935bb714610aaf57610309565b8063a0d82dc511610148578063a9059cbb11610122578063a9059cbb14610909578063b62496f514610945578063b70143c914610981578063bb85c6d1146109a957610309565b8063a0d82dc514610879578063a457c2d7146108a3578063a72f4586146108df57610309565b8063924de9b71461078157806395d89b41146107a95780639a7a23d6146107d35780639b636545146107fb5780639c3b4fdc146108255780639fccce321461084f57610309565b80634fbee1931161024e57806370a08231116102075780637bce5a04116101e15780637bce5a04146106ed5780638a8c523c146107175780638da5cb5b1461072d578063921369131461075757610309565b806370a0823114610671578063715018a6146106ad5780637437681e146106c357610309565b80634fbee1931461056557806361528e27146105a157806361fa6254146105cb57806368bd89b7146105f35780636a486a8e1461061d5780636ddd17131461064757610309565b806328857c7b116102bb578063313ce56711610295578063313ce567146104ab57806339509351146104d55780633a4bbfbf1461051157806349bd5a5e1461053b57610309565b806328857c7b1461042d57806330a136ad146104575780633103b39e1461048157610309565b806306fdde031461030d578063095ea7b3146103375780631694505e1461037357806318160ddd1461039d57806323b872dd146103c757806327c8f8351461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e91906139e8565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613a99565b610cab565b60405161036a9190613af1565b60405180910390f35b34801561037e575f80fd5b50610387610cc8565b6040516103949190613b65565b60405180910390f35b3480156103a8575f80fd5b506103b1610cec565b6040516103be9190613b8d565b60405180910390f35b3480156103d2575f80fd5b506103ed60048036038101906103e89190613ba6565b610cf5565b6040516103fa9190613af1565b60405180910390f35b34801561040e575f80fd5b50610417610de7565b6040516104249190613c05565b60405180910390f35b348015610438575f80fd5b50610441610ded565b60405161044e9190613af1565b60405180910390f35b348015610462575f80fd5b5061046b610dff565b6040516104789190613b8d565b60405180910390f35b34801561048c575f80fd5b50610495610e05565b6040516104a29190613c05565b60405180910390f35b3480156104b6575f80fd5b506104bf610e2a565b6040516104cc9190613c39565b60405180910390f35b3480156104e0575f80fd5b506104fb60048036038101906104f69190613a99565b610e32565b6040516105089190613af1565b60405180910390f35b34801561051c575f80fd5b50610525610ed9565b6040516105329190613af1565b60405180910390f35b348015610546575f80fd5b5061054f610f76565b60405161055c9190613c05565b60405180910390f35b348015610570575f80fd5b5061058b60048036038101906105869190613c52565b610f9b565b6040516105989190613af1565b60405180910390f35b3480156105ac575f80fd5b506105b5610fed565b6040516105c29190613b8d565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190613ca7565b610ff3565b005b3480156105fe575f80fd5b506106076110c7565b6040516106149190613af1565b60405180910390f35b348015610628575f80fd5b506106316110d9565b60405161063e9190613b8d565b60405180910390f35b348015610652575f80fd5b5061065b6110df565b6040516106689190613af1565b60405180910390f35b34801561067c575f80fd5b5061069760048036038101906106929190613c52565b6110f2565b6040516106a49190613b8d565b60405180910390f35b3480156106b8575f80fd5b506106c1611137565b005b3480156106ce575f80fd5b506106d76111be565b6040516106e49190613b8d565b60405180910390f35b3480156106f8575f80fd5b506107016111c4565b60405161070e9190613b8d565b60405180910390f35b348015610722575f80fd5b5061072b6111ca565b005b348015610738575f80fd5b5061074161127e565b60405161074e9190613c05565b60405180910390f35b348015610762575f80fd5b5061076b6112a6565b6040516107789190613b8d565b60405180910390f35b34801561078c575f80fd5b506107a760048036038101906107a29190613ce5565b6112ac565b005b3480156107b4575f80fd5b506107bd611345565b6040516107ca91906139e8565b60405180910390f35b3480156107de575f80fd5b506107f960048036038101906107f49190613ca7565b6113d5565b005b348015610806575f80fd5b5061080f6114ee565b60405161081c9190613af1565b60405180910390f35b348015610830575f80fd5b5061083961158b565b6040516108469190613b8d565b60405180910390f35b34801561085a575f80fd5b50610863611591565b6040516108709190613b8d565b60405180910390f35b348015610884575f80fd5b5061088d611597565b60405161089a9190613b8d565b60405180910390f35b3480156108ae575f80fd5b506108c960048036038101906108c49190613a99565b61159d565b6040516108d69190613af1565b60405180910390f35b3480156108ea575f80fd5b506108f3611683565b6040516109009190613c05565b60405180910390f35b348015610914575f80fd5b5061092f600480360381019061092a9190613a99565b6116a8565b60405161093c9190613af1565b60405180910390f35b348015610950575f80fd5b5061096b60048036038101906109669190613c52565b6116c5565b6040516109789190613af1565b60405180910390f35b34801561098c575f80fd5b506109a760048036038101906109a29190613d10565b6116e2565b005b3480156109b4575f80fd5b506109cf60048036038101906109ca9190613c52565b6117a3565b005b3480156109dc575f80fd5b506109e56118dd565b6040516109f29190613af1565b60405180910390f35b348015610a06575f80fd5b50610a216004803603810190610a1c9190613c52565b6118f0565b005b348015610a2e575f80fd5b50610a496004803603810190610a449190613ca7565b611a2a565b005b348015610a56575f80fd5b50610a716004803603810190610a6c9190613d3b565b611b4c565b005b348015610a7e575f80fd5b50610a996004803603810190610a949190613d10565b611ca2565b604051610aa69190613af1565b60405180910390f35b348015610aba575f80fd5b50610ad56004803603810190610ad09190613ca7565b611df6565b005b348015610ae2575f80fd5b50610aeb611eca565b604051610af89190613b8d565b60405180910390f35b348015610b0c575f80fd5b50610b276004803603810190610b229190613d9f565b611ed0565b604051610b349190613b8d565b60405180910390f35b348015610b48575f80fd5b50610b51611f52565b604051610b5e9190613b8d565b60405180910390f35b348015610b72575f80fd5b50610b8d6004803603810190610b889190613c52565b611f58565b604051610b9a9190613af1565b60405180910390f35b348015610bae575f80fd5b50610bc96004803603810190610bc49190613d10565b611f75565b005b348015610bd6575f80fd5b50610bf16004803603810190610bec9190613c52565b612084565b005b348015610bfe575f80fd5b50610c196004803603810190610c149190613d10565b61217a565b005b606060038054610c2a90613e0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690613e0a565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612289565b8484612290565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610d01848484612453565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d48612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90613eaa565b60405180910390fd5b610ddb85610dd3612289565b858403612290565b60019150509392505050565b61dead81565b600c5f9054906101000a900460ff1681565b600b5481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012905090565b5f610ecf610e3e612289565b848460015f610e4b612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610eca9190613ef5565b612290565b6001905092915050565b5f610ee2612289565b73ffffffffffffffffffffffffffffffffffffffff16610f0061127e565b73ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90613f72565b60405180910390fd5b5f600c5f6101000a81548160ff0219169083151502179055506001905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60155481565b610ffb612289565b73ffffffffffffffffffffffffffffffffffffffff1661101961127e565b73ffffffffffffffffffffffffffffffffffffffff161461106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106690613f72565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600e5f9054906101000a900460ff1681565b60125481565b600c60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61113f612289565b73ffffffffffffffffffffffffffffffffffffffff1661115d61127e565b73ffffffffffffffffffffffffffffffffffffffff16146111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90613f72565b60405180910390fd5b6111bc5f613157565b565b60095481565b60105481565b6111d2612289565b73ffffffffffffffffffffffffffffffffffffffff166111f061127e565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90613f72565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6112b4612289565b73ffffffffffffffffffffffffffffffffffffffff166112d261127e565b73ffffffffffffffffffffffffffffffffffffffff1614611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613f72565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b60606004805461135490613e0a565b80601f016020809104026020016040519081016040528092919081815260200182805461138090613e0a565b80156113cb5780601f106113a2576101008083540402835291602001916113cb565b820191905f5260205f20905b8154815290600101906020018083116113ae57829003601f168201915b5050505050905090565b6113dd612289565b73ffffffffffffffffffffffffffffffffffffffff166113fb61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890613f72565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d790614000565b60405180910390fd5b6114ea828261321a565b5050565b5f6114f7612289565b73ffffffffffffffffffffffffffffffffffffffff1661151561127e565b73ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156290613f72565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60115481565b60165481565b60145481565b5f8060015f6115aa612289565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b9061408e565b60405180910390fd5b61167861166f612289565b85858403612290565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6116bb6116b4612289565b8484612453565b6001905092915050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611722612289565b73ffffffffffffffffffffffffffffffffffffffff1614611741575f80fd5b61174a306110f2565b811115801561175857505f81115b611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e906140f6565b60405180910390fd5b6117a0816132b8565b50565b6117ab612289565b73ffffffffffffffffffffffffffffffffffffffff166117c961127e565b73ffffffffffffffffffffffffffffffffffffffff161461181f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181690613f72565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f455cf943964d06e77e44126ecca5a66b2c9721f4576a31f8693127282c55700f60405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60019054906101000a900460ff1681565b6118f8612289565b73ffffffffffffffffffffffffffffffffffffffff1661191661127e565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613f72565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f9e3da7e72199adc414f24e73d3985f288cce5edbc5c370e29af583afdd78c2c260405160405180910390a38060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a32612289565b73ffffffffffffffffffffffffffffffffffffffff16611a5061127e565b73ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90613f72565b60405180910390fd5b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611b409190613af1565b60405180910390a25050565b611b54612289565b73ffffffffffffffffffffffffffffffffffffffff16611b7261127e565b73ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613f72565b60405180910390fd5b8360108190555082601181905550601154601054611be69190613ef5565b600f819055508160138190555080601481905550601454601354611c0a9190613ef5565b601281905550604b600f541115611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d9061415e565b60405180910390fd5b604b6012541115611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c939061415e565b60405180910390fd5b50505050565b5f611cab612289565b73ffffffffffffffffffffffffffffffffffffffff16611cc961127e565b73ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690613f72565b60405180910390fd5b620186a06001611d2d610cec565b611d37919061417c565b611d4191906141ea565b821015611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a9061428a565b60405180910390fd5b6103e86005611d90610cec565b611d9a919061417c565b611da491906141ea565b821115611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd90614318565b60405180910390fd5b81600a8190555060019050919050565b611dfe612289565b73ffffffffffffffffffffffffffffffffffffffff16611e1c61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6990613f72565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b6019602052805f5260405f205f915054906101000a900460ff1681565b611f7d612289565b73ffffffffffffffffffffffffffffffffffffffff16611f9b61127e565b73ffffffffffffffffffffffffffffffffffffffff1614611ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe890613f72565b60405180910390fd5b670de0b6b3a76400006103e86005612007610cec565b612011919061417c565b61201b91906141ea565b61202591906141ea565b811015612067576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205e906143a6565b60405180910390fd5b670de0b6b3a76400008161207b919061417c565b600b8190555050565b61208c612289565b73ffffffffffffffffffffffffffffffffffffffff166120aa61127e565b73ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790613f72565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216590614434565b60405180910390fd5b61217781613157565b50565b612182612289565b73ffffffffffffffffffffffffffffffffffffffff166121a061127e565b73ffffffffffffffffffffffffffffffffffffffff16146121f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ed90613f72565b60405180910390fd5b670de0b6b3a76400006103e8600161220c610cec565b612216919061417c565b61222091906141ea565b61222a91906141ea565b81101561226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639061449c565b60405180910390fd5b670de0b6b3a764000081612280919061417c565b60098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f59061452a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361236c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612363906145b8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124469190613b8d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b890614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361252f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612526906146d4565b60405180910390fd5b60175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b09061473c565b60405180910390fd5b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263a906147a4565b60405180910390fd5b5f810361265a5761265583835f6134eb565b613152565b600c5f9054906101000a900460ff1615612d025761267661127e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e457506126b461127e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561271c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612756575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561276f5750600660149054906101000a900460ff16155b15612d0157600c60019054906101000a900460ff166128635760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612823575060185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599061480c565b60405180910390fd5b5b600e5f9054906101000a900460ff1615612a275761287f61127e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295f575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a265743600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da906148c0565b60405180910390fd5b43600d5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ac4575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612b6b57600954811115612b0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b059061494e565b60405180910390fd5b600b54612b1a836110f2565b82612b259190613ef5565b1115612b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5d906149b6565b60405180910390fd5b612d00565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c08575060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c5757600954811115612c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4990614a44565b60405180910390fd5b612cff565b60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600b54612cb1836110f2565b82612cbc9190613ef5565b1115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf4906149b6565b60405180910390fd5b5b5b5b5b5b5f612d0c306110f2565b90505f600a548210159050808015612d305750600c60029054906101000a900460ff165b8015612d495750600660149054906101000a900460ff16155b8015612d9c5750601a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612def575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612e42575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e85576001600660146101000a81548160ff021916908315150217905550612e6a613760565b5f600660146101000a81548160ff0219169083151502179055505b5f600660149054906101000a900460ff1615905060185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612f34575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612f3d575f90505b5f811561314257601a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f9b57505f601254115b1561303357612fc86064612fba6012548861392f90919063ffffffff16565b61394490919063ffffffff16565b905060125460145482612fdb919061417c565b612fe591906141ea565b60165f828254612ff59190613ef5565b925050819055506012546013548261300d919061417c565b61301791906141ea565b60155f8282546130279190613ef5565b9250508190555061311f565b601a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561308a57505f600f54115b1561311e576130b760646130a9600f548861392f90919063ffffffff16565b61394490919063ffffffff16565b9050600f54601154826130ca919061417c565b6130d491906141ea565b60165f8282546130e49190613ef5565b92505081905550600f54601054826130fc919061417c565b61310691906141ea565b60155f8282546131169190613ef5565b925050819055505b5b5f811115613133576131328730836134eb565b5b808561313f9190614a62565b94505b61314d8787876134eb565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156132d4576132d3614a95565b5b6040519080825280602002602001820160405280156133025781602001602082028036833780820191505090505b50905030815f8151811061331957613318614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133e09190614b03565b816001815181106133f4576133f3614ac2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613459307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612290565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016134ba959493929190614c1e565b5f604051808303815f87803b1580156134d1575f80fd5b505af11580156134e3573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355090614646565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be906146d4565b60405180910390fd5b6135d2838383613959565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161364c90614ce6565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136e39190613ef5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137479190613b8d565b60405180910390a361375a84848461395e565b50505050565b5f61376a306110f2565b90505f60165460155461377d9190613ef5565b90505f80830361378f5750505061392d565b6014600a5461379e919061417c565b8311156137b7576014600a546137b4919061417c565b92505b5f4790506137c4846132b8565b5f6137d8824761396390919063ffffffff16565b90505f613802856137f46016548561392f90919063ffffffff16565b61394490919063ffffffff16565b90505f6015819055505f60168190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161385790614d31565b5f6040518083038185875af1925050503d805f8114613891576040519150601f19603f3d011682016040523d82523d5f602084013e613896565b606091505b50508094505060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516138e190614d31565b5f6040518083038185875af1925050503d805f811461391b576040519150601f19603f3d011682016040523d82523d5f602084013e613920565b606091505b5050809450505050505050505b565b5f818361393c919061417c565b905092915050565b5f818361395191906141ea565b905092915050565b505050565b505050565b5f81836139709190614a62565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6139ba82613978565b6139c48185613982565b93506139d4818560208601613992565b6139dd816139a0565b840191505092915050565b5f6020820190508181035f830152613a0081846139b0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a3582613a0c565b9050919050565b613a4581613a2b565b8114613a4f575f80fd5b50565b5f81359050613a6081613a3c565b92915050565b5f819050919050565b613a7881613a66565b8114613a82575f80fd5b50565b5f81359050613a9381613a6f565b92915050565b5f8060408385031215613aaf57613aae613a08565b5b5f613abc85828601613a52565b9250506020613acd85828601613a85565b9150509250929050565b5f8115159050919050565b613aeb81613ad7565b82525050565b5f602082019050613b045f830184613ae2565b92915050565b5f819050919050565b5f613b2d613b28613b2384613a0c565b613b0a565b613a0c565b9050919050565b5f613b3e82613b13565b9050919050565b5f613b4f82613b34565b9050919050565b613b5f81613b45565b82525050565b5f602082019050613b785f830184613b56565b92915050565b613b8781613a66565b82525050565b5f602082019050613ba05f830184613b7e565b92915050565b5f805f60608486031215613bbd57613bbc613a08565b5b5f613bca86828701613a52565b9350506020613bdb86828701613a52565b9250506040613bec86828701613a85565b9150509250925092565b613bff81613a2b565b82525050565b5f602082019050613c185f830184613bf6565b92915050565b5f60ff82169050919050565b613c3381613c1e565b82525050565b5f602082019050613c4c5f830184613c2a565b92915050565b5f60208284031215613c6757613c66613a08565b5b5f613c7484828501613a52565b91505092915050565b613c8681613ad7565b8114613c90575f80fd5b50565b5f81359050613ca181613c7d565b92915050565b5f8060408385031215613cbd57613cbc613a08565b5b5f613cca85828601613a52565b9250506020613cdb85828601613c93565b9150509250929050565b5f60208284031215613cfa57613cf9613a08565b5b5f613d0784828501613c93565b91505092915050565b5f60208284031215613d2557613d24613a08565b5b5f613d3284828501613a85565b91505092915050565b5f805f8060808587031215613d5357613d52613a08565b5b5f613d6087828801613a85565b9450506020613d7187828801613a85565b9350506040613d8287828801613a85565b9250506060613d9387828801613a85565b91505092959194509250565b5f8060408385031215613db557613db4613a08565b5b5f613dc285828601613a52565b9250506020613dd385828601613a52565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613e2157607f821691505b602082108103613e3457613e33613ddd565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613e94602883613982565b9150613e9f82613e3a565b604082019050919050565b5f6020820190508181035f830152613ec181613e88565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613eff82613a66565b9150613f0a83613a66565b9250828201905080821115613f2257613f21613ec8565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f5c602083613982565b9150613f6782613f28565b602082019050919050565b5f6020820190508181035f830152613f8981613f50565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613fea603983613982565b9150613ff582613f90565b604082019050919050565b5f6020820190508181035f83015261401781613fde565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f614078602583613982565b91506140838261401e565b604082019050919050565b5f6020820190508181035f8301526140a58161406c565b9050919050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f6140e0600c83613982565b91506140eb826140ac565b602082019050919050565b5f6020820190508181035f83015261410d816140d4565b9050919050565b7f4d757374206b656570206665657320617420373525206f72206c6573730000005f82015250565b5f614148601d83613982565b915061415382614114565b602082019050919050565b5f6020820190508181035f8301526141758161413c565b9050919050565b5f61418682613a66565b915061419183613a66565b925082820261419f81613a66565b915082820484148315176141b6576141b5613ec8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6141f482613a66565b91506141ff83613a66565b92508261420f5761420e6141bd565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614274603583613982565b915061427f8261421a565b604082019050919050565b5f6020820190508181035f8301526142a181614268565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614302603483613982565b915061430d826142a8565b604082019050919050565b5f6020820190508181035f83015261432f816142f6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c657473206c6f776572207468616e5f8201527f20302e3525000000000000000000000000000000000000000000000000000000602082015250565b5f614390602583613982565b915061439b82614336565b604082019050919050565b5f6020820190508181035f8301526143bd81614384565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61441e602683613982565b9150614429826143c4565b604082019050919050565b5f6020820190508181035f83015261444b81614412565b9050919050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e31255f82015250565b5f614486602083613982565b915061449182614452565b602082019050919050565b5f6020820190508181035f8301526144b38161447a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614514602483613982565b915061451f826144ba565b604082019050919050565b5f6020820190508181035f83015261454181614508565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6145a2602283613982565b91506145ad82614548565b604082019050919050565b5f6020820190508181035f8301526145cf81614596565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614630602583613982565b915061463b826145d6565b604082019050919050565b5f6020820190508181035f83015261465d81614624565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6146be602383613982565b91506146c982614664565b604082019050919050565b5f6020820190508181035f8301526146eb816146b2565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f614726601183613982565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f61478e600f83613982565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6147f6601683613982565b9150614801826147c2565b602082019050919050565b5f6020820190508181035f830152614823816147ea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6148aa604983613982565b91506148b58261482a565b606082019050919050565b5f6020820190508181035f8301526148d78161489e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f614938602683613982565b9150614943826148de565b604082019050919050565b5f6020820190508181035f8301526149658161492c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6149a0601383613982565b91506149ab8261496c565b602082019050919050565b5f6020820190508181035f8301526149cd81614994565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f614a2e602783613982565b9150614a39826149d4565b604082019050919050565b5f6020820190508181035f830152614a5b81614a22565b9050919050565b5f614a6c82613a66565b9150614a7783613a66565b9250828203905081811115614a8f57614a8e613ec8565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614afd81613a3c565b92915050565b5f60208284031215614b1857614b17613a08565b5b5f614b2584828501614aef565b91505092915050565b5f819050919050565b5f614b51614b4c614b4784614b2e565b613b0a565b613a66565b9050919050565b614b6181614b37565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614b9981613a2b565b82525050565b5f614baa8383614b90565b60208301905092915050565b5f602082019050919050565b5f614bcc82614b67565b614bd68185614b71565b9350614be183614b81565b805f5b83811015614c11578151614bf88882614b9f565b9750614c0383614bb6565b925050600181019050614be4565b5085935050505092915050565b5f60a082019050614c315f830188613b7e565b614c3e6020830187614b58565b8181036040830152614c508186614bc2565b9050614c5f6060830185613bf6565b614c6c6080830184613b7e565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614cd0602683613982565b9150614cdb82614c76565b604082019050919050565b5f6020820190508181035f830152614cfd81614cc4565b9050919050565b5f81905092915050565b50565b5f614d1c5f83614d04565b9150614d2782614d0e565b5f82019050919050565b5f614d3b82614d11565b915081905091905056fea2646970667358221220fdbde4425c6046e2baab8f179dbcb89789be99c9f429821bb41d4da3b70c03ae64736f6c634300081a0033
Deployed Bytecode Sourcemap
15112:12714:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2809:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3723:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15187:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3130:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3900:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15280:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15543:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15509:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15408;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3029:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4400:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18678:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15245:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22046:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16055:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20345:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15792:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15948:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15626:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3246:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;931:103;;;;;;;;;;;;;:::i;:::-;;15442:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15878:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18558:112;;;;;;;;;;;;;:::i;:::-;;708:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15983:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20500:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2917:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21538:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18814:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15915:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16093:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16021:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4623:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15372:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3381:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16297:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26179:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19967:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15586:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20177:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21348:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20750:590;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18957:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20612:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15844:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3564:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15469:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16240:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19706:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1042:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19462:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2809:100;2863:13;2896:5;2889:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2809:100;:::o;3723:169::-;3806:4;3823:39;3832:12;:10;:12::i;:::-;3846:7;3855:6;3823:8;:39::i;:::-;3880:4;3873:11;;3723:169;;;;:::o;15187:51::-;;;:::o;3130:108::-;3191:7;3218:12;;3211:19;;3130:108;:::o;3900:492::-;4040:4;4057:36;4067:6;4075:9;4086:6;4057:9;:36::i;:::-;4106:24;4133:11;:19;4145:6;4133:19;;;;;;;;;;;;;;;:33;4153:12;:10;:12::i;:::-;4133:33;;;;;;;;;;;;;;;;4106:60;;4205:6;4185:16;:26;;4177:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4292:57;4301:6;4309:12;:10;:12::i;:::-;4342:6;4323:16;:25;4292:8;:57::i;:::-;4380:4;4373:11;;;3900:492;;;;;:::o;15280:53::-;15326:6;15280:53;:::o;15543:36::-;;;;;;;;;;;;;:::o;15509:25::-;;;;:::o;15408:::-;;;;;;;;;;;;;:::o;3029:93::-;3087:5;3112:2;3105:9;;3029:93;:::o;4400:215::-;4488:4;4505:80;4514:12;:10;:12::i;:::-;4528:7;4574:10;4537:11;:25;4549:12;:10;:12::i;:::-;4537:25;;;;;;;;;;;;;;;:34;4563:7;4537:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4505:8;:80::i;:::-;4603:4;4596:11;;4400:215;;;;:::o;18678:128::-;18734:4;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18771:5:::1;18751:17;;:25;;;;;;;;;;;;;;;;;;18794:4;18787:11;;18678:128:::0;:::o;15245:28::-;;;;;;;;;;;;;:::o;22046:126::-;22112:4;22136:19;:28;22156:7;22136:28;;;;;;;;;;;;;;;;;;;;;;;;;22129:35;;22046:126;;;:::o;16055:31::-;;;;:::o;20345:147::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20480:4:::1;20453:16;:24;20470:6;20453:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;20345:147:::0;;:::o;15792:43::-;;;;;;;;;;;;;:::o;15948:28::-;;;;:::o;15626:31::-;;;;;;;;;;;;;:::o;3246:127::-;3320:7;3347:9;:18;3357:7;3347:18;;;;;;;;;;;;;;;;3340:25;;3246:127;;;:::o;931:103::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;996:30:::1;1023:1;996:18;:30::i;:::-;931:103::o:0;15442:20::-;;;;:::o;15878:30::-;;;;:::o;18558:112::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18629:4:::1;18613:13;;:20;;;;;;;;;;;;;;;;;;18658:4;18644:11;;:18;;;;;;;;;;;;;;;;;;18558:112::o:0;708:87::-;754:7;781:6;;;;;;;;;;;774:13;;708:87;:::o;15983:31::-;;;;:::o;20500:100::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20585:7:::1;20571:11;;:21;;;;;;;;;;;;;;;;;;20500:100:::0;:::o;2917:104::-;2973:13;3006:7;2999:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2917:104;:::o;21538:304::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21682:13:::1;;;;;;;;;;;21674:21;;:4;:21;;::::0;21652:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21793:41;21822:4;21828:5;21793:28;:41::i;:::-;21538:304:::0;;:::o;18814:135::-;18871:4;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18914:5:::1;18888:23;;:31;;;;;;;;;;;;;;;;;;18937:4;18930:11;;18814:135:::0;:::o;15915:24::-;;;;:::o;16093:27::-;;;;:::o;16021:25::-;;;;:::o;4623:413::-;4716:4;4733:24;4760:11;:25;4772:12;:10;:12::i;:::-;4760:25;;;;;;;;;;;;;;;:34;4786:7;4760:34;;;;;;;;;;;;;;;;4733:61;;4833:15;4813:16;:35;;4805:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4926:67;4935:12;:10;:12::i;:::-;4949:7;4977:15;4958:16;:34;4926:8;:67::i;:::-;5024:4;5017:11;;;4623:413;;;;:::o;15372:29::-;;;;;;;;;;;;;:::o;3381:175::-;3467:4;3484:42;3494:12;:10;:12::i;:::-;3508:9;3519:6;3484:9;:42::i;:::-;3544:4;3537:11;;3381:175;;;;:::o;16297:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;26179:222::-;26259:14;;;;;;;;;;;26243:30;;:12;:10;:12::i;:::-;:30;;;26235:39;;;;;;26303:24;26321:4;26303:9;:24::i;:::-;26293:6;:34;;:48;;;;;26340:1;26331:6;:10;26293:48;26285:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26369:24;26386:6;26369:16;:24::i;:::-;26179:222;:::o;19967:202::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20101:14:::1;;;;;;;;;;;20060:56;;20082:17;20060:56;;;;;;;;;;;;20144:17;20127:14;;:34;;;;;;;;;;;;;;;;;;19967:202:::0;:::o;15586:33::-;;;;;;;;;;;;;:::o;20177:160::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20285:10:::1;;;;;;;;;;;20256:40;;20274:9;20256:40;;;;;;;;;;;;20320:9;20307:10;;:22;;;;;;;;;;;;;;;;;;20177:160:::0;:::o;21348:182::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21464:8:::1;21433:19;:28;21453:7;21433:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21504:7;21488:34;;;21513:8;21488:34;;;;;;:::i;:::-;;;;;;;;21348:182:::0;;:::o;20750:590::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20949:16:::1;20931:15;:34;;;;20988:10;20976:9;:22;;;;21042:9;;21024:15;;:27;;;;:::i;:::-;21009:12;:42;;;;21081:17;21062:16;:36;;;;21122:11;21109:10;:24;;;;21179:10;;21160:16;;:29;;;;:::i;:::-;21144:13;:45;;;;21224:2;21208:12;;:18;;21200:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21296:2;21279:13;;:19;;21271:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;20750:590:::0;;;;:::o;18957:497::-;19065:4;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19144:6:::1;19139:1;19123:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19122:28;;;;:::i;:::-;19109:9;:41;;19087:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;19299:4;19294:1;19278:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19277:26;;;;:::i;:::-;19264:9;:39;;19242:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;19415:9;19394:18;:30;;;;19442:4;19435:11;;18957:497:::0;;;:::o;20612:130::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20728:6:::1;20707:12;:18;20720:4;20707:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;20612:130:::0;;:::o;15844:27::-;;;;:::o;3564:151::-;3653:7;3680:11;:18;3692:5;3680:18;;;;;;;;;;;;;;;:27;3699:7;3680:27;;;;;;;;;;;;;;;;3673:34;;3564:151;;;;:::o;15469:33::-;;;;:::o;16240:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;19706:253::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19841:4:::1;19833;19828:1;19812:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19811:26;;;;:::i;:::-;19810:35;;;;:::i;:::-;19800:6;:45;;19778:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;19944:6;19934;:17;;;;:::i;:::-;19921:10;:30;;;;19706:253:::0;:::o;1042:201::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1151:1:::1;1131:22;;:8;:22;;::::0;1123:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1207:28;1226:8;1207:18;:28::i;:::-;1042:201:::0;:::o;19462:236::-;854:12;:10;:12::i;:::-;843:23;;:7;:5;:7::i;:::-;:23;;;835:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19590:4:::1;19582;19577:1;19561:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19560:26;;;;:::i;:::-;19559:35;;;;:::i;:::-;19549:6;:45;;19527:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;19683:6;19673;:17;;;;:::i;:::-;19665:5;:25;;;;19462:236:::0;:::o;254:98::-;307:7;334:10;327:17;;254:98;:::o;6791:380::-;6944:1;6927:19;;:5;:19;;;6919:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7025:1;7006:21;;:7;:21;;;6998:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7109:6;7079:11;:18;7091:5;7079:18;;;;;;;;;;;;;;;:27;7098:7;7079:27;;;;;;;;;;;;;;;:36;;;;7147:7;7131:32;;7140:5;7131:32;;;7156:6;7131:32;;;;;;:::i;:::-;;;;;;;;6791:380;;;:::o;22230:3826::-;22378:1;22362:18;;:4;:18;;;22354:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22455:1;22441:16;;:2;:16;;;22433:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22517:12;:18;22530:4;22517:18;;;;;;;;;;;;;;;;;;;;;;;;;22516:19;22508:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22577:12;:16;22590:2;22577:16;;;;;;;;;;;;;;;;;;;;;;;;;22576:17;22568:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;22640:1;22630:6;:11;22626:93;;22658:28;22674:4;22680:2;22684:1;22658:15;:28::i;:::-;22701:7;;22626:93;22735:17;;;;;;;;;;;22731:1672;;;22781:7;:5;:7::i;:::-;22773:15;;:4;:15;;;;:49;;;;;22815:7;:5;:7::i;:::-;22809:13;;:2;:13;;;;22773:49;:86;;;;;22857:1;22843:16;;:2;:16;;;;22773:86;:128;;;;;22894:6;22880:21;;:2;:21;;;;22773:128;:158;;;;;22923:8;;;;;;;;;;;22922:9;22773:158;22769:1623;;;22957:13;;;;;;;;;;;22952:150;;23003:19;:25;23023:4;23003:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23032:19;:23;23052:2;23032:23;;;;;;;;;;;;;;;;;;;;;;;;;23003:52;22995:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;22952:150;23258:23;;;;;;;;;;;23254:428;;;23316:7;:5;:7::i;:::-;23310:13;;:2;:13;;;;:47;;;;;23341:15;23327:30;;:2;:30;;;;23310:47;:79;;;;;23375:13;;;;;;;;;;;23361:28;;:2;:28;;;;23310:79;23306:357;;;23468:12;23426:28;:39;23455:9;23426:39;;;;;;;;;;;;;;;;:54;23418:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23627:12;23585:28;:39;23614:9;23585:39;;;;;;;;;;;;;;;:54;;;;23306:357;23254:428;23734:25;:31;23760:4;23734:31;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;23770:16;:20;23787:2;23770:20;;;;;;;;;;;;;;;;;;;;;;;;;23769:21;23734:56;23730:647;;;23833:5;;23823:6;:15;;23815:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23938:10;;23921:13;23931:2;23921:9;:13::i;:::-;23912:6;:22;;;;:::i;:::-;:36;;23904:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23730:647;;;24048:25;:29;24074:2;24048:29;;;;;;;;;;;;;;;;;;;;;;;;;:56;;;;;24082:16;:22;24099:4;24082:22;;;;;;;;;;;;;;;;;;;;;;;;;24081:23;24048:56;24044:333;;;24147:5;;24137:6;:15;;24129:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24044:333;;;24244:16;:20;24261:2;24244:20;;;;;;;;;;;;;;;;;;;;;;;;;24239:138;;24323:10;;24306:13;24316:2;24306:9;:13::i;:::-;24297:6;:22;;;;:::i;:::-;:36;;24289:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24239:138;24044:333;23730:647;22769:1623;22731:1672;24415:28;24446:24;24464:4;24446:9;:24::i;:::-;24415:55;;24481:12;24520:18;;24496:20;:42;;24481:57;;24555:7;:35;;;;;24579:11;;;;;;;;;;;24555:35;:61;;;;;24608:8;;;;;;;;;;;24607:9;24555:61;:110;;;;;24634:25;:31;24660:4;24634:31;;;;;;;;;;;;;;;;;;;;;;;;;24633:32;24555:110;:153;;;;;24683:19;:25;24703:4;24683:25;;;;;;;;;;;;;;;;;;;;;;;;;24682:26;24555:153;:194;;;;;24726:19;:23;24746:2;24726:23;;;;;;;;;;;;;;;;;;;;;;;;;24725:24;24555:194;24551:302;;;24777:4;24766:8;;:15;;;;;;;;;;;;;;;;;;24798:10;:8;:10::i;:::-;24836:5;24825:8;;:16;;;;;;;;;;;;;;;;;;24551:302;24865:12;24881:8;;;;;;;;;;;24880:9;24865:24;;24991:19;:25;25011:4;24991:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25020:19;:23;25040:2;25020:23;;;;;;;;;;;;;;;;;;;;;;;;;24991:52;24987:100;;;25070:5;25060:15;;24987:100;25099:12;25204:7;25200:803;;;25256:25;:29;25282:2;25256:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25305:1;25289:13;;:17;25256:50;25252:602;;;25334:34;25364:3;25334:25;25345:13;;25334:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25327:41;;25425:13;;25411:10;;25404:4;:17;;;;:::i;:::-;25403:35;;;;:::i;:::-;25387:12;;:51;;;;;;;:::i;:::-;;;;;;;;25505:13;;25485:16;;25478:4;:23;;;;:::i;:::-;25477:41;;;;:::i;:::-;25457:16;;:61;;;;;;;:::i;:::-;;;;;;;;25252:602;;;25580:25;:31;25606:4;25580:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;25630:1;25615:12;;:16;25580:51;25576:278;;;25659:33;25688:3;25659:24;25670:12;;25659:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;25652:40;;25748:12;;25735:9;;25728:4;:16;;;;:::i;:::-;25727:33;;;;:::i;:::-;25711:12;;:49;;;;;;;:::i;:::-;;;;;;;;25826:12;;25807:15;;25800:4;:22;;;;:::i;:::-;25799:39;;;;:::i;:::-;25779:16;;:59;;;;;;;:::i;:::-;;;;;;;;25576:278;25252:602;25881:1;25874:4;:8;25870:91;;;25903:42;25919:4;25933;25940;25903:15;:42::i;:::-;25870:91;25987:4;25977:14;;;;;:::i;:::-;;;25200:803;26015:33;26031:4;26037:2;26041:6;26015:15;:33::i;:::-;22343:3713;;;;22230:3826;;;;:::o;1251:191::-;1325:16;1344:6;;;;;;;;;;;1325:25;;1370:8;1361:6;;:17;;;;;;;;;;;;;;;;;;1425:8;1394:40;;1415:8;1394:40;;;;;;;;;;;;1314:128;1251:191;:::o;21850:188::-;21967:5;21933:25;:31;21959:4;21933:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22024:5;21990:40;;22018:4;21990:40;;;;;;;;;;;;21850:188;;:::o;26410:529::-;26476:21;26514:1;26500:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26476:40;;26545:4;26527;26532:1;26527:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26571:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26561:4;26566:1;26561:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26606:62;26623:4;26638:15;26656:11;26606:8;:62::i;:::-;26707:15;:66;;;26788:11;26814:1;26858:4;26885;26905:15;26707:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26465:474;26410:529;:::o;5044:733::-;5202:1;5184:20;;:6;:20;;;5176:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5286:1;5265:23;;:9;:23;;;5257:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5341:47;5362:6;5370:9;5381:6;5341:20;:47::i;:::-;5401:21;5425:9;:17;5435:6;5425:17;;;;;;;;;;;;;;;;5401:41;;5478:6;5461:13;:23;;5453:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5599:6;5583:13;:22;5563:9;:17;5573:6;5563:17;;;;;;;;;;;;;;;:42;;;;5651:6;5627:9;:20;5637:9;5627:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5692:9;5675:35;;5684:6;5675:35;;;5703:6;5675:35;;;;;;:::i;:::-;;;;;;;;5723:46;5743:6;5751:9;5762:6;5723:19;:46::i;:::-;5165:612;5044:733;;;:::o;26947:876::-;26986:23;27012:24;27030:4;27012:9;:24::i;:::-;26986:50;;27047:25;27094:12;;27075:16;;:31;;;;:::i;:::-;27047:59;;27117:12;27165:1;27146:15;:20;27142:59;;27183:7;;;;;27142:59;27256:2;27235:18;;:23;;;;:::i;:::-;27217:15;:41;27213:115;;;27314:2;27293:18;;:23;;;;:::i;:::-;27275:41;;27213:115;27340:25;27368:21;27340:49;;27400:33;27417:15;27400:16;:33::i;:::-;27446:18;27467:44;27493:17;27467:21;:25;;:44;;;;:::i;:::-;27446:65;;27522:17;27542:51;27575:17;27542:28;27557:12;;27542:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;27522:71;;27625:1;27606:16;:20;;;;27652:1;27637:12;:16;;;;27688:10;;;;;;;;;;;27680:24;;27712:9;27680:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27666:60;;;;;27759:14;;;;;;;;;;;27751:28;;27788:21;27751:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27737:78;;;;;26975:848;;;;;;26947:876;:::o;8797:98::-;8855:7;8886:1;8882;:5;;;;:::i;:::-;8875:12;;8797:98;;;;:::o;8903:::-;8961:7;8992:1;8988;:5;;;;:::i;:::-;8981:12;;8903:98;;;;:::o;7179:125::-;;;;:::o;7312:124::-;;;;:::o;8691:98::-;8749:7;8780:1;8776;:5;;;;:::i;:::-;8769:12;;8691:98;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:153::-;3762:9;3795:37;3826:5;3795:37;:::i;:::-;3782:50;;3685:153;;;:::o;3844:185::-;3958:64;4016:5;3958:64;:::i;:::-;3953:3;3946:77;3844:185;;:::o;4035:276::-;4155:4;4193:2;4182:9;4178:18;4170:26;;4206:98;4301:1;4290:9;4286:17;4277:6;4206:98;:::i;:::-;4035:276;;;;:::o;4317:118::-;4404:24;4422:5;4404:24;:::i;:::-;4399:3;4392:37;4317:118;;:::o;4441:222::-;4534:4;4572:2;4561:9;4557:18;4549:26;;4585:71;4653:1;4642:9;4638:17;4629:6;4585:71;:::i;:::-;4441:222;;;;:::o;4669:619::-;4746:6;4754;4762;4811:2;4799:9;4790:7;4786:23;4782:32;4779:119;;;4817:79;;:::i;:::-;4779:119;4937:1;4962:53;5007:7;4998:6;4987:9;4983:22;4962:53;:::i;:::-;4952:63;;4908:117;5064:2;5090:53;5135:7;5126:6;5115:9;5111:22;5090:53;:::i;:::-;5080:63;;5035:118;5192:2;5218:53;5263:7;5254:6;5243:9;5239:22;5218:53;:::i;:::-;5208:63;;5163:118;4669:619;;;;;:::o;5294:118::-;5381:24;5399:5;5381:24;:::i;:::-;5376:3;5369:37;5294:118;;:::o;5418:222::-;5511:4;5549:2;5538:9;5534:18;5526:26;;5562:71;5630:1;5619:9;5615:17;5606:6;5562:71;:::i;:::-;5418:222;;;;:::o;5646:86::-;5681:7;5721:4;5714:5;5710:16;5699:27;;5646:86;;;:::o;5738:112::-;5821:22;5837:5;5821:22;:::i;:::-;5816:3;5809:35;5738:112;;:::o;5856:214::-;5945:4;5983:2;5972:9;5968:18;5960:26;;5996:67;6060:1;6049:9;6045:17;6036:6;5996:67;:::i;:::-;5856:214;;;;:::o;6076:329::-;6135:6;6184:2;6172:9;6163:7;6159:23;6155:32;6152:119;;;6190:79;;:::i;:::-;6152:119;6310:1;6335:53;6380:7;6371:6;6360:9;6356:22;6335:53;:::i;:::-;6325:63;;6281:117;6076:329;;;;:::o;6411:116::-;6481:21;6496:5;6481:21;:::i;:::-;6474:5;6471:32;6461:60;;6517:1;6514;6507:12;6461:60;6411:116;:::o;6533:133::-;6576:5;6614:6;6601:20;6592:29;;6630:30;6654:5;6630:30;:::i;:::-;6533:133;;;;:::o;6672:468::-;6737:6;6745;6794:2;6782:9;6773:7;6769:23;6765:32;6762:119;;;6800:79;;:::i;:::-;6762:119;6920:1;6945:53;6990:7;6981:6;6970:9;6966:22;6945:53;:::i;:::-;6935:63;;6891:117;7047:2;7073:50;7115:7;7106:6;7095:9;7091:22;7073:50;:::i;:::-;7063:60;;7018:115;6672:468;;;;;:::o;7146:323::-;7202:6;7251:2;7239:9;7230:7;7226:23;7222:32;7219:119;;;7257:79;;:::i;:::-;7219:119;7377:1;7402:50;7444:7;7435:6;7424:9;7420:22;7402:50;:::i;:::-;7392:60;;7348:114;7146:323;;;;:::o;7475:329::-;7534:6;7583:2;7571:9;7562:7;7558:23;7554:32;7551:119;;;7589:79;;:::i;:::-;7551:119;7709:1;7734:53;7779:7;7770:6;7759:9;7755:22;7734:53;:::i;:::-;7724:63;;7680:117;7475:329;;;;:::o;7810:765::-;7896:6;7904;7912;7920;7969:3;7957:9;7948:7;7944:23;7940:33;7937:120;;;7976:79;;:::i;:::-;7937:120;8096:1;8121:53;8166:7;8157:6;8146:9;8142:22;8121:53;:::i;:::-;8111:63;;8067:117;8223:2;8249:53;8294:7;8285:6;8274:9;8270:22;8249:53;:::i;:::-;8239:63;;8194:118;8351:2;8377:53;8422:7;8413:6;8402:9;8398:22;8377:53;:::i;:::-;8367:63;;8322:118;8479:2;8505:53;8550:7;8541:6;8530:9;8526:22;8505:53;:::i;:::-;8495:63;;8450:118;7810:765;;;;;;;:::o;8581:474::-;8649:6;8657;8706:2;8694:9;8685:7;8681:23;8677:32;8674:119;;;8712:79;;:::i;:::-;8674:119;8832:1;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8803:117;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;8581:474;;;;;:::o;9061:180::-;9109:77;9106:1;9099:88;9206:4;9203:1;9196:15;9230:4;9227:1;9220:15;9247:320;9291:6;9328:1;9322:4;9318:12;9308:22;;9375:1;9369:4;9365:12;9396:18;9386:81;;9452:4;9444:6;9440:17;9430:27;;9386:81;9514:2;9506:6;9503:14;9483:18;9480:38;9477:84;;9533:18;;:::i;:::-;9477:84;9298:269;9247:320;;;:::o;9573:227::-;9713:34;9709:1;9701:6;9697:14;9690:58;9782:10;9777:2;9769:6;9765:15;9758:35;9573:227;:::o;9806:366::-;9948:3;9969:67;10033:2;10028:3;9969:67;:::i;:::-;9962:74;;10045:93;10134:3;10045:93;:::i;:::-;10163:2;10158:3;10154:12;10147:19;;9806:366;;;:::o;10178:419::-;10344:4;10382:2;10371:9;10367:18;10359:26;;10431:9;10425:4;10421:20;10417:1;10406:9;10402:17;10395:47;10459:131;10585:4;10459:131;:::i;:::-;10451:139;;10178:419;;;:::o;10603:180::-;10651:77;10648:1;10641:88;10748:4;10745:1;10738:15;10772:4;10769:1;10762:15;10789:191;10829:3;10848:20;10866:1;10848:20;:::i;:::-;10843:25;;10882:20;10900:1;10882:20;:::i;:::-;10877:25;;10925:1;10922;10918:9;10911:16;;10946:3;10943:1;10940:10;10937:36;;;10953:18;;:::i;:::-;10937:36;10789:191;;;;:::o;10986:182::-;11126:34;11122:1;11114:6;11110:14;11103:58;10986:182;:::o;11174:366::-;11316:3;11337:67;11401:2;11396:3;11337:67;:::i;:::-;11330:74;;11413:93;11502:3;11413:93;:::i;:::-;11531:2;11526:3;11522:12;11515:19;;11174:366;;;:::o;11546:419::-;11712:4;11750:2;11739:9;11735:18;11727:26;;11799:9;11793:4;11789:20;11785:1;11774:9;11770:17;11763:47;11827:131;11953:4;11827:131;:::i;:::-;11819:139;;11546:419;;;:::o;11971:244::-;12111:34;12107:1;12099:6;12095:14;12088:58;12180:27;12175:2;12167:6;12163:15;12156:52;11971:244;:::o;12221:366::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12221:366;;;:::o;12593:419::-;12759:4;12797:2;12786:9;12782:18;12774:26;;12846:9;12840:4;12836:20;12832:1;12821:9;12817:17;12810:47;12874:131;13000:4;12874:131;:::i;:::-;12866:139;;12593:419;;;:::o;13018:224::-;13158:34;13154:1;13146:6;13142:14;13135:58;13227:7;13222:2;13214:6;13210:15;13203:32;13018:224;:::o;13248:366::-;13390:3;13411:67;13475:2;13470:3;13411:67;:::i;:::-;13404:74;;13487:93;13576:3;13487:93;:::i;:::-;13605:2;13600:3;13596:12;13589:19;;13248:366;;;:::o;13620:419::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13873:9;13867:4;13863:20;13859:1;13848:9;13844:17;13837:47;13901:131;14027:4;13901:131;:::i;:::-;13893:139;;13620:419;;;:::o;14045:162::-;14185:14;14181:1;14173:6;14169:14;14162:38;14045:162;:::o;14213:366::-;14355:3;14376:67;14440:2;14435:3;14376:67;:::i;:::-;14369:74;;14452:93;14541:3;14452:93;:::i;:::-;14570:2;14565:3;14561:12;14554:19;;14213:366;;;:::o;14585:419::-;14751:4;14789:2;14778:9;14774:18;14766:26;;14838:9;14832:4;14828:20;14824:1;14813:9;14809:17;14802:47;14866:131;14992:4;14866:131;:::i;:::-;14858:139;;14585:419;;;:::o;15010:179::-;15150:31;15146:1;15138:6;15134:14;15127:55;15010:179;:::o;15195:366::-;15337:3;15358:67;15422:2;15417:3;15358:67;:::i;:::-;15351:74;;15434:93;15523:3;15434:93;:::i;:::-;15552:2;15547:3;15543:12;15536:19;;15195:366;;;:::o;15567:419::-;15733:4;15771:2;15760:9;15756:18;15748:26;;15820:9;15814:4;15810:20;15806:1;15795:9;15791:17;15784:47;15848:131;15974:4;15848:131;:::i;:::-;15840:139;;15567:419;;;:::o;15992:410::-;16032:7;16055:20;16073:1;16055:20;:::i;:::-;16050:25;;16089:20;16107:1;16089:20;:::i;:::-;16084:25;;16144:1;16141;16137:9;16166:30;16184:11;16166:30;:::i;:::-;16155:41;;16345:1;16336:7;16332:15;16329:1;16326:22;16306:1;16299:9;16279:83;16256:139;;16375:18;;:::i;:::-;16256:139;16040:362;15992:410;;;;:::o;16408:180::-;16456:77;16453:1;16446:88;16553:4;16550:1;16543:15;16577:4;16574:1;16567:15;16594:185;16634:1;16651:20;16669:1;16651:20;:::i;:::-;16646:25;;16685:20;16703:1;16685:20;:::i;:::-;16680:25;;16724:1;16714:35;;16729:18;;:::i;:::-;16714:35;16771:1;16768;16764:9;16759:14;;16594:185;;;;:::o;16785:240::-;16925:34;16921:1;16913:6;16909:14;16902:58;16994:23;16989:2;16981:6;16977:15;16970:48;16785:240;:::o;17031:366::-;17173:3;17194:67;17258:2;17253:3;17194:67;:::i;:::-;17187:74;;17270:93;17359:3;17270:93;:::i;:::-;17388:2;17383:3;17379:12;17372:19;;17031:366;;;:::o;17403:419::-;17569:4;17607:2;17596:9;17592:18;17584:26;;17656:9;17650:4;17646:20;17642:1;17631:9;17627:17;17620:47;17684:131;17810:4;17684:131;:::i;:::-;17676:139;;17403:419;;;:::o;17828:239::-;17968:34;17964:1;17956:6;17952:14;17945:58;18037:22;18032:2;18024:6;18020:15;18013:47;17828:239;:::o;18073:366::-;18215:3;18236:67;18300:2;18295:3;18236:67;:::i;:::-;18229:74;;18312:93;18401:3;18312:93;:::i;:::-;18430:2;18425:3;18421:12;18414:19;;18073:366;;;:::o;18445:419::-;18611:4;18649:2;18638:9;18634:18;18626:26;;18698:9;18692:4;18688:20;18684:1;18673:9;18669:17;18662:47;18726:131;18852:4;18726:131;:::i;:::-;18718:139;;18445:419;;;:::o;18870:224::-;19010:34;19006:1;18998:6;18994:14;18987:58;19079:7;19074:2;19066:6;19062:15;19055:32;18870:224;:::o;19100:366::-;19242:3;19263:67;19327:2;19322:3;19263:67;:::i;:::-;19256:74;;19339:93;19428:3;19339:93;:::i;:::-;19457:2;19452:3;19448:12;19441:19;;19100:366;;;:::o;19472:419::-;19638:4;19676:2;19665:9;19661:18;19653:26;;19725:9;19719:4;19715:20;19711:1;19700:9;19696:17;19689:47;19753:131;19879:4;19753:131;:::i;:::-;19745:139;;19472:419;;;:::o;19897:225::-;20037:34;20033:1;20025:6;20021:14;20014:58;20106:8;20101:2;20093:6;20089:15;20082:33;19897:225;:::o;20128:366::-;20270:3;20291:67;20355:2;20350:3;20291:67;:::i;:::-;20284:74;;20367:93;20456:3;20367:93;:::i;:::-;20485:2;20480:3;20476:12;20469:19;;20128:366;;;:::o;20500:419::-;20666:4;20704:2;20693:9;20689:18;20681:26;;20753:9;20747:4;20743:20;20739:1;20728:9;20724:17;20717:47;20781:131;20907:4;20781:131;:::i;:::-;20773:139;;20500:419;;;:::o;20925:182::-;21065:34;21061:1;21053:6;21049:14;21042:58;20925:182;:::o;21113:366::-;21255:3;21276:67;21340:2;21335:3;21276:67;:::i;:::-;21269:74;;21352:93;21441:3;21352:93;:::i;:::-;21470:2;21465:3;21461:12;21454:19;;21113:366;;;:::o;21485:419::-;21651:4;21689:2;21678:9;21674:18;21666:26;;21738:9;21732:4;21728:20;21724:1;21713:9;21709:17;21702:47;21766:131;21892:4;21766:131;:::i;:::-;21758:139;;21485:419;;;:::o;21910:223::-;22050:34;22046:1;22038:6;22034:14;22027:58;22119:6;22114:2;22106:6;22102:15;22095:31;21910:223;:::o;22139:366::-;22281:3;22302:67;22366:2;22361:3;22302:67;:::i;:::-;22295:74;;22378:93;22467:3;22378:93;:::i;:::-;22496:2;22491:3;22487:12;22480:19;;22139:366;;;:::o;22511:419::-;22677:4;22715:2;22704:9;22700:18;22692:26;;22764:9;22758:4;22754:20;22750:1;22739:9;22735:17;22728:47;22792:131;22918:4;22792:131;:::i;:::-;22784:139;;22511:419;;;:::o;22936:221::-;23076:34;23072:1;23064:6;23060:14;23053:58;23145:4;23140:2;23132:6;23128:15;23121:29;22936:221;:::o;23163:366::-;23305:3;23326:67;23390:2;23385:3;23326:67;:::i;:::-;23319:74;;23402:93;23491:3;23402:93;:::i;:::-;23520:2;23515:3;23511:12;23504:19;;23163:366;;;:::o;23535:419::-;23701:4;23739:2;23728:9;23724:18;23716:26;;23788:9;23782:4;23778:20;23774:1;23763:9;23759:17;23752:47;23816:131;23942:4;23816:131;:::i;:::-;23808:139;;23535:419;;;:::o;23960:224::-;24100:34;24096:1;24088:6;24084:14;24077:58;24169:7;24164:2;24156:6;24152:15;24145:32;23960:224;:::o;24190:366::-;24332:3;24353:67;24417:2;24412:3;24353:67;:::i;:::-;24346:74;;24429:93;24518:3;24429:93;:::i;:::-;24547:2;24542:3;24538:12;24531:19;;24190:366;;;:::o;24562:419::-;24728:4;24766:2;24755:9;24751:18;24743:26;;24815:9;24809:4;24805:20;24801:1;24790:9;24786:17;24779:47;24843:131;24969:4;24843:131;:::i;:::-;24835:139;;24562:419;;;:::o;24987:222::-;25127:34;25123:1;25115:6;25111:14;25104:58;25196:5;25191:2;25183:6;25179:15;25172:30;24987:222;:::o;25215:366::-;25357:3;25378:67;25442:2;25437:3;25378:67;:::i;:::-;25371:74;;25454:93;25543:3;25454:93;:::i;:::-;25572:2;25567:3;25563:12;25556:19;;25215:366;;;:::o;25587:419::-;25753:4;25791:2;25780:9;25776:18;25768:26;;25840:9;25834:4;25830:20;25826:1;25815:9;25811:17;25804:47;25868:131;25994:4;25868:131;:::i;:::-;25860:139;;25587:419;;;:::o;26012:167::-;26152:19;26148:1;26140:6;26136:14;26129:43;26012:167;:::o;26185:366::-;26327:3;26348:67;26412:2;26407:3;26348:67;:::i;:::-;26341:74;;26424:93;26513:3;26424:93;:::i;:::-;26542:2;26537:3;26533:12;26526:19;;26185:366;;;:::o;26557:419::-;26723:4;26761:2;26750:9;26746:18;26738:26;;26810:9;26804:4;26800:20;26796:1;26785:9;26781:17;26774:47;26838:131;26964:4;26838:131;:::i;:::-;26830:139;;26557:419;;;:::o;26982:165::-;27122:17;27118:1;27110:6;27106:14;27099:41;26982:165;:::o;27153:366::-;27295:3;27316:67;27380:2;27375:3;27316:67;:::i;:::-;27309:74;;27392:93;27481:3;27392:93;:::i;:::-;27510:2;27505:3;27501:12;27494:19;;27153:366;;;:::o;27525:419::-;27691:4;27729:2;27718:9;27714:18;27706:26;;27778:9;27772:4;27768:20;27764:1;27753:9;27749:17;27742:47;27806:131;27932:4;27806:131;:::i;:::-;27798:139;;27525:419;;;:::o;27950:172::-;28090:24;28086:1;28078:6;28074:14;28067:48;27950:172;:::o;28128:366::-;28270:3;28291:67;28355:2;28350:3;28291:67;:::i;:::-;28284:74;;28367:93;28456:3;28367:93;:::i;:::-;28485:2;28480:3;28476:12;28469:19;;28128:366;;;:::o;28500:419::-;28666:4;28704:2;28693:9;28689:18;28681:26;;28753:9;28747:4;28743:20;28739:1;28728:9;28724:17;28717:47;28781:131;28907:4;28781:131;:::i;:::-;28773:139;;28500:419;;;:::o;28925:297::-;29065:34;29061:1;29053:6;29049:14;29042:58;29134:34;29129:2;29121:6;29117:15;29110:59;29203:11;29198:2;29190:6;29186:15;29179:36;28925:297;:::o;29228:366::-;29370:3;29391:67;29455:2;29450:3;29391:67;:::i;:::-;29384:74;;29467:93;29556:3;29467:93;:::i;:::-;29585:2;29580:3;29576:12;29569:19;;29228:366;;;:::o;29600:419::-;29766:4;29804:2;29793:9;29789:18;29781:26;;29853:9;29847:4;29843:20;29839:1;29828:9;29824:17;29817:47;29881:131;30007:4;29881:131;:::i;:::-;29873:139;;29600:419;;;:::o;30025:225::-;30165:34;30161:1;30153:6;30149:14;30142:58;30234:8;30229:2;30221:6;30217:15;30210:33;30025:225;:::o;30256:366::-;30398:3;30419:67;30483:2;30478:3;30419:67;:::i;:::-;30412:74;;30495:93;30584:3;30495:93;:::i;:::-;30613:2;30608:3;30604:12;30597:19;;30256:366;;;:::o;30628:419::-;30794:4;30832:2;30821:9;30817:18;30809:26;;30881:9;30875:4;30871:20;30867:1;30856:9;30852:17;30845:47;30909:131;31035:4;30909:131;:::i;:::-;30901:139;;30628:419;;;:::o;31053:169::-;31193:21;31189:1;31181:6;31177:14;31170:45;31053:169;:::o;31228:366::-;31370:3;31391:67;31455:2;31450:3;31391:67;:::i;:::-;31384:74;;31467:93;31556:3;31467:93;:::i;:::-;31585:2;31580:3;31576:12;31569:19;;31228:366;;;:::o;31600:419::-;31766:4;31804:2;31793:9;31789:18;31781:26;;31853:9;31847:4;31843:20;31839:1;31828:9;31824:17;31817:47;31881:131;32007:4;31881:131;:::i;:::-;31873:139;;31600:419;;;:::o;32025:226::-;32165:34;32161:1;32153:6;32149:14;32142:58;32234:9;32229:2;32221:6;32217:15;32210:34;32025:226;:::o;32257:366::-;32399:3;32420:67;32484:2;32479:3;32420:67;:::i;:::-;32413:74;;32496:93;32585:3;32496:93;:::i;:::-;32614:2;32609:3;32605:12;32598:19;;32257:366;;;:::o;32629:419::-;32795:4;32833:2;32822:9;32818:18;32810:26;;32882:9;32876:4;32872:20;32868:1;32857:9;32853:17;32846:47;32910:131;33036:4;32910:131;:::i;:::-;32902:139;;32629:419;;;:::o;33054:194::-;33094:4;33114:20;33132:1;33114:20;:::i;:::-;33109:25;;33148:20;33166:1;33148:20;:::i;:::-;33143:25;;33192:1;33189;33185:9;33177:17;;33216:1;33210:4;33207:11;33204:37;;;33221:18;;:::i;:::-;33204:37;33054:194;;;;:::o;33254:180::-;33302:77;33299:1;33292:88;33399:4;33396:1;33389:15;33423:4;33420:1;33413:15;33440:180;33488:77;33485:1;33478:88;33585:4;33582:1;33575:15;33609:4;33606:1;33599:15;33626:143;33683:5;33714:6;33708:13;33699:22;;33730:33;33757:5;33730:33;:::i;:::-;33626:143;;;;:::o;33775:351::-;33845:6;33894:2;33882:9;33873:7;33869:23;33865:32;33862:119;;;33900:79;;:::i;:::-;33862:119;34020:1;34045:64;34101:7;34092:6;34081:9;34077:22;34045:64;:::i;:::-;34035:74;;33991:128;33775:351;;;;:::o;34132:85::-;34177:7;34206:5;34195:16;;34132:85;;;:::o;34223:158::-;34281:9;34314:61;34332:42;34341:32;34367:5;34341:32;:::i;:::-;34332:42;:::i;:::-;34314:61;:::i;:::-;34301:74;;34223:158;;;:::o;34387:147::-;34482:45;34521:5;34482:45;:::i;:::-;34477:3;34470:58;34387:147;;:::o;34540:114::-;34607:6;34641:5;34635:12;34625:22;;34540:114;;;:::o;34660:184::-;34759:11;34793:6;34788:3;34781:19;34833:4;34828:3;34824:14;34809:29;;34660:184;;;;:::o;34850:132::-;34917:4;34940:3;34932:11;;34970:4;34965:3;34961:14;34953:22;;34850:132;;;:::o;34988:108::-;35065:24;35083:5;35065:24;:::i;:::-;35060:3;35053:37;34988:108;;:::o;35102:179::-;35171:10;35192:46;35234:3;35226:6;35192:46;:::i;:::-;35270:4;35265:3;35261:14;35247:28;;35102:179;;;;:::o;35287:113::-;35357:4;35389;35384:3;35380:14;35372:22;;35287:113;;;:::o;35436:732::-;35555:3;35584:54;35632:5;35584:54;:::i;:::-;35654:86;35733:6;35728:3;35654:86;:::i;:::-;35647:93;;35764:56;35814:5;35764:56;:::i;:::-;35843:7;35874:1;35859:284;35884:6;35881:1;35878:13;35859:284;;;35960:6;35954:13;35987:63;36046:3;36031:13;35987:63;:::i;:::-;35980:70;;36073:60;36126:6;36073:60;:::i;:::-;36063:70;;35919:224;35906:1;35903;35899:9;35894:14;;35859:284;;;35863:14;36159:3;36152:10;;35560:608;;;35436:732;;;;:::o;36174:831::-;36437:4;36475:3;36464:9;36460:19;36452:27;;36489:71;36557:1;36546:9;36542:17;36533:6;36489:71;:::i;:::-;36570:80;36646:2;36635:9;36631:18;36622:6;36570:80;:::i;:::-;36697:9;36691:4;36687:20;36682:2;36671:9;36667:18;36660:48;36725:108;36828:4;36819:6;36725:108;:::i;:::-;36717:116;;36843:72;36911:2;36900:9;36896:18;36887:6;36843:72;:::i;:::-;36925:73;36993:3;36982:9;36978:19;36969:6;36925:73;:::i;:::-;36174:831;;;;;;;;:::o;37011:225::-;37151:34;37147:1;37139:6;37135:14;37128:58;37220:8;37215:2;37207:6;37203:15;37196:33;37011:225;:::o;37242:366::-;37384:3;37405:67;37469:2;37464:3;37405:67;:::i;:::-;37398:74;;37481:93;37570:3;37481:93;:::i;:::-;37599:2;37594:3;37590:12;37583:19;;37242:366;;;:::o;37614:419::-;37780:4;37818:2;37807:9;37803:18;37795:26;;37867:9;37861:4;37857:20;37853:1;37842:9;37838:17;37831:47;37895:131;38021:4;37895:131;:::i;:::-;37887:139;;37614:419;;;:::o;38039:147::-;38140:11;38177:3;38162:18;;38039:147;;;;:::o;38192:114::-;;:::o;38312:398::-;38471:3;38492:83;38573:1;38568:3;38492:83;:::i;:::-;38485:90;;38584:93;38673:3;38584:93;:::i;:::-;38702:1;38697:3;38693:11;38686:18;;38312:398;;;:::o;38716:379::-;38900:3;38922:147;39065:3;38922:147;:::i;:::-;38915:154;;39086:3;39079:10;;38716:379;;;:::o
Swarm Source
ipfs://fdbde4425c6046e2baab8f179dbcb89789be99c9f429821bb41d4da3b70c03ae
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.